最近下了一个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位置的页面视图,加
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组件,组件可以是图片或是
OnPageChangeListener里设定matrix,用于控制指示滑块ImageView的位置。
该监听器需要实现三个方法:
onPageScrollStateChanged:用于监听滑动状态的改变
onPageScrolled:用于监听滑动的动作
onPageSeleted:用于监听页面的切换,即某个页面被选中了作为当前页面。
一般实现onPageSelected方法就可以,其他两个方法可以空着。
另外为了使页面切换时滑块也是平滑地滑动,可以给滑块的ImageView指定一个
TranslateAnimation动画,指定动画用setAnimation,TranlateAnimation也很简单,
有个构造函数是TranslateAnimation(int beginX,int endX,int beginY,int endY),
将运动矢量的起始位置和终止位置传给它就好了。
3、在ViewPager中使用Fragment
使用v4包里的Fragment的Activity必须继承自FragmentActivity。
其实使用Fragment与前面不使用Fragment非常类似
第一步 在主布局文件里放一个ViewPager组件
第二步 为每个页面建立布局文件,把界面写好
第三步 为每个页面新建Fragment类,并加载布局文件中的界面
第四部 为ViewPager设定Adapter,只不过这里的Adapter不是PagerAdapter,而是换成
FragmentPagerAdapter,实现两个方法:
getCount():返回页面数目
getItem(position):返回position位置的Fragment。
ViewPager的基本用法就是这些了,后面如果有其他的使用上的技巧需要总结,再来补充
现像这种新闻咨询类的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是否对应指定的Viewvoid 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的基本用法就是这些了,后面如果有其他的使用上的技巧需要总结,再来补充