VIewFlipper,另一个可以实现界面滑动的组件,其本身的功能是在它的若干个子View之间不断的切换。
它继承自viewanimation类
额外提供了如下几个函数:
isFlipping: 用来判断View切换是否正在进行
setFilpInterval:设置View之间切换的时间间隔
startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行
stopFlipping: 停止View切换
在XML文件里最重要的就是设置它的切换间隔时间 android:flipInterval,当然也可以在java代码里手动控制切换的时机。
同时XML里也可以给子View设置进入和离开的动画android:inAnimation和android:outAnimation。
在java代码中本身viewflipper类也提供设置子View进入和离开的动画的方法setInAnimation和setOutAnimation。
以下是一个实例。
xml文件。
<ViewFlipper
android:id="@+id/flipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:flipInterval="4000"
android:inAnimation="@anim/in_rtl"
android:outAnimation="@anim/out_rtl">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_1"
android:scaleType="fitXY"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_2"
android:scaleType="fitXY"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_3"
android:scaleType="fitXY"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_4"
android:scaleType="fitXY"/>
</ViewFlipper>
java文件。
private ViewFlipper vf = null;
vf = (ViewFlipper)findViewById(R.id.flipper);
vf.startFlipping();
上面是自动轮播。也可监听手势来操控子View的切换。
<pre name="code" class="java">public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
break;
case MotionEvent.ACTION_UP:
if (event.getX() > startX) { // 向右滑动
viewFlipper.setInAnimation(this, R.anim.in_leftright);
viewFlipper.setOutAnimation(this, R.anim.out_leftright);
viewFlipper.showNext();
} else if (event.getX() < startX) { // 向左滑动
viewFlipper.setInAnimation(this, R.anim.in_rightleft);
viewFlipper.setOutAnimation(this, R.anim.out_rightleft);
viewFlipper.showPrevious();
}
break;
}
return super.onTouchEvent(event);
}
其中一个动画XML文件。另一个类似。
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="2000"
android:fromXDelta="100%"
android:toXDelta="0" />
</set>
参考资料:http://blog.csdn.net/walker02/article/details/8561292