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.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
//設定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);
}