作用:
左右切换当前的view,实现滑动切换的效果
注意:
1.ViewPager类直接几层了ViewGroup类,和LinearLayout等布局一样,都是一个容器,需要在里面添加我们想要显示的内容。
2.ViewPager类需要PagerAdapter适配器类提供数据,与ListView、RecyclerView类似
使用:
建立ViewPage的步骤:
1.在XML布局中加入android.support.v4.view.ViewPager
2.在activity中加载要显示的页卡
当需要加载的页卡是View时:
当需要加载的页卡是Fragment时:
3.用相应的适配器Adapter关联上面的页卡(View/Fragment)和ViewPager
PagerAdapter 数据源:List<View>
FragmentPagerAdapter数据源:List<Fragment>
FragmentStatePagerAdapter数据源:ListView<Fragment>
当页卡是View时:用ViewPagerAdapter
当页卡是Fragment时:用FragmentAdapter
4.在activity里绑定adapter
ViewPagerAdapter:
5.设置切换、滑动动画
利用Viewpage自带的方法setPageTransformer()可用于设置切换动画
步骤:
1.先定义动画效果类
DepthPageTransformer.java
2.动画方法调用:
FragmentStatePagerAdapter 和 FragmentPagerAdapter 的异同:
• 同
PageAdapter 是 FragmentPagerAdapter 以及FragmentStatePagerAdapter 的基类,可将上面的FragmentPagerAdapter 替换成FragmentStatePagerAdapter
• 异
FragmentPagerAdapter使用时,每一个生成的 Fragment 都将保存在内存之中,而 FragmentStatePagerAdapter 只保留了当前显示的Fragment,其他划过的Fragment离开视线后,就会被销毁;而在页面需要显示时,再生成新的实例。
即当拥有大量的页面时,使用FragmentStatePagerAdapter不必在内存中占用大量的内存
在现在很多的应用程序中都会用到ViewPager嵌套ViewPager的情况,比如掌上英雄联盟。
如图,下面的四个按钮是控制一个ViewPager,在使用到ViewPager嵌套ViewPager的时候,外层的ViewPager必须设置不能滑动,以免造成两个ViewPager产生冲突,在这里的第一个Fragment中也用到了一个ViewPager,并结合TabLayout实现一个ViewPager的使用。我们来详细介绍这一个Fragment中的ViewPager。
tabIndicatorHeight是设置TabLayout下的标志线的大小,在设置为0dp,是为了隐藏标志线。tabMode是设置tablayout是固定或是滑动的,fixed为固定,scrollable为可以滑动。app:tabGravity="fill"设置布满。tabSelectedTextColor设置tab选中文字的颜色,tabTextColor设置tab为选中的颜色。
为ViewPager设置适配器,ViewPager设置的是FragmentPagerAdapter,并重写getItem(),getCount(),getPageTitle()这三个方法。mTablayout.setupWithViewPager(mViewPager)将tablayout与viewpager关联在一起。
为tablayout设置OnTabSelectedListener和为viewpager设置OnPageChangeListener。
在这里要特别说明的是mViewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) 中需要用到的是getChildFragmentManager(),而不是getSupportFragmentManager。
设置为getSupportFragmentManager()的时候,在外面的viewpager滑动后里面的viewpager就显示不了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)