android开发之ViewPager
来源:互联网 发布:access数据库怎么打开 编辑:程序博客网 时间:2024/06/04 20:06
一、ViewPager是什么?
ViewPager的使用,除了用于View切换之外,还可用于Fragment切换。
单独使用Fragment经常会遇到一些问题,比如Fragment切换时,显示和隐藏的Fragment有时候会出现重叠,导致相互之间的UI和事件混乱。结合ViewPager的使用,则可以避免掉大部分的问题。
ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view
1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。
2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。
3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
二、ViewPager的适配器
PagerAdapter和ListView等控件使用一样,需要ViewPager设置PagerAdapter来完成页面和数据的绑定,这个PagerAdapter是一个基类适配器,我们经常用它来实现app引导图。
它的子类有FragmentPagerAdapter和FragmentStatePagerAdapter,这两个子类适配器用于和Fragment一起使用。
1.实现一个最基本的PagerAdapter:
public class AdapterViewpager extends PagerAdapter { private List<View> mViewList; public AdapterViewpager(List<View> mViewList) { this.mViewList = mViewList; } @Override public int getCount() {//必须实现 return mViewList.size(); } @Override public boolean isViewFromObject(View view, Object object) {//必须实现 return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) {//必须实现,实例化 container.addView(mViewList.get(position)); return mViewList.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) {//必须实现,销毁 container.removeView(mViewList.get(position)); } }
2.实现一个最基本的FragmentPagerAdapter:
public class AdapterFragment extends FragmentPagerAdapter { private List<Fragment> mFragments; public AdapterFragment(FragmentManager fm, List<Fragment> mFragments) { super(fm); this.mFragments = mFragments; } @Override /*** 获取给定位置对应的Fragment。** @param position 给定的位置* @return 对应的Fragment*/public Fragment getItem(int position) {//必须实现 return mFragments.get(position); } @Override public int getCount() {//必须实现 return mFragments.size(); } @Override public CharSequence getPageTitle(int position) {//选择性实现 return mFragments.get(position).getClass().getSimpleName(); } }/** * 获取给定位置的项Id,用于生成Fragment名称 * * @param position 给定的位置 * @return 项Id */public long getItemId(int position) {//选择实现 return position;}
3.FragmentStatePagerAdapter的实现同FragmentPagerAdapter
三个适配器之间的区别:
PagerAdapter是基类适配器是一个通用的ViewPager适配器,
相比PagerAdapter,FragmentPagerAdapter和FragmentStatePagerAdapter更专注于每一页是Fragment的情况,而这两个子类适配器使用情况也是有区别的。
FragmentPagerAdapter适用于页面比较少的情况,FragmentStatePagerAdapter适用于页面比较多的情况。
只是摘录了自己需要的部分,节选自两片大神的文章
ViewPager
FragmentPagerAdapter
- Android开发之ViewPager
- Android开发之ViewPager
- android开发之ViewPager
- .android 开发之ViewPager内嵌套ViewPager
- Android应用开发之ViewPager
- Android开发之Viewpager动画
- Android开发之自定义控件--ViewPager
- Android开发之自定义控件--ViewPager
- android开发笔记之viewpager 基本使用方法
- Android开发之ViewPager显示页面切换
- android开发之两个ViewPager联动
- android开发之定制ViewPager滑动事件
- Android开发之ViewPager使用详解(一)
- Android开发之ViewPager切换动画
- android开发之ViewPager的使用
- Android 开发之 TabLayout + ViewPager 的使用
- android开发 - ViewPager使用
- Android开发学习之基于ViewPager实现Gallery画廊效果
- NOIP2010普及组-导弹拦截
- SQL必知必会(3)——使用数据处理函数
- 关于servlet中导入数据库运行时提示找不到合适的驱动(No suitable driver found for jdbc)
- 如何在Ubuntu下建立虚拟wifi热点供Android,Kindle
- Android常用UI
- android开发之ViewPager
- 把1-9这9个数字按从小到大的顺序排列 ,中间添上“+”和"-","",可以计算的结果等于100的程序
- 函数
- 因为缺少调试目标,vs无法调试
- 老杨聊架构:每个架构师都应该研究下康威定律
- php 微信模拟登陆 获取用户列表 群发消息
- JDBC连接oracle数据库代码
- RabbitMq
- Bmob后端云的集成以及需要注意的坑