zoukankan      html  css  js  c++  java
  • 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);
        
  • 相关阅读:
    C#操作符??和?:
    使用Windows8开发Metro风格应用一
    使用Windows8开发Metro风格应用二
    Win8使用技巧
    详解 xls xlst xml 一
    SqlDataAdapter DataSet DataTable 详解
    DataSet 与 xml
    FileTracker : error FTK1011编译错误
    我的CHROME插件
    Komodo升级错误
  • 原文地址:https://www.cnblogs.com/AronJudge/p/14652493.html
Copyright © 2011-2022 走看看