您的位置:首页 > 移动开发 > Android开发

Android ViewFlipper 使用

2015-09-19 16:35 691 查看
转载请标明出处:

/article/8129710.html

本文出自:【M家杰的博客】

概述

ViewFlipper 与 ViewPager类似,也是实现视图之间切换的控件。与ViewPager的不同在于,他可以按时间自动切换,但是他本身不支持手势滑动。

常用的方法

setInAnimation


设置View进入屏幕时候使用的动画

setOutAnimation


设置View退出屏幕时候使用的动画

showPrevious


显示ViewFlipper里面的上一个View

showNext


显示ViewFlipper里面的下一个View

setFlipInterval


设置View之间切换的时间间隔

startFlipping


使用setFlipInterval方法设置的时间间隔来开始切换所有的View,切换会循环进行

stopFlipping


停止View切换

isFlipping


用来判断View切换是否正在进行

setDisplayedChild


切换到指定子View

添加需要切换的视图

静态添加

静态添加比较直观,但是不太灵活,每次修改都要在XML文件中修改

<ViewFlipper
android:id="@+id/flipper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:flipInterval="2000">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="1"
android:textSize="50sp"
android:gravity="center"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="2"
android:textSize="50sp"
android:gravity="center"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="3"
android:textSize="50sp"
android:gravity="center"/>
</ViewFlipper>


动态添加

动态添加相对静态添加灵活很多,只需要在XML文件中申明ViewFlipper控件就可以了

ViewFlipper flipper = (ViewFlipper) findViewById(R.id.flipper);
flipper.addView(getTextView("1"));
flipper.addView(getTextView("2"));
flipper.addView(getTextView("3"));


切换View的事件监听

在ViewFlipper的方法中没有找到可以监听每次切换结束或者开始之类的监听方法,一开始感觉很奇怪!后来想了想,View的进入和退出都是有相应的动画的,这个动画是可以监听的!

那么监听的方法就是通过获取ViewFlipper的动画,然后对动画添加监听。

flipper.getInAnimation().setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//动画开始
}

@Override
public void onAnimationEnd(Animation animation) {
//动画结束
}

@Override
public void onAnimationRepeat(Animation animation) {

}
});


需要注意的地方

尽量不要在切换动画中加入透明度的变化,因为ViewFlipper实际上继承的布局是FrameLayout,里面的View一般是叠放在一起的透明度的变化有时会看到叠放在后面的图层,造成视觉混乱。

例子

效果图



下载

[CSDN下载]

[GitHub]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: