Android 모방 웨 이 보 첫 페이지 Tab 플러스 창 기능

10770 단어 AndroidTab탄창
본 논문 의 사례 는 안 드 로 이 드 웨 이 보 홈 페이지 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 플러스 효과 모방
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기