AndroidUI ViewPage

AndroidUI ViewPage

翻页效果

  • 辅助类 PagerAdapter 的 方法
    • getCount : 获得viewPager 有多少个view
  • instantiaeltem()
    • 将给定位置的view添加到viewGroup(容器中),创建并显示出来
    • 返回一个代表新增页面的object(key) ,通常直接返回view 本身就可以了,当然你也可以自定义自己的key,但是key和每个view要一一对应的关系
  • isViewFromObject()
    • 判断instantiateItem(ViewGroup,int)函数所返回的key与一个页面视图是否代表的同一个视图(即他俩是否对应,对应的表示同一个view),通常我们直接写return view = object
  • destroyItem
    • 移除一个给定位置的页面。适配器有责任从容器中删除这个视图。这是为了确保在finishUpdata(viewGroup)返回视图时能被移除。另外两个方法则是设计到一个key的东东。

代码实现

  • 添加布局文件

    • ![image-20210321174339073](AndroidUI ViewPage.assets/image-20210321174339073.png)

    • <LinearLayout
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:background="#ff00ffff"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
      
          <TextView
              android:text="Layout1"
              android:textSize="30dp"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"
              />
      
      </LinearLayout>
      
  • 创建 Viewpager组件

    • <androidx.viewpager.widget.ViewPager
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:id="@+id/vp"/>
      
  • 渲染布局文件

    • //布局渲染出来
              LayoutInflater lf = getLayoutInflater().from(this);
              View view1 = lf.inflate(R.layout.layout1, null);
              View view2 = lf.inflate(R.layout.layout2, null);
              View view3 = lf.inflate(R.layout.layout3, null);
      
  • 将布局加进集合里面

    • /view 加入到集合里面
      List<View> viewList = new ArrayList<>();
      viewList.add(view1);
      viewList.add(view2);
      viewList.add(view3);
      
  • 创建PagerAdapter 辅助类

    • public class MyAdaptor extends PagerAdapter
      
    • 实现构造方法

      • private List<View> mListView;
          
           public MyAdaptor(List<View> mListView){
               this.mListView = mListView;
           }
        
    • 实现方法

      • @Override
            public Object instantiateItem(@NonNull ViewGroup container, int position) {
                container.addView(mListView.get(position),0);
                return mListView.get(position);
            }
        
            @Override
            public int getCount() {
                return mListView.size();
            }
        
            @Override
            public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
                return view == object;
            }
        
            @Override
            public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
                container.removeView(mListView.get(position));
            }
        
  • 实现Viewpager

    • ViewPager viewPager = findViewById(R.id.vp);
      MyAdaptor myAdaptor = new MyAdaptor(viewList);
      viewPager.setAdapter(myAdaptor);
      
posted @ 2021-04-13 11:45  AronJudge  阅读(62)  评论(0编辑  收藏  举报