您的位置:首页 > 移动开发 > Android开发

ViewPager和Fragment实现滑动标签页步骤以及方法总结

2016-07-14 00:19 411 查看
要实现左右滑动的标签页其实有很多种办法,比如最外层一个FrameLayout,里面重叠几个View监听滑动事件来控制具体的展示效果以及相应的处理,还有其他很多种方式,但是呢各个方法的运行效率以及编码速度就因人的水平而异了,好在谷歌给咱们懒癌症患者提供了这么一个ViewPager用来帮助你实现滑动标签页的功能。

ViewPager是Android v4包中的一个控件,可以用来实现左右滑动的标签页。大概来了解下这个ViewPager这个类。

1、怎么导入v4包

android studio:

有两种方式 在你的moudle或者project的buildgradle中的导入依赖的地方加上一行 compile ‘com.android.support:support-v4:23.2.1’(注意:23.2.1是你的v4包的版本);在android sdk里面可以找到v4的jar包,

找不到可以单独去网上下载下然后导入到libs里面,右键你可以看到一个Add as Iibrary…。

eclipse:

类似android studio里面的第二中方法。

2、ViewPager一些必须储备的知识

ViewPager直接继承自ViewGroup,就是说直接写了一个左右滑动的父控件出来,相比于用其他的父类控件来间接实现,运行起来的效率或使用的灵活性一定会有不少提高的。

ViewPager的定义有点类似于ListView需要一个pagerAdapter来配合实现展示效果,但是要注意的是这个PagerAdapter和ListView的Adapter是没有任何联系的,ViewPager和PagerAdapter自成一个体系,看图你就明白了。和ListView所使用的Adapter没有任何关系,但是同样需要注意另外一个问题,他为什么要叫Adapter?因为他和android里面的适配器(或者简单的说ListView的Adapter)是很相像的,他也可以注册观察者还有一些类似BaseAdapter的一些方法等。



实现一些比较复杂的操作的时候,最好用谷歌给提供的Fragment来实现View的效果,没有说必须,只是心里感觉舒服点,你也可以直接拿View来用,Fragment有他自己的生命周期,在某些条件下确实有很大的优势。

ViewPager提供了三种Adapter,分别是PagerAdapter、FragmentPagerAdapter和FragmentStatePagerAdapter,后面两个都继承自PagerAdapter.

3、ViewPager的使用

ViewPager和PagerAdapter结合的使用,这个就不多说了,网上有很多相关教程,大家可以综合这看下。

ViewPager和Fragment的结合使用,当使用Fragment和ViewPager联用时,应该用FragmentPagerAdapter或者FragmentStatePagerAdapter,两个Adapter都继承自PagerAdapter,说明ViewPager和Fragment是谷歌通过ViewPager和PagerAdapter来实现的。

怎么用呢?

三步

(1)、拿到ViewPager对象实例

ViewPager viewPager=(ViewPager)findViewById(R.id.lesson_content);“`

(2)、定义一个FragmentPagerAdapter

class YourPagerAdapter extends FragmentPagerAdapter{

public YourPagerAdapter (FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
//实现一下你自己的Fragment,然后作为返回值return出去,下面创建Fragment对象的时候如果你不是很理解的话,可以参考下篇blog:Fragment的正确用法。
YourFragment fragment = LessonOneFragment.newInstance(position,files[position],contents);
//上面有说可以注册监听者,可以参考下我上篇博客: ListView的观察者模式的应用,因为最近写的一项目里面有用到就直接写上来了
//registerDataSetObserver(fragment .getObserver());
return fragment;
}

@Override
public int getCount() {
return files.length;
}
}


(3)、将FragmentPagerAdapter set给ViewPager

//定义一个

FragmentManager fm = getFragmentManager();
ViewPager.setAdapter(new YourPagerAdapter (fm));


还有一个问题,ListView中不管有多少项,都只会加载不多的几个Adapter而已,就是说并不是每次展示ListView的下一个item的时候都需要将对应的View加载到内存中。那ViewPager的Adapter是不是也是这样的呢?

看下FragmentPagerAdapter和FragmentStatePagerAdapter,网上也有很多关于他们两个的区别,简单点说就是FragmentPagerAdapter会缓存几个Fragment从而减少每次滑动的时候的加载,而FragmentStatePagerAdapter每次都会重新执行一次Fragment的创建方法。连个Adapter所需要实现的方法都是一样的。刚才看到一个蛮详细的教程,没仔细看先给大家贴出来

http://blog.csdn.net/harvic880925/article/details/38453725

因为是总结,说的是我在使用ViewPager的时候遇到的一些问题以及解决方法,没有把ViewPager的使用给大家说的很详细。

这样就可以了,一个可以左右滑动的界面就设计好了,当然在这之前你应该对LIstView有一定的了解,说的比较笼统。Fragment的用法注意Google提供的范式(Fragment的正确传参方法) 这篇博客会说下Fragment的正确的使用方法,之所以说是正确的,是因为我之前的使用是存在错误的,是在项目签名的时候才发现的一个bug,所以也特地写出来给大家看看,当然网上也有相关资料,也会一并发出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android viewpager 控件