ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android --ViewPager组件的使用(含案例),滑动切换页面, PagerAdapter类

2021-11-22 16:02:23  阅读:187  来源: 互联网

标签:layout mListView -- ViewPager import Android 页面 pager view


 PagerAdapter类

  • getCount()  :获得viewpager中有多少个view
  • instantiateItem()  :(1)将给定位置的view添加到ViewGroup(容器)中,创建并显示出来(2)返回一个代表新增页面的Object(key) ,通常都是直接返回view本身就可以了,当然你也可以自定义自己的key,但是key和每个view要一一对应
  • isViewFromObject()  :判断instantiateItem(ViewGroup,int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(即它们是否是对应的,对应的表示同一个View),通常我们直接写 return view==object
  • destoryItem()  :移除一个给定位置的页面。适配器有责任从容器中删除这个视图。这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。而另外两个方法则是涉及到一个Key的东西

步骤:

1、Layout:主页面中调用 ViewPager,编写各滑动页面

2、Activity:把滑动的页面存到List并传到 适配器

3、适配器Adapter:继承 PagerAdapter 

 

1、Layout:主页面中调用 ViewPager,编写各滑动页面

activity_view_pager.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <androidx.viewpager.widget.ViewPager
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:id="@+id/vp"/>

</LinearLayout>
view_pager_layout_1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffaaffcc">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="layout1"/>

</LinearLayout>
view_pager_layout_2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffaaccff">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="layout2"/>

</LinearLayout>
view_pager_layout_3.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffaaccff">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="layout2"/>

</LinearLayout>

2、Activity:把滑动的页面存到List并传到 适配器

package xyz.lushangg.t8;

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

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

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

import xyz.lushangg.t8.R;
import xyz.lushangg.t8.viewPager.ViewPagerAdapter;

public class ViewPagerActivity extends AppCompatActivity {

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

        LayoutInflater lf = getLayoutInflater().from(this);
        View view1 = lf.inflate(R.layout.view_pager_layout_1,null);
        View view2 = lf.inflate(R.layout.view_pager_layout_2,null);
        View view3 = lf.inflate(R.layout.view_pager_layout_3,null);

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

        ViewPager viewPager = findViewById(R.id.vp);
        ViewPagerAdapter viewPagerAdapter=new ViewPagerAdapter(viewList);
        viewPager.setAdapter(viewPagerAdapter);


    }
}

3、适配器Adapter:继承 PagerAdapter 

package xyz.lushangg.t8.viewPager;

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

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

import java.util.List;

public class ViewPagerAdapter extends PagerAdapter {

    private List<View> mListView;

    public ViewPagerAdapter(List<View> mListView){
        this.mListView=mListView;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(mListView.get(position),0);
        return mListView.get(position);
    }



    @Override
    public int getCount() {
        return mListView.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

        container.removeView(mListView.get(position));
    }
}
结果展示:
滑动过程1页面:

 

 滑动成功后的页面:

 

 

 

标签:layout,mListView,--,ViewPager,import,Android,页面,pager,view
来源: https://www.cnblogs.com/technicist/p/15571969.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有