• 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并且将它进行绑定。
    这样我们=所有的过程就已经完成了。


    运行效果

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

  • 相关阅读:
    开启Nginx代理HTTPS功能
    Linux查找运行程序主目录
    Linux命令记录
    Eclipse 安装 阿里P3C编码规范插件
    Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy
    JS小技巧
    改变窗口或屏幕大小时调用function
    毛玻璃效果 | fifter
    position: sticky;不一样失效原因
    mysql 修改密码问题 5.6,5.7 (配置方式的skip-grant-tables可能不行,推荐命令行方式)
  • 原文地址:https://www.cnblogs.com/cao-1/p/12105388.html
Copyright © 2020-2023  润新知