一、定义
这是一个相似与ListView的横向滑动的动态View管理控件,它与ListView有很多相似之处,都是对绑定数据源(Adapter)的动态加载,都可以绑定View。
不同:1、首先名字不同,当然这并不重要。
2、方向不同,List是竖向的动态加载,而ViewPage是横向加载。
3、ListView使用的是BasicAdapter或者SimpleAdapter,而ViewPager使用的是PagerAdapter。
这里View可以是布局控件等等一切,因为View是一切控件的父。
等待解决,ViewPager完全可以由Fragment加onTouch来实现,能否替换?性能如何?
二、效果
如右图,就是一个View个管理器,每一个View都是通过inflate来加载的布局。
三、Adapter
1.PagerAdapter 数据源 List<View>
2.FragmentPagerAdapter 数据源 List<Fragment>
3.FragmentStatePagerAdapter 数据源 List<Fragment>
四、代码实现
-----------1、写一个布局文件-------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"<img src="https://img-blog.csdn.net/20160814200432585?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" align="right" alt="" /> android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </LinearLayout>-----------2、写四个布局用于当子布局------------------------
-----------3、写一个PagerAdapter的子类MyAdapter---------------
public class MyAdapter extends PagerAdapter { private List<View>viewlist; public MyAdapter(List<View> viewlist) { this.viewlist = viewlist; } @Override public int getCount() { return viewlist.size(); } //用于判断该View是否来自对象 @Override public boolean isViewFromObject(View view, Object object) { return view==object; } //销毁指定的View @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewlist.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewlist.get(position)); return viewlist.get(position); } } -----------4、主类----------------------- viewPage=(ViewPager)this.findViewById(R.id.vp); viewPage.setAdapter(new MyAdapter(viewlist)); 这里的 instantiateItem()是预加载,一般会事先加载3个,上一个和下一个View,运行的时候会先加载完这三个View,然后才是显示界面。说明:如果有四个界面分别是1 2 3 4
当前页 加载页 销毁页 下一步操作 1 1 2 --- 右滑 2 3 --- 右滑 3 4 1 右滑 4 --- 2 左滑 3 2 --- 左滑 2 1 4 左滑 至此,大概记录完毕。如有问题,敬请提出。