PagerAdapter是android.support.v4包中的类、它的子类有FragmentPagerAdapter, FragmentStatePagerAdapter
这两个adapter都是Fragment的适配器、用于实现Fragment的滑动效果
这两个adapter的使用和区别这次就先不介绍了、等下次有时间再做详细的介绍
PagerAdapter主要是viewpager的适配器、而viewPager则也是在android.support.v4扩展包中新添加的一个强大的控件
可以实现控件的滑动效果、比如咱们在软件中常见的广告栏的滑动效果、用viewPager就可以实现
今天主要介绍如何使用viewPagr并重写PagerAdapter实现常见广告栏的滑动效果
PAGERADAPTER用法简介
首先、如果继承pageradapter、至少必须重写下面的四个方法 1 instantiateItem(ViewGroup, int)
2. destroyItem(ViewGroup, int, Object)
3. getCount()
4. isViewFromObject(View, Object)
id="iframeu2248002_0" src="http://pos.baidu.com/ecjm?rdid=2248002&dc=2&di=u2248002&dri=0&dis=0&dai=2&ps=807x184&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1476756398074&ti=Android%20PagerAdapter%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95_%E5%AE%89%E5%8D%93%E5%AE%9E%E7%8E%B0%E5%B7%A6%E5%8F%B3%E6%BB%91%E5%8A%A8%E6%8C%87%E5%BC%95%E6%95%88%E6%9E%9C_DD%E5%8D%9A%E5%AE%A2&ari=2&dbv=2&drs=1&pcs=1349x579&pss=1349x839&cfv=0&cpl=41&chi=1&cce=true&cec=UTF-8&tlm=1476756398&rw=579<u=http%3A%2F%2Fdwtedx.com%2Fitshare_229.html<r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DvQ3Kzo9O_h0gVtIxBlwqG_FCaX6CqeBrO-6oFAlqMSIjPfsNk4p6Jwm1OMQwsH25%26wd%3D%26eqid%3Dbf0e1cd900026cb700000005580583a1&ecd=1&psr=1366x768&par=1366x728&pis=-1x-1&ccd=24&cja=true&cmi=67&col=zh-CN&cdo=-1&tcn=1476756398&qn=006ccee9c76314cc&tt=1476756398011.343.912.913" width="120" height="45" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; border-width: 0px; border-style: initial; outline: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit;font-size:undefined; line-height: inherit; font-family: inherit; word-wrap: break-word; vertical-align: bottom;">
下面我们以代码的形式、说明这四个方法的含义以及如何使用
// 适配器 //循环设置 private class MyPagerAdapter extends PagerAdapter { public void finishUpdate(View arg0) { } public void notifyDataSetChanged() { super.notifyDataSetChanged(); } // 获取要滑动的控件的数量,在这里我们以滑动的广告栏为例 //那么这里就应该是展示的广告图片的ImageView数量 public int getCount() { return mListViews.size(); } // 当要显示的图片可以进行缓存的时候 //会调用这个方法进行显示图片的初始化 //我们将要显示的ImageView加入到ViewGroup中 //然后作为返回值返回即可 public Object instantiateItem(View v, int i) { ((ViewPager) v).addView(mListViews.get(i)); return mListViews.get(i); } //来判断显示的是否是同一张图片,将两个参数相比较返回即可 public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == (arg1); } public void restoreState(Parcelable arg0, ClassLoader arg1) { } public Parcelable saveState() { return null; } public void startUpdate(View arg0) { } // PagerAdapter只缓存三张要显示的图片 //如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁 public void destroyItem(View view, int position, Object arg2) { ((ViewPager) view).removeView(mListViews.get(position)); } }
实现了这四个方法、就可以实现滑动的效果了
那么夸大滑动之后要怎么捕获这个图片改变的事件呢、用以下方法
ViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { Toast.makeText(mActivity, "选择:" + arg0, Toast.LENGTH_SHORT).show(); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } });