ViewPagerウェルカムインタフェースからブートインタフェースへの実装の1つ

8646 ワード

ViewPagerウェルカムインタフェースからブートインタフェースへの実装
ソフトウェアを開き、アニメーションをポップアップし、アニメーションをブートインタフェースに終了します.
まず、ウェルカムインタフェースアニメーションの実装を実現します.
    RelativeLayout mRelatineLayout=(RelativeLayout) findViewById(R.id.mRelatineLayout);

    //    
    AnimationSet set=new AnimationSet(false);
    /**
     *     
     */
    RotateAnimation mRotateAnimation=new  RotateAnimation(0, 360, 
            Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);
    mRotateAnimation.setFillEnabled(true);
    mRotateAnimation.setFillAfter(true);
    mRotateAnimation.setDuration(1000);

    /**
     *      
     */
    AlphaAnimation mAlphaAnimation=new AlphaAnimation(0, 1.0f);
    mAlphaAnimation.setDuration(1000);

    /**
     *   
     */
    ScaleAnimation mScaleAnimation=new ScaleAnimation(0, 1.0f, 0, 1.0f,
            Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);
    mScaleAnimation.setDuration(1000);

    //    
    set.addAnimation(mRotateAnimation);
    set.addAnimation(mAlphaAnimation);
    set.addAnimation(mScaleAnimation);

    /**
     *     
     */
    mRelatineLayout.startAnimation(set);
    set.setAnimationListener(new AnimationListener() {
        //          
        @Override
        public void onAnimationStart(Animation animation) {

        }
        //         
        @Override
        public void onAnimationRepeat(Animation animation) {

        }
        //         
        @Override
        public void onAnimationEnd(Animation animation) {

    //                      ,               

        }
    });

ブートインタフェースの実装:
ブートインタフェースのレイアウト:


    
        

       

引导界面具体类的实现:

public class GuirdActivity extends Activity implements OnPageChangeListener {
private ViewPager mViewPager;
private Button mButton;
private List mList;
private static int items[]={R.drawable.guide_1,R.drawable.guide_2,R.drawable.guide_3};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //    
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_guird);
    mViewPager=(ViewPager) findViewById(R.id.guird_pager);
    mButton=(Button) findViewById(R.id.btn_start_button);
    initData();
}
/**
 *      
 */
@SuppressWarnings("deprecation")
private void initData() {
    mList = new ArrayList();
    for(int i=0;i

viewpagerにアダプタadapterを設定する-list
mViewPager.setAdapter(new GuirdViewPagerAdapter());

ViewPagerが設定したアダプタ:一般的な4つの方法
/**
 * viewpageer    
 * @author Administrator
 *
 */
class GuirdViewPagerAdapter extends PagerAdapter{

    @Override
    public int getCount() {
        if(mList!=null){return mList.size();}
        return 0;
    }

    @Override
    public boolean isViewFromObject(View view, Object obj) {
        return view==obj;

    }
    /**
     *       
     */
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // viewpager   imageview
        ImageView iv=mList.get(position);
        container.removeView(iv);
    }
    /**
     *        
     */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        ImageView iv=mList.get(position);
        //   viewpager container  viewpager
        container.addView(iv);
        return iv;
    }
}

ViewPagerページの選択リスナーの設定
    mViewPager.setOnPageChangeListener(this);

クラスにインタフェースOnPageChangeListenerを実装させる方法は以下の通りである.
//            
@Override
public void onPageScrollStateChanged(int arg0) {

}


//         
//position       
//positionset    
//arg2         
@Override
public void onPageScrolled(int position, float positionoffset, int arg2) {

}

// viewpager         
//@position       
@Override
public void onPageSelected(int position) {
    //                   
    mButton.setVisibility((position==mList.size()-1?View.VISIBLE:View.GONE));
}

ここまでウェルカムインタフェースとブートインタフェースが完了しましたが、どのようにして2つのインタフェース間の接続を実現しますか?ウェルカムインタフェースのアニメーションを覚えていますか.アニメーションの終了時にこのような方法が呼び出されます.
//         
        @Override
        public void onAnimationEnd(Animation animation) {

    //                      ,               

        }

私たちはこの方法の中でインタフェースのジャンプを実現します.
ページの静的ポイントを起動する方法
// LinearLayout        

    

メイン・アクティビティ:
    LinearLayout  mLinearLayout=(LinearLayout) findViewById(R.id.ll_guird_point);

        //       
        View point=new View(this);
        point.setBackgroundResource(R.drawable.guird_point_normal);
        LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(30, 30);
        //  
        if(i!=0){//          
            params.leftMargin=15;
        }
        mLinearLayout.addView(point, params);

点のレイアウトを描きます.

//  
    //  
    
   //     
    



ダイナミックポイントの実装:
既存のLinearLayoutの周辺にRelaterLayoutを追加し、Viewロードの動的ポイントを追加します.


   
    
    

    


ダイナミックポイントのカラーセレクタ
    
    
        

        

    

初期化データの後にinitData()に次の文を追加します.
    //     ,            
    View  mPointSelect=(View) findViewById(R.id.re_point_selected);

    initData();
    //          
    mPointSelect.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            //   UI           
            if(mList==null){
                return ;
            }
            //    
            mPointSelect.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            mSpace = mLinearLayout.getChildAt(1).getLeft()-mLinearLayout.getChildAt(0).getLeft();
        }
    });

最後に、呼び出しをスライドでリスニングする方法:
//         
//position       
//positionset    
//arg2         
@Override
public void onPageScrolled(int position, float positionoffset, int arg2) {
    //1、       

    RelativeLayout.LayoutParams params= (android.widget.RelativeLayout.LayoutParams) mPointSelect.getLayoutParams();
    //2、  marginLeft
    params.leftMargin=(int) (mSpace*position+mSpace*positionoffset+0.5f);

    mPointSelect.setLayoutParams(params);
}