初识ViewPager

    xiaoxiao2025-05-13  10

    一、定义

    这是一个相似与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 左滑

    至此,大概记录完毕。如有问题,敬请提出。
    转载请注明原文地址: https://ju.6miu.com/read-1298852.html
    最新回复(0)