Android 모방 웨 이 보 첫 페이지 Tab 플러스 창 기능
Activity 부분의 코드
package com.ting.tab;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import com.ting.ContentActivity0;
import com.ting.ContentActivity1;
import com.ting.ContentActivity2;
import com.ting.ContentActivity3;
import com.ting.ContentActivity4;
import com.ting.R;
public class TabActivityGroup extends AbstractActivityGroup implements View.OnClickListener, View.OnTouchListener {
// Activity ,LocalActivityManager Activity 。
private static final String CONTENT_0 = "contentActivity0";
private static final String CONTENT_1 = "contentActivity1";
private static final String CONTENT_2 = "contentActivity2";
private static final String CONTENT_3 = "contentActivity3";
private static final String CONTENT_4 = "contentActivity4";
private View addButton;
private View mPanelView;
private View mCloseButton;
private View mIdeaButton;
private View mPhotoButton;
private View mWeiboButton;
private View mLbsButton;
private View mReviewButton;
private View mMoreButton;
private Animation mButtonInAnimation;
private Animation mButtonOutAnimation;
private Animation mButtonScaleLargeAnimation;
private Animation mButtonScaleSmallAnimation;
private Animation mCloseRotateAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_tab);
super.onCreate(savedInstanceState);
initView();
initAnimation();
((RadioButton) findViewById(R.id.radio_button0)).setChecked(true);
setContainerView(CONTENT_0, ContentActivity0.class);
}
/**
* id Activity View
*/
@Override
protected ViewGroup getContainer() {
return (ViewGroup) findViewById(R.id.container);
}
/**
*
*/
@Override
protected void initTabBarButtons() {
initTabBarButton(R.id.radio_button0);
initTabBarButton(R.id.radio_button1);
// initTabBarButton(R.id.radio_button2);
initTabBarButton(R.id.radio_button3);
initTabBarButton(R.id.radio_button4);
}
/**
* ,
*/
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
switch (buttonView.getId()) {
case R.id.radio_button0:
setContainerView(CONTENT_0, ContentActivity0.class);
break;
case R.id.radio_button1:
setContainerView(CONTENT_1, ContentActivity1.class);
break;
case R.id.radio_button2:
// setContainerView(CONTENT_2, ContentActivity2.class);
break;
case R.id.radio_button3:
setContainerView(CONTENT_3, ContentActivity3.class);
break;
case R.id.radio_button4:
setContainerView(CONTENT_4, ContentActivity4.class);
break;
default:
break;
}
}
}
//
private void initView() {
addButton = findViewById(R.id.radio_button2);
mPanelView = findViewById(R.id.panel);
mCloseButton = findViewById(R.id.close);
mIdeaButton = findViewById(R.id.idea_btn);
mPhotoButton = findViewById(R.id.photo_btn);
mWeiboButton = findViewById(R.id.weibo_btn);
mLbsButton = findViewById(R.id.lbs_btn);
mReviewButton = findViewById(R.id.review_btn);
mMoreButton = findViewById(R.id.more_btn);
addButton.setOnClickListener(this);
mCloseButton.setOnClickListener(this);
mIdeaButton.setOnTouchListener(this);
mPhotoButton.setOnTouchListener(this);
mWeiboButton.setOnTouchListener(this);
mLbsButton.setOnTouchListener(this);
mReviewButton.setOnTouchListener(this);
mMoreButton.setOnTouchListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.radio_button2://
openPanelView();
break;
case R.id.close://
closePanelView();
break;
}
}
@Override
public boolean onTouch(final View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// ,
v.startAnimation(mButtonScaleLargeAnimation);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// ,
v.startAnimation(mButtonScaleSmallAnimation);
v.postDelayed(new Runnable() {
@Override
public void run() {
// , 。 150 。
v.clearAnimation();
}
}, 150);
break;
}
return true;
}
//
private void openPanelView() {
mPanelView.setVisibility(View.VISIBLE);
mIdeaButton.startAnimation(mButtonInAnimation);
mPhotoButton.startAnimation(mButtonInAnimation);
mWeiboButton.startAnimation(mButtonInAnimation);
mLbsButton.startAnimation(mButtonInAnimation);
mReviewButton.startAnimation(mButtonInAnimation);
mMoreButton.startAnimation(mButtonInAnimation);
mCloseButton.startAnimation(mCloseRotateAnimation);
}
//
private void closePanelView() {
// 6
mIdeaButton.startAnimation(mButtonOutAnimation);
mPhotoButton.startAnimation(mButtonOutAnimation);
mWeiboButton.startAnimation(mButtonOutAnimation);
mLbsButton.startAnimation(mButtonOutAnimation);
mReviewButton.startAnimation(mButtonOutAnimation);
mMoreButton.startAnimation(mButtonOutAnimation);
}
//
private void initAnimation() {
mButtonInAnimation = AnimationUtils.loadAnimation(this, R.anim.button_in);
mButtonOutAnimation = AnimationUtils.loadAnimation(this, R.anim.button_out);
mButtonScaleLargeAnimation = AnimationUtils.loadAnimation(this, R.anim.button_scale_to_large);
mButtonScaleSmallAnimation = AnimationUtils.loadAnimation(this, R.anim.button_scale_to_small);
mCloseRotateAnimation = AnimationUtils.loadAnimation(this, R.anim.close_rotate);
mButtonOutAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
// 6 ,
mPanelView.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
}
XML 코드
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<FrameLayout
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<RadioGroup
android:id="@+id/main_tabs"
style="@style/tab_bar" >
<RadioButton
android:id="@+id/radio_button0"
style="@style/tab_bar_item"
android:checked="true"
android:drawableTop="@drawable/icon_home"
android:text=" " />
<RadioButton
android:id="@+id/radio_button1"
style="@style/tab_bar_item"
android:drawableTop="@drawable/icon_meassage"
android:text=" " />
<RelativeLayout
android:id="@+id/radio_button2"
android:layout_height="38dp"
android:layout_width="40dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:gravity="center"
android:background="@drawable/tabbar_compose_bg_add_selector"
>
<ImageView
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:src="@drawable/tabbar_compose_icon_add_selector"/>
</RelativeLayout>
<!--android:drawableTop="@drawable/icon_selfinfo"-->
<!--android:text=" "-->
<RadioButton
android:id="@+id/radio_button3"
style="@style/tab_bar_item"
android:drawableTop="@drawable/icon_square"
android:text=" " />
<RadioButton
android:id="@+id/radio_button4"
style="@style/tab_bar_item"
android:drawableTop="@drawable/icon_more"
android:text=" " />
</RadioGroup>
</LinearLayout>
<include layout="@layout/view_add"/>
</FrameLayout>
자신 은 방금 웨 이 보 홈 페이지 의 플러스 동태 적 인 효과 의 화면 을 만들어 야 하기 때문에 인터넷 에서 관련 자원 을 찾 았 지만 모두 독립 된 플러스 디 스 플레이 효 과 를 찾 았 습 니 다.완전한 tab 중의 효과 가 없 기 때문에 하 나 를 통합 하여 여러분 에 게 공유 합 니 다!원본 다운로드:마이크로 블 로그 홈 페이지 tab 플러스 효과 모방
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.