项目中有需要在进入某个页面时,可以左右滑动效果,实现的方法很多,

实现方法的选择:

1.开源框架SlidingMenu,

2.自定义View,调用这个View的scrollBy(x, y) ,scrollTo(x, y)方法实现滑动

3.ViewPager+Fragment实现左滑右滑效果


综合各方面考虑,用Android自带的ViewPager+Fragment完全可以实现需要的效果,简单易操作!


适配器的选择:

1.PagerAdapter

2.FragmentPagerAdapter

3.FragmentStatePagerAdapter


我们这个项目每个页面都是一个Fragment所以选用FragmentPagerAdapter或FragmentStatePagerAdapter比较适合


FragmentPagerAdapter或FragmentStatePagerAdapter的区别?

使用FragmentPagerAdapter 时,Fragment对象会一直存留在内存中,所以当有大量的显示页时,就不适合用FragmentPagerAdapter 了,FragmentPagerAdapter 适用于只有少数的page情况,像选项卡。这个时候你可以考虑使用FragmentStatePagerAdapter ,当使用FragmentStatePagerAdapter 时,如果Fragment不显示,那么Fragment对象会被销毁,但在回调onDestroy()方法之前会回调onSaveInstanceState(Bundle outState)方法来保存Fragment的状态,下次Fragment显示时通过onCreate(Bundle savedInstanceState)把存储的状态值取出来,FragmentStatePagerAdapter 比较适合页面比较多的情况,像一个页面的ListView

最后一点要注意,当使用FragmentPagerAdapter 时一定要为它的宿主ViewPager设置一个有效的ID !



今天暂时不深入探讨主要写ViewPager+Fragment实现时遇到的一些问题


1.设置ViewPager初始化时哪个Fragment页面

假设当前ViewPager一共有3个Fragment生成的页面,当默认加载的时候只加载了从左至右的两个Fragment。当滑动后才会加载第三个,然后滑动回来,第一个又被重新加载了。后来发现,我们初始化控件的时候一定要加上

[java] view plain copy
  1. m_vp.setCurrentItem(1); //ViewPager初始化第二个Fragment页面 0--》第一个Fragment 1-->第二个Fragment 以此类推


2.设置ViewPager初始化加载的Fragment页面数

但是测试setOffscreenPageLimit(1);//只加载一个页面时不行的,可以选择FragmentStatePagerAdapter适配器来实现只加载一个页面

[java] view plain copy
  1. mViewPager.setOffscreenPageLimit(3);//一共加载3页,如果此处不指定,默认只加载相邻页

设置上面两个属性后,ViewPager加载3个Fragment创建的生命周期顺序

fragment2-->onCreate()
fragment2-->onCreateView()
fragment2-->onStart()
fragment2-->onResume()


fragment1-->onCreate()
fragment1-->onCreateView()


fragment3-->onCreate()
fragment3-->onCreateView()


fragment1-->onStart()
fragment1-->onResume()


fragment3-->onStart()
fragment3-->onResume()

更多相关文章

  1. 安全新手入坑——HTML标签
  2. Nginx系列教程(四)| 一文带你读懂Nginx的动静分离
  3. android音乐播放器开发在线加载歌词
  4. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载
  5. Android(安卓)常用设计模式(二) -- 单例模式(详解)
  6. android的带值跳转
  7. android开发新浪微博客户端 完整攻略
  8. 如何提高Android代码的安全性
  9. Android(安卓)使用View Gone 与 ViewStub的区别

随机推荐

  1. android学习小结3
  2. Android关于SD卡中多层目录的创建
  3. Android Logo消息角标数字提醒
  4. Android 网络连接-重试机制-HttpRequestR
  5. android启动时自动抓取logcat
  6. Android世界的Swift - Kotlin语言
  7. android 锁屏页
  8. android聊天表情开发
  9. android 图表引擎AChartEngine(柱状图)
  10. android 网络判断的几种方法