ViewPager与fragment配合使用的优势

本文介绍了如何使用ViewPager实现视图滑动效果,并详细对比了PagerAdapter、FragmentPagerAdapter与FragmentStatePagerAdapter的不同特性及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。分三个步骤来使用它:

 1.在住布局文件里加入ViewPager控件。

 2.加载要显示的页卡,List<View>或List<Fragment>。

 3.在Activity里实例化ViewPager组件,并设置它的Adapter(就是PagerAdapter,方法与ListView一样的),在这里一般需要重写PagerAdapter。

        ViewPager的适配器是PagerAdapter,它是基类提供适配器来填充页面ViewPager内部,你很可能想要使用一个更具体的实现,如FragmentPagerAdapter或FragmentStatePagerAdapter。

        在这里需要说明一下,其实ViewPager应该和Fragment一起使用,如果只是用viewpager,每次都要重新加载页面,速度比较慢(内容少的时候可能看不出来,比如一张图片), 而fragment在使用使用FragmentPagerAdapter 时,加载过一次后会缓存数据,第二次划过来的时候感觉平顺些,不过这也是建立在消耗内存的基础上的,就是以空间换取时间,像listview的viewholer优化技术一样但当有大量的显示页时,就不适合用FragmentPagerAdapter了,FragmentPagerAdapter 适用于只有少数的page情况,像选项卡。这个时候你可以考虑使用FragmentStatePagerAdapter ,当使用FragmentStatePagerAdapter 时,如果Fragment不显示,那么Fragment对象会被销毁,(滑过后会保存当前界面,以及下一个界面和上一个界面(如果有),最多保存3个,其他会被销毁掉)。但在回调onDestroy()方法之前会回调onSaveInstanceState(Bundle outState)方法来保存Fragment的状态,下次Fragment显示时通过onCreate(Bundle savedInstanceState)把存储的状态值取出来,FragmentStatePagerAdapter 比较适合页面比较多的情况。

       另外fragment在导航条方面还是比单独的viewpager有优势的。fragment与View的区别在于它有自己的生命周期,可以随时更改自己的状态便于管理。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值