ViewPager的基本使用方法

ViewPager作为V4包下的控件,是在APP开发中由很大的使用概率,基本每个APP有必不可少的引导页,就是ViewPager完成的,对于提升用户体验,有很大的帮助。

首先是构成ViewPager需要的内容
1.List < View> list 数据源 和PagerAdapter适配器
2.List< Fragment> list 数据源和FragmentPagerAdapter适配器
今天用第一种
首先是主Activity的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"

    tools:context="com.example.administrator.viewpage.MainActivity">
<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_height="match_parent"
    android:layout_width="match_parent" />
    <LinearLayout
        android:id="@+id/dot"
        android:layout_width="120dp"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="40dp"
        android:gravity="center"

        android:layout_marginLeft="10dp"
        android:layout_height="40dp">


    </LinearLayout>


</RelativeLayout>

然后依次是3个要加入ViewPager所需要的3是个view绑定的布局文件

<?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:orientation="vertical"
    android:gravity="center">

    <TextView
        android:id="@+id/txt_one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第一个界面"
        android:textSize="30dp"/>

</LinearLayout>
<?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:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txt_two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第二个界面"
        android:textSize="30dp"/>
</LinearLayout>
<?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:gravity="center"
    android:orientation="vertical">
    <TextView
        android:id="@+id/txt_three"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第三个界面"
        android:textSize="30dp"/>

</LinearLayout>

主要的代码实现

package com.example.administrator.viewpage;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Layout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.example.administrator.viewpage.Adapter.viewPageradapter;

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

public class MainActivity extends AppCompatActivity {
    protected List<View> views;
    protected ViewPager viewPager;
    protected int[] view_id = {R.layout.one_activity, R.layout.two_activity, R.layout.three_activity};
    protected viewPageradapter pageradapter;
    protected ImageView imageView;
    protected  List<ImageView> image_list;
    protected ViewGroup viewGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initview();
        views = getViewPagerdata();
        image_list=getdot();
        Log.e("数据", String.valueOf(views.size()));
        pageradapter = new viewPageradapter(MainActivity.this, views);
        viewPager.setAdapter(pageradapter);
        viewPager.setCurrentItem(0);
        image_list.get(0).setImageResource(R.drawable.ic_launcher_foreground);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                for(int i=0;i<image_list.size();i++)
                {
                     if(i==position)
                     {
                          image_list.get(position).setImageResource(R.drawable.ic_launcher_foreground);
                     }
                     else
                         image_list.get(i).setImageResource(R.drawable.ic_launcher_background);
                }

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    private void initview() {
        views = new ArrayList<>();
        viewPager = findViewById(R.id.viewpager);
        image_list=new ArrayList<>();
        viewGroup=findViewById(R.id.dot);

    }

    public List<View> getViewPagerdata() {
        List<View> lists = new ArrayList<>();
        for (int i = 0; i < view_id.length; i++) {
            lists.add(LayoutInflater.from(MainActivity.this).inflate(view_id[i], null));

        }
        return lists;
    }

    public List<ImageView> getdot()
    {
        List<ImageView> imageViews=new ArrayList<>();
        for (int i = 0; i <views.size() ; i++) {
            imageView=new ImageView(MainActivity.this);
            imageView.setImageResource(R.drawable.ic_launcher_background);
            imageView.setMaxHeight(20);
            imageView.setMaxWidth(20);
            LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(20,20);
             params.leftMargin=20;
            imageView.setLayoutParams(params);
            viewGroup.addView(imageView);

            imageViews.add(imageView);


        }
            return imageViews;

        }
}

首先添加视图到数据源中,之后建立适配器 重写4个方法,有2个要自己写

适配器代码

package com.example.administrator.viewpage.Adapter;

import android.content.Context;
import android.database.Cursor;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.CursorTreeAdapter;

import java.util.List;

/**
 * Created by Administrator on 2018/6/11 0011.
 */

public class viewPageradapter extends PagerAdapter {
    Context context;
    List<View> list;

    public viewPageradapter(Context context, List<View> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.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(list.get(position));
    }


    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
         View child=list.get(position);
         container.addView(child);
         return child;

    }
}

在instantiateItem()方法中加入视图在ViewPager中,最后完成Viewpager的内容添加。就完成的ViewPager的基本使用内容了

截图
这里写图片描述

这里写图片描述

这里写图片描述

原文作者:俞试晨
原文链接:点击这里

猜你喜欢

转载自blog.csdn.net/fjnu_se/article/details/80894632