【移动开发】Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
2014-08-22 17:36
711 查看
现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么。。。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201407/eb579bb8c775e9a2abbc3620966315ed.gif)
嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到。。。)
1.ViewPager 2.ViewFlipper 3.ViewFlow
一.ViewPager
官方文档介绍:http://developer.android.com/reference/android/support/v4/view/ViewPager.html
![](http://img1.51cto.com/attachment/201310/175956838.png)
根据继承关系我们可以看出,ViewPager不在android sdk 自带jar包中,来源google 的补充组件android-support-v4.jar中,所以我们在3.0以前的版本中使用就需要导入该jar包了。
1.1 介绍:[b]该类是一个布局管理器,它允许用户通过滑动左、右页的数据。你必须要一个实现了PagerAdapter接口从而生成的页面视图。[/b]
[b]1.2 使用:[/b]
[b]activity_main.xml[/b]
MainActivity类:
这里还有三个布局文件:layout1.xml (其余两个类似,略)
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/11/d6dd7f38c61cc953a8bf6986ca3d9dd6.png)
![](http://img1.51cto.com/attachment/201310/183843821.png)
![](http://img1.51cto.com/attachment/201310/183845132.png)
补充说明:
1.这里我们用了Layout作为每个page的填充数据,其实官方文档说ViewPager+Fragment配合使用更好
2.每个页面的响应事件我们可以在OnPageChangeListener监听器类中进行捕获和处理对应事件。
二.ViewFlipper
官方文档:http://developer.android.com/reference/android/widget/ViewFlipper.html
![](http://img1.51cto.com/attachment/201310/190300918.png)
2.1 介绍:ViewFilpper控件是系统自带控件之一,主要用于在同一个屏幕间的切换及设置动画效果、间隔时间,且可以自动播放。
顺便提及一下,View动画关系图:
![](http://img1.51cto.com/attachment/201310/195450865.png)
2.2 使用:
2.2.1 静态加载:
activity_main.xml:
MainActivity类:
动画配置文件(右进右出同理,略):
push_left_in.xml:
push_left_out.xml:
效果:
![](http://img1.51cto.com/attachment/201310/204143396.png)
![](http://img1.51cto.com/attachment/201310/204144556.png)
向左滑屏 向右滑屏
补充:
上述的page只有4个,而真实项目中的page页面个数是不确定的,所以下面这种方式是项目中经常用到的。
2.2.2 动态加载(重要)
参考文章:http://blog.csdn.net/yuzhiboyi/article/details/7702953
activity_main2.xml
flipper_view.xml:
注:这里并不是所有的View都能有onFling回调函数,外部需要加ScrollView !
MyGestureListener类:自定义滑动事件监听器
MyViewFlipper类:自定义View滑动类:监听滑动事件,并做切换视图的处理。
MainActivity2类:
效果图:
![](http://img1.51cto.com/attachment/201310/132603593.png)
--向左滑动(渐变过程不好截图)-->
![](http://img1.51cto.com/attachment/201310/132604221.png)
补充说明:
上述的三个类:
MyGestureListener:继承了SimpleGestureListener手势监听类, 复写了该类onFling()方法,用于监听用户按下滑动事件的处理;还自定义了滑动的回调接口OnFlingListener(包含了两个抽象方法flingToNext(),flingToPrevious)。
MyViewFlipper:是一个自定义ViewFlipper,[b][b]该类首先实现和绑定了[b]上一个类中的[b]滑动的回调接口[b]OnFlingListener,完成了接口中两个重要的方法。同时定义了一个View变化监听回调接口OnViewFlipperListener(包含了两个抽象方法getNextView(),getPreviousView())。[/b][/b][/b][/b][/b]
MainActivity2:加载布局,实现监听,统一处理页面数据View和滑动事件的绑定。
三.ViewFlow类
3.1介绍:
ViewFlow不是google官方的api,它是gethub上的一个开源项目,利用ViewFlow可以产生视图切换的效果。ViewFlow 相当于 Android UI 部件提供水平滚动的 ViewGroup,使用 Adapter 进行条目绑定,例如ViewPager或是ViewFlipper。它提供了三个组件ViewFlow、FlowIndicator和TitleFlowIndicator,一般情况下,当你需要做一个滑动然而不确定view的数目时,可以考虑使用ViewFlow。如果你的view数目确定,使用Fragments 或兼容库里的ViewPager比较好 。
3.2使用:
A.首先下载ViewFlow开源库代码:
[b][b]官方文档:https://github.com/pakerfeldt/android-viewflow[/b][/b]
![](http://img1.51cto.com/attachment/201310/201334458.png)
B.下载之后我们解压打开viewflow文件夹:
![](http://img1.51cto.com/attachment/201310/201922983.png)
C.建项目将这三个类直接复制过来放项目中使用即可。
![](http://img1.51cto.com/attachment/201310/202404410.png)
注:这里可能还需要一个styleable文件,直接将value文件夹下的attrs.xml拷入即可。
activity_main.xml
注:这里需要强调一下,因为使用第三方的库组件,所以要在使用之前引入:
xmlns:app="http://schemas.android.com/apk/res/com.zhf.android_viewflow"
main_item.xml
MainActivity类
这里还有一个图片适配器:ImageAdapter
运行一下吧!效果图:
![](http://img1.51cto.com/attachment/201310/222917441.jpg)
转屏后
![](http://img1.51cto.com/attachment/201310/222954776.jpg)
恩,终于写完了! 希望这篇博客能帮助到大家!好累~~
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/19/2d435586fc5c84c2685e1aa67f4df1ef.gif)
三个例子的源码我已总结好(独立的三个项目,压缩在一个zip里了)
下载地址:http://down.51cto.com/data/976370
本文出自 “狂奔的蜗牛” 博客,请务必保留此出处/article/4262489.html
![](https://oscdn.geek-share.com/Uploads/Images/Content/201407/eb579bb8c775e9a2abbc3620966315ed.gif)
嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到。。。)
1.ViewPager 2.ViewFlipper 3.ViewFlow
一.ViewPager
官方文档介绍:http://developer.android.com/reference/android/support/v4/view/ViewPager.html
![](http://img1.51cto.com/attachment/201310/175956838.png)
根据继承关系我们可以看出,ViewPager不在android sdk 自带jar包中,来源google 的补充组件android-support-v4.jar中,所以我们在3.0以前的版本中使用就需要导入该jar包了。
1.1 介绍:[b]该类是一个布局管理器,它允许用户通过滑动左、右页的数据。你必须要一个实现了PagerAdapter接口从而生成的页面视图。[/b]
[b]1.2 使用:[/b]
[b]activity_main.xml[/b]
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/11/d6dd7f38c61cc953a8bf6986ca3d9dd6.png)
![](http://img1.51cto.com/attachment/201310/183843821.png)
![](http://img1.51cto.com/attachment/201310/183845132.png)
补充说明:
1.这里我们用了Layout作为每个page的填充数据,其实官方文档说ViewPager+Fragment配合使用更好
2.每个页面的响应事件我们可以在OnPageChangeListener监听器类中进行捕获和处理对应事件。
二.ViewFlipper
官方文档:http://developer.android.com/reference/android/widget/ViewFlipper.html
![](http://img1.51cto.com/attachment/201310/190300918.png)
2.1 介绍:ViewFilpper控件是系统自带控件之一,主要用于在同一个屏幕间的切换及设置动画效果、间隔时间,且可以自动播放。
顺便提及一下,View动画关系图:
![](http://img1.51cto.com/attachment/201310/195450865.png)
2.2 使用:
2.2.1 静态加载:
activity_main.xml:
push_left_in.xml:
![](http://img1.51cto.com/attachment/201310/204143396.png)
![](http://img1.51cto.com/attachment/201310/204144556.png)
向左滑屏 向右滑屏
补充:
上述的page只有4个,而真实项目中的page页面个数是不确定的,所以下面这种方式是项目中经常用到的。
2.2.2 动态加载(重要)
参考文章:http://blog.csdn.net/yuzhiboyi/article/details/7702953
activity_main2.xml
MyGestureListener类:自定义滑动事件监听器
![](http://img1.51cto.com/attachment/201310/132603593.png)
--向左滑动(渐变过程不好截图)-->
![](http://img1.51cto.com/attachment/201310/132604221.png)
补充说明:
上述的三个类:
MyGestureListener:继承了SimpleGestureListener手势监听类, 复写了该类onFling()方法,用于监听用户按下滑动事件的处理;还自定义了滑动的回调接口OnFlingListener(包含了两个抽象方法flingToNext(),flingToPrevious)。
MyViewFlipper:是一个自定义ViewFlipper,[b][b]该类首先实现和绑定了[b]上一个类中的[b]滑动的回调接口[b]OnFlingListener,完成了接口中两个重要的方法。同时定义了一个View变化监听回调接口OnViewFlipperListener(包含了两个抽象方法getNextView(),getPreviousView())。[/b][/b][/b][/b][/b]
MainActivity2:加载布局,实现监听,统一处理页面数据View和滑动事件的绑定。
三.ViewFlow类
3.1介绍:
ViewFlow不是google官方的api,它是gethub上的一个开源项目,利用ViewFlow可以产生视图切换的效果。ViewFlow 相当于 Android UI 部件提供水平滚动的 ViewGroup,使用 Adapter 进行条目绑定,例如ViewPager或是ViewFlipper。它提供了三个组件ViewFlow、FlowIndicator和TitleFlowIndicator,一般情况下,当你需要做一个滑动然而不确定view的数目时,可以考虑使用ViewFlow。如果你的view数目确定,使用Fragments 或兼容库里的ViewPager比较好 。
3.2使用:
A.首先下载ViewFlow开源库代码:
[b][b]官方文档:https://github.com/pakerfeldt/android-viewflow[/b][/b]
![](http://img1.51cto.com/attachment/201310/201334458.png)
B.下载之后我们解压打开viewflow文件夹:
![](http://img1.51cto.com/attachment/201310/201922983.png)
C.建项目将这三个类直接复制过来放项目中使用即可。
![](http://img1.51cto.com/attachment/201310/202404410.png)
注:这里可能还需要一个styleable文件,直接将value文件夹下的attrs.xml拷入即可。
activity_main.xml
xmlns:app="http://schemas.android.com/apk/res/com.zhf.android_viewflow"
main_item.xml
![](http://img1.51cto.com/attachment/201310/222917441.jpg)
转屏后
![](http://img1.51cto.com/attachment/201310/222954776.jpg)
恩,终于写完了! 希望这篇博客能帮助到大家!好累~~
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/19/2d435586fc5c84c2685e1aa67f4df1ef.gif)
三个例子的源码我已总结好(独立的三个项目,压缩在一个zip里了)
下载地址:http://down.51cto.com/data/976370
本文出自 “狂奔的蜗牛” 博客,请务必保留此出处/article/4262489.html
相关文章推荐
- 【移动开发】Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
- Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
- Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
- android 三种实现水平向滑动方式(ViewPager、ViewFilpper、ViewFlow)的比较
- Android中三种超实用的滑屏方式汇总(转载)
- android ViewPager,ViewFlipper,ViewFlow三种实现图片轮播方案介绍
- android 三种实现水平向滑动方式(ViewPager、ViewFilpper、ViewFlow)的比较
- android 三种实现水平向滑动方式(ViewPager、ViewFilpper、ViewFlow)的比较
- android 三种实现水平向滑动方式(ViewPager、ViewFilpper、ViewFlow)的比较
- 关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较
- android中三种方式实现水平滑动ViewPager,ViewFilpper,ViewFlow
- 关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较
- android中三种方式实现水平滑动ViewPager,ViewFilpper,ViewFlow
- 【移动开发】Android中Fragment+ViewPager的配合使用 推荐
- android ViewPager,ViewFlipper,ViewFlow实现左右滑动
- 关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较
- android ViewPager,ViewFlipper,ViewFlow实现左右滑动
- 关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较
- 关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较
- 关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较