ViewPage的使用

ViewPage的使用,第1张

ViewPager是Android扩展包v4包中的类

作用:

左右切换当前的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就显示不了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7890671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存