ViewPager較多應用於手勢滑動View 的切換,而ViewFlipper可用於子界面的自動切換,只需設置切換時間和動畫效果即可實現自動循環播放的功能。
一、爲ViewFlipper加入View
(1)靜態導入:在layout佈局文件中直接導入(寫死了,一般情況下不推薦使用)
<ViewFlipper
android:id="...">
<ImageView
android:scaleType="matrix"
.../>
<ImageView
android:scaleType="matrix"
.../>
<ImageView
android:scaleType="matrix"
.../>
</ViewFlipper>
<span style="font-size:18px;">flipper=(ViewFlipper)findViewById(R.id.flipper);
flipper.addView(getImageView(R.drawable.pic1));
flipper.addView(getImageView(R.drawable.pic2));
flipper.addView(getImageView(R.drawable.pic3));</span>
<pre name="code" class="java">private ImageView getImageView(int resId)
{
ImageView image=new ImageView(this);
image.setBackgroundResource(resId);//鋪滿整個屏幕
//image.setImageResource(resId);//會以圖片大小展示
return image;
}
ViewFlipper常用方法
setInAnimation:設置View進入屏幕時候使用的動畫 //動畫的xml文件位於res/anim下
setOutAnimation:設置View退出屏幕時候使用的動畫
showNext:調用該函數來顯示ViewFlipper裏面的下一個View
showPrevious:調用該函數來顯示ViewFlipper裏面的上一個View。
setFlipInterval:設置View之間切換的時間間隔
startFlipping:使用上面設置的時間間隔來開始切換所有的View,切換會循環進行
stopFlipping:停止View切換
二、支持手勢滑動的ViewFlipper
在MainActivity.java中重寫public boolean onTouchEvent(MotionEvent event)函數
public boolean onTouchEvent(MotionEvent event)
{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
startX=event.getX();
break;
}
case MotionEvent.ACTION_MOVE:
{
if(startX-event.getX()>100)//向左滑動大於100像素
{
//flipper.setInAmimation
//flipper.setOutAnimation
//flipper.showNext()
}
//event.getX() ;獲取手指座標
break;
}
case MotionEvent.ACTION_UP:
{
break;
}
}
}