Viewpager的使用

ViewPagerViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。

ViewPager用于实现多页面的切换效果。

该类存在于Google的兼容包里面

java.lang.Object    android.view.View   

android.view.ViewGroup

android.support.v4.view.ViewPager ViewPager

常用方法setAdaptersetOffscreenPageLimit(int limit)设置保留不回收的页面数量

setCurrentItem(int item)滑动到指定的页码

ViewPager适配器PagerAdapter1.getCount()  获取绘制页面数量

2.instantiateItem(ViewGroup, int)  添加页面

3.destroyItem(ViewGroup, int, Object)  删除页面

4.isViewFromObject(View, Object)  判断instantiateItem所返回来的Key对应视图是不是当前显示的视图

public class GuidePagerAdapter extends PagerAdapter {

private String [] mImageList;

private LayoutInflater mInflater;

public GuidePagerAdapter(Context context, String [] imageList) 

{this.mImageList = imageList;mInflater = LayoutInflater.from(context);}

@Override

public int getCount() {return mImageList != null ? mImageList.length : 0;}

@Override

public Object instantiateItem(ViewGroup container, int position) 

{View itemView = mInflater.inflate(R.layout.item_guide, container, false);container.addView(itemView);return itemView;}

@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View)object);}

@Overridepublic boolean isViewFromObject(View view, Object object) 

{return view == object;}}

FragmentPagerAdapter生成的页面都保存在内存中,适合页面数量较少的情况FragmentStatePagerAdapter切换页面之前页面会被销毁,释放资源,适合页面数量较多的情况ViewPager切换监听addOnPageChangeListeneronPageScrolled

当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到onPageSelected页面跳转完后得到调用onPageScrollStateChanged在状态改变的时候调用。

一个页面上显示ViewPager的多个item问题方式一

@Overridepublic float getPageWidth(int position) 

{   if (position != getCount() - 1) {

return 0.9f;

}

return 1.03f;

}

方式二1.在container和pager的中添加android:clipChildren="false"

2.在ViewPager中添加marginLeft和marginRight

3.在代码中设置viewPager.setPageMargin(80)

viewPager.setOffscreenPageLimit(3);

Viewpager在调用notifyDataSetChanged()

刷新问题class RefreshAdapter extends PagerAdapter {

private int mChildCount = 0;

@Overridepublic void notifyDataSetChanged() {

mChildCount = getCount();

super.notifyDataSetChanged();

}

@Overridepublic int getItemPosition(Object object)  {

if ( mChildCount > 0) {

mChildCount --;

return POSITION_NONE;}

return super.getItemPosition(object);}}

你可能感兴趣的:(Viewpager的使用)