ViewPager是在引入Fragment中一起加入的,它的主要作用就是可以配合ActionBar与Fragment一起,容易的编写一些tab界面.
从Demos里可以看到一些例子,对于如何使用它与Fragment.使用supportv4的包可以将Fragment运用在api level 10以下的系统,但是没有ActionBar,如果想要,需要自己实现.至于如何实现ActionBar再说了.
主要谈谈ViewPager与Fragment一起使用.
代码主要参考Support4Demos中的,可以下载来看下.
ViewPager的初始化:
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
一个适配器是必须的,因为在页面切换时需要一个切换内容的数据列表,就像自己实现ViewFlipper或是使用手势操作一样,但它有一个优点,就是当你移动时,可以先看到下一个界面的内容,而自己实现手势操作,是先看到一片黑色背景,移动成功后才加载新的界面xml与数据.
ViewPager里面还定义了一个
private int mOffscreenPageLimit = DEFAULT_OFFSCREEN_PAGES;默认值 是1,这表示你的预告加载的页面数量是1,假设当前有四个Fragment的tab,显示一个,预先加载下一个.这样你在移动前就已经加载了下一个界面,移动时就可以看到已经加载的界面了.
从日志里面可以看到onActivityCreated等方法在初始化第一个Fragment完成后就会初始化下一个Fragment.
假设你想预先加载多个Fragment可以使用它提供的公共方法:
public void setOffscreenPageLimit(int limit) {
if (limit < DEFAULT_OFFSCREEN_PAGES) {
Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +
DEFAULT_OFFSCREEN_PAGES);
limit = DEFAULT_OFFSCREEN_PAGES;
}
if (limit != mOffscreenPageLimit) {
mOffscreenPageLimit = limit;
populate();
}
}
从这个方法来看,不管你设置什么值,至少会预先加载下一个Fragment,你想预先加载几个就可以传入相应的参数.
这种情况如音乐播放时,如果有自动加载歌词就可以使用了.
如果你的界面需要加载一些大量的数据,但你不想预先加载下一个界面(需要网络或耗时的操作),使用ViewPager却很无耐.特别是下一个界面有可能你一段很长时间不会使用到,如我开发的微博,在显示主页后我不想立即加载下一个界面,因为都有ListView,如果我不访问它,就不必加载无用的资源.
可以通过修改这个值,但有,修改后就会有一个麻烦的地方,因为移动时不会预先加载下一个界面的关系,所以会看到一片黑色的背景.
如果不介意黑色背景,可以覆盖这个类,然后定义默认的加载数量为0
private int mOffscreenPageLimit = DEFAULT_OFFSCREEN_PAGES=0;就是不预先加载下一个界面.
如果想预加载,可以使用原来的ViewPager,或这里直接改为mOffscreenPageLimit=你要加载的数量。
由于sdk的更新问题,不是所有v4 support都适合的,v17时就换了
先到这吧.
附件是修改的,包自己建了。v4包是最新版,rev10
分享到:
相关推荐
ViewPager使用中notifyDataSetChanged无法更新问题解决
ViewPager使用详解
本资源完整介绍了viewpager的使用方式,包括viewpager+activity的实现,viewpager+fragment的实现。
ViewPager基础使用的完整示例,讲解参见博客:http://blog.csdn.net/yanzi1225627
viewPager基本使用,coordinatorlayout的一种使用方法
Android ViewPager使用详解,.viewpager可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它呢,与LisstView类似,我们也需要一个适配器,他就是PagerAdapter。
重写了子viewpager的方法,...解决了父viewpager不能滑动或者子viewpager不能滑动问题。修改了事件的分发。可以使子viewpager滑动到最后一页后直接滑入父viewpager的fragment。修改子viewpager可参考local.xml 。
ViewPager中ViewPager的使用,如何处理触摸事件的冲突和Fragment适配器。
这个是Fragment和ViewPager结合使用的显示的示例
ViewPager如果在Scrollview中使用,并且宽高指定为match_parent或者wrap_content则不会显示内容,但是如果将高度指定为200dp,则ViewPager则会将内容显示到屏幕上 ListView同ViewPager类似,必须指定固定高度之后,...
类似PopupWindow的弹框DialogFragment实现TabLayout+ViewPager多个Fragment左右滑动切换
Fragment 结合viewpager使用 和Fragment 多次套用
资源通过用详细的案例说明了viewpager的用法,以及有完整的源码供您参考,千万不要错过哟。
两个ViewPager2嵌套,同一方向无法滑动,可以在子 ViewPager2 外面嵌套一层 NestedScrollableHost.
滑动选择的画廊效果,中间大,两边小并且有阴影
Android中ViewPager+Fragment懒加载问题解决方案Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
使用ViewPager实现欢迎引导页面,几乎源码的每一行都有注释,写的通俗易懂,非常清晰。
在Activity中使用多层ViewPager和Fragment的嵌套使用,还是实现了多种滑动效果
Android ViewPager 小示例