1、简介:ViewPager的功能就是可以使视图滑动。ViewPager用于实现多页面的切换效果。该类存在于Google的兼容包里面,android.support.v4.view.ViewPager。
2、关联源码:可增强可读性,方法的参数会更容易辨别
在libs下new File名为android-support-v4.jar.properties,src=extra/android/support/v4/src(需要将/转为//,转义字符),close project,openproject
3、预加载:可以通过ViewPager的setOffscreenPageLimit()方法设置预加载页面数量,默认为1;预加载就是instantiateItem即实例化下一个可能出现的条目,当前条目(前面若有条目)预加载前面最多一个条目(后面若有条目)预加载后面最多一个条目。比如,页面从1到2,会实例化3;从2到3,会实例化4,并且会destory1,条目被销毁后,再需加载,会重新实例化;若设置setOffscreenPageLimit(2),当前条目前最多预加载两个,当前条目后最多预加载两个
PagerAdapter:给ViewPager设置适配器
大神详解:http://blog.youkuaiyun.com/harvic880925/article/details/38487149
/**
* ViewPager里面元素的总数量
*/
@Override
public int getCount() {
Log.d("test", "=============getCount========");
return list.size();
}
/**
* 功能:该函数用来判断instantiateItem(ViewGroup,
* int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个View)
* 返回值:如果对应的是同一个View,返回True,否则返回False。
*/
@Override
public boolean isViewFromObject(View view, Object object) {
Log.d("test", "======isViewFromObject=====" + "view" + view
+ ", object" + object);
return view == object;
}
/**
* 实例化条目 做了两件事: 1、将参数里给定的position的视图,增加到container中,供其创建并显示
* 2、返回当前position的View做为此视图的Key
* 自己理解:container为一个容器,存放并管理ViewPager中要显示的视图,此方法中的container与destroyItem方法中的container为同一个
* 延伸:(返回一个代表新增视图页面的Object(Key),只要你可以与你增加的View一一对应即可)
* (例如position作为key返回,在isViewFromObject中根据传来的key,找到view,判断与传来的参数View
* arg0是不是同一个视图)
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
Log.d("test", "======instantiateItem=====" + "container" + container
+ ", position" + position);
container.addView(list.get(position));
return list.get(position);
}
/**
* 销毁移除一个给定位置的页面
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
Log.d("test", "======destroyItem=====" + "container" + container
+ ", position" + position+", object"+object);
container.removeView(list.get(position));
}