Android 实现两屏幕互相滑动
下文来自:
http://blog.csdn.net/song_shi_chao/article/details/7081664
---------------------------------------------------------------------------------------------------------
最近在学习两屏幕互相滑动这里,看了一些源码,整理如下。转自安卓巴士一个兄弟的文章。感觉不错。
建议按顺序看,我个人感觉这个顺序比较适合学习。
Android实现简单移动动画
http://www.apkbus.com/forum.php?mod=viewthread&tid=18381&fromuid=3402
Android利用ViewFlipper实现随手势滑动视图间切换
http://www.apkbus.com/forum.php?mod=viewthread&tid=18380&fromuid=3402
为ViewFlipper视图切换增加动画
http://www.iteye.com/topic/1114378
Android中利用ViewGroup 实现视图随手势移动(这种形式目前被ViewPager替换了,原来都使用这种实现方式)
http://www.apkbus.com/forum.php?mod=viewthread&tid=18382&fromuid=3402
Android中利用ViewPager实现视图切换
http://www.apkbus.com/forum.php?mod=viewthread&tid=18384&fromuid=3402
最近在研究这个东西,发现新浪微博的客户端、腾讯微博的客户端都有这个功能。目前到今天为止,腾讯和微博的客户端都是使用viewPager控件写的,可能重写了一些地方。而腾讯老版本的qq是用viewflipper写的,就是手势滑动切屏。但是新版本的客户端,它已经使用viewpager写了。
切屏有几种实现方式:
第一种:使用viewgroup,比如上面的网址就又例子。
第二种:使用viewflipper。就是手势滑动。根据手势的变化,比如向左或者向右,虽然能切屏,但是不能呈现两个界面的内容,就是说,只能显示一个试图。滑动后,将出现另一个试图。
第三种:使用提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类。这种方式也是viewpager没有出现时大家常用得一种方式。不过现在除了用于手机桌面的滑动外,新版的客户端多数都已经不用这种实现方式了。
第四种:就是使用ViewPager了。这是后来google加的一个东西,使用起来很方便,也不是很卡。当然需要做很多优化。数据当然多数情况不是静态的,而是从网络上获取的,所以优化就是必须得了。优化到什么程度就看你的功力了。
【Android】通过手势切换屏幕的几种方法
第一种: ViewFlipper + GestureDetector
第二种: ActivityGroup + GestureDetector
第三种: ViewPager (Android3.0+)
第四种: ViewFlow (开源项目) (示例: http://download.csdn.net/detail/feng88724/3812764)
前两种大家应该都知道,尤其是第一种,应该都用过了。( 第二种方式可参考此文:http://www.iteye.com/topic/1115953 )
本文重点要讲是第三种方式,Viewpager。 可能有人会说,这要Android 3.0以上才可以使用呢,现在市场上的手机根本没有基于这个Level的,基本都在2.0 - 2.3,怎么办呢?
没关系,google 在2011年3月时推出了Compatibility ( http://developer.android.com/guide/practices/compatibility.html ),这东西到底有什么用呢?
说白了,他得主要作用就是让低版本的Android支持Android3.0中的一些特性, Google将Android3.0中部分API抽取出来,打成一个Jar包,android-support-v4.jar,只要你在开发应用时引入这个包,那你就也能使用ViewPager、Fragment、Loader等这些API了。 这些我放一个网上找到的说明文档,其实只要导入v4的这个jar就可以开发,但还是有不清楚的朋友可以看看这个文档(http://download.csdn.net/detail/feng88724/3798731)。
下面开始就讲下如何使用Viewpager实现屏幕内容切换。
发现已经有好几个朋友写过相关文章,我就不重复发明轮子了..
参考下面两篇吧: