zoukankan      html  css  js  c++  java
  • Android ViewPager 的使用

    Android 中使用ViewPager

    学习自:博客园部分博客


    Overview

    Android中ViewPager的效果还是非常好用的,他的效果就是滑动切换view的效果。接下来让我们看一下如何使用我们的ViewPager。

    编写适配器

    首先我们创建一个适配器,并且我们需要继承PagerAdapter.接着我们看一下源码。

       public class ViewPageAdapter extends PagerAdapter {
        List<View> mList = new ArrayList<>();
        public ViewPageAdapter(List<View> mList) {
            this.mList = mList;
        }
        
        /**
         * @ClassName:ViewPageAdapter - 返回List数量
         * @author:CaoJiaHao
         * @Param:
         **/
        @Override
        public int getCount() {
            return mList.size();
        }
        
        /**
         * @ClassName:ViewPageAdapter - 将窗体进行绑定
         * @author:CaoJiaHao
         * @Param:
         **/
        @Override
        public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
            return view == object;
        }
        
        /**
          *@ClassName:ViewPageAdapter - 销毁View的过程
          *@author:CaoJiaHao
          *@Param:
         **/
        @Override
        public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
            container.removeView(mList.get(position));
        }
        
        /**
          *@ClassName:ViewPageAdapter - 这个为显示的View
          *@author:CaoJiaHao
          *@Param:
         **/
        @NonNull
        @Override
        public Object instantiateItem(@NonNull ViewGroup container, int position) {
            container.addView(mList.get(position));
            return mList.get(position);
        }
    }
    

    接着让我们来分析一下,我们的代码。


    Adapter源码分析

    在这里我们的Items 都是通过集合去添加的,我们创建了一个List<View>。并且通过适配器来进行items 的添加。
    那么我们的适配器中都有些什么呢。
    适配器的构造函数,参数为List<View>
    然后还有GetCount();,isViewFormObject,destoryItem,instantiateItem.
    这部分内容大概就是我们基础使用ViewPager所需要使用到的适配器了。
    现在是适配器使用完成了。让我们看一下如何去使用我ViewPager


    ViewPager 的使用过程

    我们先看一下我们的布局代码吧

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="10dp"
        tools:context=".MainActivity">
    
        <androidx.viewpager.widget.ViewPager
            android:id="@+id/ViewPager1"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    布局文件十分的简单。在该布局文件中,我们只创建了一个ViewPager
    接着让我们看一下业务代码吧。

    public class MainActivity extends AppCompatActivity {
        private List<View> viewList = new ArrayList<>();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            View view1= new View(this);
            view1.setBackgroundColor(Color.RED);
            View view2= new View(this);
            view2.setBackgroundColor(Color.GREEN);
            View view3= new View(this);
            view3.setBackgroundColor(Color.BLACK);
            View view4= new View(this);
            view4.setBackgroundColor(Color.YELLOW);
            
            viewList.add(view1);
            viewList.add(view2);
            viewList.add(view3);
            viewList.add(view4);
            
            ViewPager viewPager = findViewById(R.id.ViewPager1);
            viewPager.setAdapter(new ViewPageAdapter(viewList));
        }
    }
    

    这些就是我们的业务逻辑,我们来看一下他的内容:
    先是创建了4个View。并且将他添加到我们的List中,然后初始换我们的ViewPager并且将它进行绑定。
    这样我们=所有的过程就已经完成了。


    运行效果

    现在我们的代码已经全部完成了。那么让我们看一下我的运行效果吧。

  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/cao-1/p/12105388.html
Copyright © 2011-2022 走看看