问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

安卓ViewFlipper的使用详解

发布网友 发布时间:2024-09-17 07:25

我来回答

1个回答

热心网友 时间:2024-09-29 04:01

ViewFlipper的介绍和使用

ViewFlipper是Android自带的一个多页面管理控件,且可以自动播放!和ViewPager不同,ViewPager是一页页的,而ViewFlipper则是一层层的,和ViewPager一样,很多时候,用来实现进入应用后的引导页,或者用于图片轮播。

一、常用的属性和方法

属性:

android:inAnimation//设置View或ImageView进入屏幕时使用的动画android:outAnimation//设置View或ImageView退出屏幕时使用的动画android:flipInterval//设置View或ImageView之间切换的时间间隔

常用方法:

setInAnimation:设置View或ImageView进入屏幕时使用的动画

setOutAnimation:设置View或ImageView退出屏幕时使用的动画

showNext:调用该方法来显示ViewFlipper里的下一个View或ImageView

showPrevious:调用该方法来显示ViewFlipper的上一个View或ImageView

setFilpInterval:设置View或ImageView之间切换的时间间隔

startFlipping:使用上面设置的时间间隔来开始切换所有的View或ImageView,切换会循环进行

stopFlipping:停止View或ImageView切换

二、静态导入

运行效果:

实现这个效果非常的简单

编写viewpfilper.xml布局文件

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ViewFlipperandroid:id="@+id/flipper"android:layout_width="match_parent"android:layout_height="match_parent"android:flipInterval="2000"><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:scaleType="centerCrop"android:src="@drawable/tx1"/><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:scaleType="centerCrop"android:src="@drawable/tx2"/><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:scaleType="centerCrop"android:src="@drawable/tx3"/><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:scaleType="centerCrop"android:src="@drawable/tx4"/></ViewFlipper></LinearLayout>

编写ViewFliper活动代码

publicclassViewpFilperextendsAppCompatActivity{privateViewFlippermFilper;@OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.viewpfilper);mFilper=findViewById(R.id.flipper);mFilper.startFlipping();}}

当我们添加了动画的时候,效果就变成这样了:

我们在res目录下新建一个anim文件夹,再新建right_in.xml、right_out.xml存放动画

right_in.xml

<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="1500"android:fromXDelta="100%p"android:toXDelta="0"/></set>

right_out.xml

<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="1500"android:fromXDelta="0"android:toXDelta="-100%p"/></set>

最后在viewpfilper.xml布局文件中引用就行

二、动态导入(支持手势滑动)

我们可以通过对手势的监听,自由的滑动。不滑动也可以自己动。轮播图就是这样效果。

运行效果:

我们在上一个代码的基础上修改。

在anim文件下再添加left_in.xml、left_out.xml,让我们左右滑动更加的流畅

left_in.xml

<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="500"android:fromXDelta="-100%p"android:toXDelta="0"/></set>

left_in.xml

<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="500"android:fromXDelta="0"android:toXDelta="100%p"/></set>

将right_in.xml、right_out.xml的属性Android:duration="500"设置为500,和左右进出的一样,不然滑动会很慢,还有左右滑动不和谐

GestureDetector手势检测器,监听我们的手势动作

并且重写onTouchEvent触发MyGestureListener里的方法

布局文件不变

编写ViewFliperActivity的java代码

publicclassViewpFilperextendsAppCompatActivity{privateViewFlippermFilper;privateGestureDetectormDetector;//手势探测器privateMyGestureListenermMyGestureListener;@OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.viewpfilper);mFilper=findViewById(R.id.flipper);//实例化SimpleOnGestureListener与GestureDetector对象mMyGestureListener=newMyGestureListener();mDetector=newGestureDetector(this,mMyGestureListener);mFilper.startFlipping();}@OverridepublicbooleanonTouchEvent(MotionEventevent){returnmDetector.onTouchEvent(event);}privateclassMyGestureListenerextendsGestureDetector.SimpleOnGestureListener{privatefinalstaticintMIN_MOVE=200;//最小距离//OnFling中根据X轴方向移动的距离和速度来判断当前用户是向左滑还是向右滑,//从而利用showPrevious()或者showNext()来显示上一张或者下一张图片@OverridepublicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY){if(e1.getX()-e2.getX()>MIN_MOVE){mFilper.setInAnimation(getApplicationContext(),R.anim.right_in);mFilper.setOutAnimation(getApplicationContext(),R.anim.right_out);mFilper.showNext();}elseif(e2.getX()-e1.getX()>MIN_MOVE){mFilper.setInAnimation(getApplicationContext(),R.anim.left_in);mFilper.setOutAnimation(getApplicationContext(),R.anim.left_out);mFilper.showPrevious();}returntrue;}}}

到这里ViewFlipper的基本使用就差不多了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
读一读下面的句子,在比喻句的后面打上 “√”。 1.燕子有一对剪刀似... 判断下面的句子是不是比喻句,是的打√不是的打×1.北极星是盏指路灯... 我来评判:在是比喻句的句子后面打“√”。1.罗丹嘴里叽里咕噜的,好像跟... 判断下列句子是不是比喻句,是的就打“√”。 1.他摸了摸嘴,好像回味似... 我能判断下面的句子是否是比喻句,在正确句子后面的括号里画“√... 判断下面句子是不是比喻句,是的画“√”,不是的画“×”。(1)那跃跃... 英语题(会的都来哈~要全部回答哦~绝对会采纳!!) 英语题 诚心采纳。 英语题(大家帮帮忙,会采纳哦!) 初二英语下,几个空,求解 诚信采纳 《沉香如屑沉香重华》余墨受伤 车辆违停被贴罚单扣分吗 违章停车被贴罚单扣分吗? 什么样的分手理由才合理? 怎样分手是合理的? 为什么头上容易出汗 头上容易出汗 小孩头上汗多什么原因 宝宝头上老出汗怎么回事 头上容易出汗是什么原因 头上脸上出汗怎么回事 西宁与兰州一个档次吗 西宁与兰州哪个城市好 兰州与西宁比哪个好 西宁和兰州哪个好 金针菇的英文真的是seeyoutomorrow吗? 西安市2012年出生率,2012陕西周边旅游 2014年各省出生人口 田家会街道办事处机构职能 三元里省妇幼是不是越秀区? 广东省越秀妇幼晚上可以陪护吗 安卓手机怎么设置锁频照片自动播放照片 阿里“三板斧”的运作原理 头部出汗多是什么病 几许风雨的歌词是什么? 怀孕吃阿莫西林可以吗 怀孕初期可以吃阿莫西林吗 怀孕能吃阿莫西林胶囊吗 周生如故原著小说 :原著小说《一生一世美人骨》简介 怀孕初期吃了阿莫西林可以吗 刚怀孕可以吃阿莫西林胶囊吗 木有二声吗? 三全儿童水饺食用方法 饺子馅能不能放蚝油?牢记“4放3不放”,饺子香嫩多汁,真好吃 奥迪是哪国生产的? 奥迪q72.0t运动跟3.0技术,怎么选???难道了? 奥迪Q7准备入手Q7 45运动,问个最实在的问题烧机油吗? 故意杀人致人重伤判刑 故意杀人罪致人重伤怎么判刑 根据规定砍人未遂怎么判 故意杀人未遂致人重伤二级会比故意杀人罪判的轻吗?