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
分享到:
相关推荐
然而,在实际使用过程中,我们可能会遇到一个常见问题:当数据集发生变化时,调用`PagerAdapter.notifyDataSetChanged()`方法,但ViewPager并没有自动更新显示的内容。这个问题困扰了很多开发者,本文将深入探讨这个...
然而,当应用中使用ViewPager时,开发者常常会希望在界面上添加一些额外的元素,比如显示当前页的标题或者实现一些自定义的交互效果。本文将详细介绍如何在Android中使用ViewPager组件,并分享一些进阶技巧,特别是...
在这个"ViewPager基础使用的完整示例"中,我们将深入探讨ViewPager的基本用法,以及如何通过它来构建用户友好的交互体验。 首先,ViewPager的工作原理是通过懒加载机制,只在当前页面和相邻的前后页面之间加载内容...
【中间大两边小的viewpager】是一种常见的UI设计模式,主要应用于移动应用或者网页中,为用户提供一个可滑动浏览的图像或内容集合。这种设计能够突出中间元素,同时通过大小和阴影效果来引导用户的注意力,提升用户...
然而,在实际开发中,可能会遇到一些问题,如标题提到的“ViewPagerDemo两个viewpager重合问题”。这个问题通常发生在试图在一个布局中并排放置两个或更多ViewPager时,由于布局不当或对Android事件分发机制理解不足...
4. **在DialogFragment中使用它们** - 在`DialogFragment`的`onCreateView()`方法中,找到布局文件中的`TabLayout`和`ViewPager`视图,并进行上述配置。 - 如果需要,你可以在`onActivityCreated()`或`...
然后,将这些View对象添加到一个列表中,以便在Adapter中使用。 ```java LayoutInflater lf = getLayoutInflater().from(this); View view1 = lf.inflate(R.layout.layout1, null); View view2 = lf.inflate(R....
这篇博客"android的ViewPager和Animation的一些使用"详细介绍了如何在应用中有效地结合这两个组件,以提升用户体验。 首先,`ViewPager`是Android SDK中的一个视图容器,它允许用户通过水平滑动来浏览多个页面。`...
5. **搭配使用ViewPager和CoordinatorLayout**:当两者结合使用时,例如在ViewPager的页面中包含一个可以滚动的AppBarLayout,可以实现当用户滚动内容时,顶部栏自动隐藏或显示的效果。这通常通过设置Behavior来实现...
在代码中,还使用到了一些辅助函数,比如“getScreenWidth”用于获取屏幕宽度,“StopVideo”用于停止当前播放的视频。这些函数的具体实现细节并没有在给定的文档片段中体现,但它们对于整个视频轮播功能的实现是必...
在本文中,我们将深入探讨ViewPager的使用方法,以及如何创建一个基本的Demo来理解其工作原理。 首先,ViewPager依赖于`PagerAdapter`接口,这是ViewPager的数据源,负责提供页面内容。`PagerAdapter`有两个常见的...
本资源深入探讨了如何在Android应用中使用ViewPager,结合Activity和Fragment进行实践,帮助开发者更好地理解和运用这一功能。 首先,ViewPager的基本使用涉及到在XML布局文件中添加ViewPager组件,并在对应的...
【ViewPager使用详解】 ViewPager是Android开发中的一个关键组件,它属于`android.support.v4`库,主要用于实现页面的左右滑动效果,常用于创建类似Tab布局或者多页面切换的场景。由于它在Android 3.0(API Level ...
本篇文章将详细介绍如何在Android应用中使用ViewPager,以及与其相关的PagerAdapter。 首先,ViewPager是Android Support Library中的一个控件,它允许用户通过左右滑动来浏览多个视图(View)。这为用户提供了一种...
在实际开发中,你可能还需要关注一些优化技巧,比如使用Fragment的静态加载避免不必要的重建,使用FragmentTransaction的addToBackStack()方法管理Fragment的回退栈,以及利用ViewPager的offscreenPageLimit属性控制...
2. 如果在`PagerAdapter`中使用`Fragment`,需确保`Fragment`的实例化是在`PagerAdapter`的`getItem()`方法中进行,而不是在构造函数中。 3. 考虑到性能,尽量减少预加载页面的数量,以避免内存浪费。 总结,`...
首先,要在项目中使用ViewPager,需要在build.gradle文件中添加对`androidx.viewpager:viewpager`库的依赖。然后在布局XML文件中添加ViewPager控件: ```xml <androidx.viewpager.widget.ViewPager android:id="@+...
本教程将详细解释如何使用`ViewPager`来实现这一功能。 首先,我们需要理解`ViewPager`的基本工作原理。`ViewPager`通过`PagerAdapter`来管理其显示的页面。`PagerAdapter`是`PagerAdapter`接口的一个实现,如`...