Android系统中使用ViewPager实现画廊效果的应用
作者:温晓宇 宋伟奇
来源:《电脑知识与技术》2015年第06期
作者:温晓宇 宋伟奇
来源:《电脑知识与技术》2015年第06期
摘要:在Android应用中用户少不了要使用照片浏览应用软件,但在该类应用的开发中不少开发者还在使用Gallery画廊组件实现。这样既容易造成无法控制每次滑动只滑动一页,也容易导致无法修改第一项与Gallery的左边距,影响用户交互的体验。该文将介绍如何使用ViewPager组件解决上面的问题。
关键词:ViewPager组件;页面布局;画廊
中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2015)06-0207-01
1 概述
在早期Android应用开发中,不少相册浏览应用都使用Gallery画廊组件实现。但是,在使用Gallery的时候大家会发现有几个问题:一是无法控制每次滑动只滑动一页,二是Gallery默认第一个item居中,无法修改它与Gallery的左间距。在最新的Android API中,开发者可以使
用ViewPager组件及android:clipChildren属性解决这个问题,在屏幕上显示多个Fragment。
2 ViewPager组件简介
ViewPager组件用于实现多页面的切换效果。ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view。在使用ViewPager时需要注意几点::
1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。
2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。
3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
在编写ViewPager的应用时,还需要使用两个组件类分别是PagerTitleStrip类和PagerTabStrip类,PagerTitleStrip类直接继承自ViewGroup类,而PagerTabStrip类继承Pag
erTitleStrip类,所以这两个类也是容器类。但是有一点需要注意,在定义XML的layout的时候,这两个类必须是ViewPager标签的子标签。
3 使用ViewPager实现画廊效果
要实现相册软件中的画廊效果,开发应用时应包括两个步骤,一是设计UI界面,二是编写实现功能的Java类。
3.1 定义xml布局页面
在Android项目中,在相关布局页面中需要导入Android扩展包,并添加ViewPager组件,设置其宽、高、id、layout_gravity和clipChildren属性。参考设计代码如图1。
发现上面的RelativeLayout(可以用其他layout替换)和ViewPager的android:clipChildren都设置为了false。android:clipChildren表示是否限制子View在其范围内,在animations动画以及本文的情况下可以发挥很大的作用。默认为true。
3.2 实现Java类
在编写实现画廊效果的Java类时,主要使用了ViewPager类对象及其相关方法,并配合数据适配器PagerAdapter类,通过重写该类的若干方法来实现数据的填充,实现照片的显示。
a.ViewPager设置
需要setOnPageChangeListener,在onPageScrolled(int position, float positionOffset, int positionOffsetPixels)函数中不断刷新layout。部分关键代码如图2。
setOffscreenPageLimit表示设置缓存,这样左右拖动即可看见后面的Fragment。setPageMargin表示设置Fragment之间的间距。
b. FrameLayout设置
需要在setOnTouchListener函数中将滑动事件传递给viewPager,否则只有viewPager中间的view可以滑动,设置后整个viewPager都可以滑动。部分关键代码如图3。
可能运行后出现viewpager的部分Fragment无法看见或是突然消失的问题,请确保RelativeLayout和android layout布局ViewPager的android:clipChildren都设置为了false并且viewPager.setOffscreenPageLimit(TOTAL_COUNT);其中TOTAL_COUNT大于0. 当然子Fragment本身不能是match_parent。viewpager设置了paddingTop也会导致无法实现画廊而只是显示一屏。
4 结束语
本文以Android平台上用户经常使用的照片浏览软件为例,介绍了使用ViewPager组件实现画廊效果的方法,与使用传统的Gallery组件相比,使用ViewPager组件更能提高用户使用该类应用的交互体验。
参考文献:
[1] 李刚.疯狂Android讲义[M].北京:电子工业出版社,2013.
[2] Chris Haseman.Android应用开发[M].北京:人民邮电出版社,2013.
[3] 王云林.Android应用中跨版本集成新特性的研究与实现[D].上海:东华大学计算机系,2013.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论