栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android学习|视图翻页——ViewPager

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android学习|视图翻页——ViewPager

Android学习|视图翻页——ViewPager

简单效果实现

1、activity_main.xml中添加ViewPager2、做多个xml作为要添加的View3、获取自定义的几个xml的View4、获取ViewPager,并进行Adapter配置

4.1进行Adapter配置

4.1.1 PagerAdapter方法 主MainActivity.类代码如下

简单效果

实现 1、activity_main.xml中添加ViewPager

当ViewPager中没有视图时,为空白的





    

    




2、做多个xml作为要添加的View

其他view自行修改










3、获取自定义的几个xml的View

保存在一个集合里

  LayoutInflater from = getLayoutInflater().from(this);
        View view1 = from.inflate(R.layout.layout_1, null);
        View view2 = from.inflate(R.layout.layout_2, null);
        View view3 = from.inflate(R.layout.layout_3, null);

        List list = new ArrayList<>();
        list.add(view1);
        list.add(view2);
        list.add(view3);

4、获取ViewPager,并进行Adapter配置

获取ViewPager

ViewPager viewPager = findViewById(R.id.vp);
MyAdapter myAdapter = new MyAdapter(list); //MyAdapter为自定义的adapter配置类
viewPager.setAdapter(myAdapter);

MyAdapter为自定义的adapter配置类,具体配置如下(进行Adapter配置)


4.1进行Adapter配置

ViewPager的Adapter类是继承自PagerAdapter.

4.1.1 PagerAdapter方法

1、getCount()
获得viewpager中有多少个view

2、instantiateltem()
1.将给定位置的view添加到viewGroup(容器)中,创建并显示出来
2返回一个代表新增页面的object(key),通常都是直接返回view本身就可以了,当然你也可以自定义自己的key,但是key和每个view要一一对应的关系

3、isViewFromObject()
判断instantiateltem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图即它俩是否是对应的,对应的表示同一个View),通常我们直接写return view == object

4、destroyltem()
移除一个给定位置的页面。适配器有责任从容器中删除这个视图。这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。而另外两个方法则是涉及到一个key的东东:

下面为配置MyAdapter类的代码

package com.example.fourthdemo_2_viewpager;

import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import java.util.List;

public class MyAdapter extends PagerAdapter {

    private List viewList ;

    public MyAdapter(List viewList) {
        this.viewList = viewList;
    }

    //View 添加到 ViewPager容器中
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(viewList.get(position));
        return viewList.get(position);
    }

    //从ViewPager 中 删除一个View
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView(viewList.get(position));
    }

    //判断instantiateItem返回的视图的key与一个视图代表的是否相对应
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }


    //获得Viewpager中view数量
    @Override
    public int getCount() {
        return viewList.size();
    }


}




主MainActivity.类代码如下
package com.example.fourthdemo_2_viewpager;

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

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

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

public class MainActivity extends AppCompatActivity {

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


        LayoutInflater from = getLayoutInflater().from(this);
        View view1 = from.inflate(R.layout.layout_1, null);
        View view2 = from.inflate(R.layout.layout_2, null);
        View view3 = from.inflate(R.layout.layout_3, null);

        List list = new ArrayList<>();
        list.add(view1);
        list.add(view2);
        list.add(view3);


        ViewPager viewPager = findViewById(R.id.vp);
        MyAdapter myAdapter = new MyAdapter(list);
        viewPager.setAdapter(myAdapter);


    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号