Android ViewPager的简单使用_第1张图片

package com.example.myapplication;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.viewpager.widget.PagerAdapter;import androidx.viewpager.widget.ViewPager;import android.graphics.Color;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import java.util.ArrayList;import java.util.List;public class Activity_viewPager extends AppCompatActivity {    private ViewPager viewPager;    private List pagerList = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_view_pager);        addView();//添加三个view        viewPager = findViewById(R.id.viewPager);        /****         * 设置viewPager的适配器,由于PagerAdapter是抽象类,所以在此实例化,并重写四个抽象方法         * 关于方法作用的说法,摘自https://segmentfault.com/q/1010000000484617,待考证         * 前提概念:         * ViewPager里面对每个页面的管理是key-value形式的,也就是说每个page都有个对应的id(id是object类型),需要对page操作的时候都是通过id来完成的         *         * 首先看这个函数         * public Object instantiateItem(ViewGroup container, int position);         * 这是pageAdapter里的函数,功能就是往PageView里添加自己需要的page。同时注意它还有个返回值object,这就是那个id。         *         * 最后         * public abstract boolean isViewFromObject (View view, Object object)         * 这个函数就是用来告诉框架,这个view的id是不是这个object。         * 谷歌官方推荐把view当id用,所以常规的instantiateItem()函数的返回值是你自己定义的view,而isViewFromObject()的返回值是view == object。         *         * ps:感觉这个机制应该是历史遗留问题,属于改bug改出来的机制。否则官方不会推荐这种把view当id的做法。         */        viewPager.setAdapter(new PagerAdapter() {            @Override            public int getCount() {                return pagerList.size();//返回view的个数            }            @Override            public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {                return view == object;            }            @NonNull            @Override            public Object instantiateItem(@NonNull ViewGroup container, int position) {                container.addView(pagerList.get(position));//功能就是往PageView里添加自己需要的page。同时注意它还有个返回值object,这就是那个id                return pagerList.get(position);            }            @Override            public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {                container.removeView(pagerList.get(position));            }        });    }//把三个view即三个界面添加到List中    void addView(){        {            View view = LayoutInflater.from(this).inflate(R.layout.viewpager_view, null);            ImageView imageView = view.findViewById(R.id.imageView);            imageView.setBackgroundColor(Color.RED);            pagerList.add(view);        }{            View view = LayoutInflater.from(this).inflate(R.layout.viewpager_view, null);            ImageView imageView = view.findViewById(R.id.imageView);            imageView.setBackgroundColor(Color.GREEN);            pagerList.add(view);        }{            View view = LayoutInflater.from(this).inflate(R.layout.viewpager_view, null);            ImageView imageView = view.findViewById(R.id.imageView);            imageView.setBackgroundColor(Color.YELLOW);            pagerList.add(view);        }{            View view = LayoutInflater.from(this).inflate(R.layout.viewpager_view, null);            ImageView imageView = view.findViewById(R.id.imageView);            imageView.setBackgroundColor(Color.BLUE);            pagerList.add(view);        }    }}

 

更多相关文章

  1. C语言函数以及函数的使用
  2. Android 摇一摇功能的实现
  3. android Html Package机制说明
  4. Android 侧滑删除功能
  5. Android应用程序键盘(Keyboard)消息处理机制分析(28)
  6. android设备添加F1-F12按键功能
  7. Android实现自己的回调函数
  8. WebView控件中的javascript与Android本地功能交互
  9. Android Handler消息处理机制面试5连问

随机推荐

  1. 详解MySQL 8.0.18命令
  2. Linux下彻底删除Mysql 8.0服务的方法
  3. 浅析centos 7 mysql-8.0.19-1.el7.x86_64
  4. mysql8.0.19忘记密码的完美解决方法
  5. CentOS7.5 安装 Mysql8.0.19的教程图文详
  6. MySQL 8.0.19支持输入3次错误密码锁定账
  7. MySQL8.0.19安装教程
  8. workerman写mysql连接池的实例代码
  9. MySQL数据库优化之索引实现原理与用法分
  10. MySQL数据库优化之分表分库操作实例详解