Android ViewPage使用

Posted 今晚看星星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ViewPage使用相关的知识,希望对你有一定的参考价值。

1 ViewPage介绍

  • 它是android 3.0后引入的一个UI控件(视图滑动切换工具)
  • 通过手势滑动可以完成View的切换,一般是用来做APP的引导页或者实现图片轮播

2 使用多个layout进行展示

在这里插入图片描述

2.2 使用 LayoutInflater 加载布局

//获取启动页面,将布局加载到UI
//LayoutInflater 将布局的.xml文件转换成View对象
LayoutInflater layoutInflater = getLayoutInflater();
view1 = layoutInflater.inflate(R.layout.image_layout_1,null);
view2 = layoutInflater.inflate(R.layout.image_layout_2,null);

3 PagerAdapter 联合多个界面

  • PagerAdapter主要是对ViewPager进行数据适配,以实现ViewPager控件的滑动效果

  • getCount(): 显示多少个页面

  • isViewFromObject(View, Object) :判断返回的view是否是来自Object

  • instantiateItem(ViewGroup, int) :初始化指定位置的页面

  • destroyItem(ViewGroup, int, Object) :销毁指定位置的页面

import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import java.util.ArrayList;
import java.util.List;

public class MyPageAdapter extends PagerAdapter {

    // 定义视图列表
    private List<View> viewList = new ArrayList<View>();

    // 构造方法传入数据
    public MyPageAdapter(List<View> viewList) {
        this.viewList = viewList;
    }

    public MyPageAdapter() {
    }

    //初始化指定位置的页面
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {

        //将页面加入容器
        container.addView(viewList.get(position));
        //返回加载的页面
        return viewList.get(position);
    }

    //销毁指定位置的页面
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView(viewList.get(position));//删除页面
    }

    //显示多少个页面
    @Override
    public int getCount() {
        return viewList.size();
    }

    //判断view 是否是object
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }
}

4 在MainActivity 中创建并应用适配器

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.widget.ViewPager2;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    // 获取UI控件
    private ViewPager myViewPager;
    private View view1, view2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取ViewPager对象
        myViewPager = (ViewPager)findViewById(R.id.myViewPager);

        //获取三个启动页面,将布局和变量联系起来
        //LayoutInflater 将布局的.xml文件转换成View对象
        LayoutInflater layoutInflater = getLayoutInflater();
        view1 = layoutInflater.inflate(R.layout.image_layout_1,null);
        view2 = layoutInflater.inflate(R.layout.image_layout_2,null);

        //创建视图列表
        List<View> viewList = new ArrayList<View>();
        viewList.add(view1);
        viewList.add(view2);

        //创建适配器
        MyPageAdapter myPagerAdapter = new MyPageAdapter(viewList);
        //设置适配器
        myViewPager.setAdapter(myPagerAdapter);


    }
}

以上是关于Android ViewPage使用的主要内容,如果未能解决你的问题,请参考以下文章

text 片段+的ViewPage +片段

java 的ViewPage +片段懒加载

android 中怎么关掉viewpage的滑动效果

Android ViewPage使用

如何在 ViewPager 中从 Activity 移动到 Fragment?未找到片段 ID 的视图

Android中Scrollview嵌套viewpage问题:viewpage设置非固定高点,按照自定义的scrollview 还是不能解决.