1. 程式人生 > >ViewFlipper實現螢幕自動播放及手勢滑動切換

ViewFlipper實現螢幕自動播放及手勢滑動切換

【例1】實現自動播放

【步驟一】在res目錄下新建資料夾anim,下面有四個檔案,如下:

 

 

right_out.xml內容也類似。

 

【步驟二】在MainActivity.java檔案中進行如下操作

定義全域性變數

 

private ViewFlipper vf;

private int[] resId={R.drawable.png1,R.drawable.png2,R.drawable.png3

,R.drawable.png5,

R.drawable.png6,R.drawable.png7};

 

在OnCreate方法中新增如下程式碼:

vf=(ViewFlipper) findViewById(R.id.viewFlipper1);

for (int i=0;i<resId.length;i++){

vf.addView(getImageView(resId[i]));

 

//ViewFlipper新增動畫效果

vf.setInAnimation(this, R.anim.left_in);

vf.setOutAnimation(this

, R.anim.left_out);

//設定ViewFlipper試圖切換的時間間隔,單位為毫秒

vf.setFlipInterval(3000);

vf.startFlipping();//播放

}

 

新增方法

  private ImageView getImageView(int resId){

             ImageView image=new ImageView(this);

             image.setBackgroundResource(resId);//

填充整個螢幕的圖片

             return image;

}

效果如下:

 

 

【例2】手勢滑動圖片切換

在例1的步驟1基礎上進行如下操作

private ViewFlipper vf;

private int[] resId={R.drawable.png1,R.drawable.png2,R.drawable.png3,R.drawable.png5,

R.drawable.png6,R.drawable.png7};

private float startX;//記錄手指開始在螢幕位置

 

在OnCreate方法中新增如下程式碼:

vf=(ViewFlipper) findViewById(R.id.viewFlipper1);

for (int i=0;i<resId.length;i++){

vf.addView(getImageView(resId[i]));

 

}

 

重寫onTouchEvent方法

 @Override

    public boolean onTouchEvent(MotionEvent event) {

             // TODO Auto-generated method stub

             switch(event.getAction()){

                       case MotionEvent.ACTION_DOWN://手指劃下

                       {

                                startX=event.getX();

                                break;

                       }

                       case MotionEvent.ACTION_MOVE://手指滑動

                       {

                                //向右滑動

                                if(event.getX()-startX>100){

                                         vf.setInAnimation(this, R.anim.left_in);

                                         vf.setOutAnimation(this, R.anim.left_out);

                                         vf.showPrevious();//顯示前一頁

                                }

                               

                                //向左滑動

                                if(event.getX()-startX<-100){

                                         vf.setInAnimation(this, R.anim.right_in);

                                         vf.setOutAnimation(this, R.anim.right_out);

                                         vf.showNext();//顯示後一頁

                                }

                       }

                       case MotionEvent.ACTION_UP://手指離開

                       {

                               

                       }

                               

             }

             return super.onTouchEvent(event);

    }