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

Android界面之ViewPager

2015-07-25 21:43 411 查看
最近下了一个Android的开源项目学习。主要界面就是模仿今日头条的界面。然后我就发

现像这种新闻咨询类的App,界面其实都蛮像的,主要用到的就是一个ViewPager组件。

于是就去网上找了一些ViewPager组件的资料学习了一下。主要参考的是这篇,
http://blog.csdn.net/harvic880925/article/details/38660861
ViewPager是android-support-v4.jar包里的组件。在布局文件里标签需要连包名一起

写全称<android.support.v4.view.ViewPager />

1、基本用法

ViewPager的基本用法我概括为三步

第一步 在主布局文件里放一个ViewPager组件

第二步 为每个页面建立布局文件,把界面写好

第三步 在主Activity里获取ViewPager组件,并为它设定Adapter。

Adapter详细讲讲,ViewPager对应的Adapter继承自PagerAdapter,

也是android.support.v4.view包里的,继承类需要实现四个方法

int getCount():返回页面数目

Object instantiateItem(ViewGroup,int position):创建position位置的页面视图,加

入到ViewGroup中,并返回该视图的Key。Key可以是该视图,也可以是其他唯一与该视

图对应的对象

boolean isViewFromObject(View,Object):判断Object所代表的Key是否对应指定的View

void destroyItem(ViewGroup,int position,Object):从ViewGroup里删除position位

置的View。

我们先用LayoutInflater将前面为每个页面建立的界面加载进来,并放在一个ArrayList

之类的容器里面。然后在PagerAdapter的这四个方法里,我们操作的,就是与这些页面

对应的View。

2、进阶用法

我们经常看到使用了ViewPager的App,在每页上面都会有一个滑块来标志当前处于哪一

页。在PagerView包里有

android.support.v4.view.PagerTitleStrip和

android.support.v4.view.PagerTabStrip两个组件,可以在布局文件中,作为

ViewPager的子标签,并设定相对与ViewPager的位置(比如顶部)。但这两个组件都很丑

并且标题会随着页面一起滑动,所以一般都不用。

其实实现一个滑块标志当前页面也很简单,大概需要两步

第一步 在布局文件ViewPager的上方放置一个ImageView组件,组件可以是图片或是

shape资源。注意需要把ImageView的scaleType属性设为matrix,就是说该组件的位置

和大小由一个变换矩阵来控制

第二步 在Activity中为ViewPager组件添加OnPageChangeListener监听器。在

OnPageChangeListener里设定matrix,用于控制指示滑块ImageView的位置。

该监听器需要实现三个方法:

onPageScrollStateChanged:用于监听滑动状态的改变

onPageScrolled:用于监听滑动的动作

onPageSeleted:用于监听页面的切换,即某个页面被选中了作为当前页面。

一般实现onPageSelected方法就可以,其他两个方法可以空着。

另外为了使页面切换时滑块也是平滑地滑动,可以给滑块的ImageView指定一个

TranslateAnimation动画,指定动画用setAnimation,TranlateAnimation也很简单,

有个构造函数是TranslateAnimation(int beginX,int endX,int beginY,int endY),

将运动矢量的起始位置和终止位置传给它就好了。

3、在ViewPager中使用Fragment

据说Android最推荐的是在ViewPager中使用FragMent,即ViewPager中的页面不像前面

那样用LayoutInflater直接从布局文件加载,而是一个个Fragment。注意这里的Fragment

是android.support.v4.view包里的Fragment,而不是android.app包里的Fragment。

使用v4包里的Fragment的Activity必须继承自FragmentActivity。

其实使用Fragment与前面不使用Fragment非常类似

第一步 在主布局文件里放一个ViewPager组件

第二步 为每个页面建立布局文件,把界面写好

第三步 为每个页面新建Fragment类,并加载布局文件中的界面

第四部 为ViewPager设定Adapter,只不过这里的Adapter不是PagerAdapter,而是换成

FragmentPagerAdapter,实现两个方法:

getCount():返回页面数目

getItem(position):返回position位置的Fragment。

ViewPager的基本用法就是这些了,后面如果有其他的使用上的技巧需要总结,再来补充
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息