ViewFlipper
同样是滚动视图,可以作为APP首页的banner。效果和ViewPager一样,名气却远不如ViewPager。
1、使用ViewFlipper
<ViewFlipper
android:layout_width="match_parent"
android:layout_height="match_parent">
</ViewFlipper>ViewPager是通过设置ViewPagerAdapter添加数据的,如何向ViewFlipper中添加View呢?
2、布局中添加子控件
直接在布局中ViewFlipper节点下添加控件,所有在ViewFlipper节点下的控件都会被当做子控件:
<ViewFlipper
android:layout_width="match_parent"
android:layout_height="match_parent">
//第一个View
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"/>
//第二个View
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"/>
</ViewFlipper>这种方式最简单,但是实际场景中并不灵活,因为很多数据都是变化的。不可能写死。
3、代码中添加子控件
ViewFlipper有一个添加View的方法addView(View child),可以向ViewFlipper中动态添加滚动页面:
//向ViewFlipper中添加View,加入到最后一个位置
mViewFlipper.addView(view);4、滚动动画
默认的ViewFlipper是一张一张的替换,显得死板。好在可以设置滚动替换的动效,变得好看高大上。在res/anim/文件夹下定义不同的动画
进入动画:通过属性android:inAnimation,或者方法setOutAnimation(Animation outAnimation)设置:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="1000" />
</set>出去动画:通过属性android:outAnimation,或者方法setInAnimation(Animation inAnimation)设置:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="1000"
android:fromXDelta="0%p"
android:toXDelta="-100%p" />
</set>代码设置动画,载入定义的动画xml文件:
mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(context, R.anim.anim_in));5、通用属性方法
ViewFlipper还有一些基本属性和方法。
5.1、属性
android:autoStart: 设置自动加载下一个View
android:flipInterval:设置View之间切换的时间间隔
5.2、方法
isFlipping: 判断View切换是否正在进行
setFilpInterval:设置View之间切换的时间间隔
startFlipping: 开始View的切换,而且会循环进行
stopFlipping: 停止View的切换
setOutAnimation:设置切换View的退出动画
setInAnimation: 设置切换View的进入动画
showNext: 显示ViewFlipper里的下一个View
showPrevious: 显示ViewFlipper里的上一个View


