ViewPager的簡(jiǎn)單使用

很多app在第一次進(jìn)入軟件的時(shí)候都會(huì)有一個(gè)引導(dǎo)用戶的滑動(dòng)頁(yè)面,三頁(yè)到五頁(yè)不等
如下效果:


demoViewPager.gif

這里采用的是viewPager實(shí)現(xiàn)

首先上java代碼目錄結(jié)構(gòu):(就兩個(gè)Activity,主要是GuideActivity)


image.png

然后是XML:


image.png

代碼
GuideActivity:

import android.content.Intent;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import java.util.ArrayList;
import java.util.List;

public class GuideActivity extends AppCompatActivity {
  private ViewPager viewPager;

  private List<View> list;//定義一個(gè)View的集合
  private View view1;
  private View view2;
  private View view3;//定義三個(gè)View
@Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_guide);

      //初始化viewPager組件
      viewPager = findViewById(R.id.viewPager);

      //布局填充器
      LayoutInflater inflater = LayoutInflater.from(this);

      //初始化list
      list = new ArrayList<>();

      //初始化三個(gè)View并添加到集合中
      view1 = inflater.inflate(R.layout.view1,null);
      view2 = inflater.inflate(R.layout.view2,null);
      view3 = inflater.inflate(R.layout.view3,null);
      list.add(view1);
      list.add(view2);
      list.add(view3);
     //初始化進(jìn)入按鈕,view3頁(yè)面的按鈕,通過(guò)view3.findViewById()
      Button enterBtn = view3.findViewById(R.id.enterBtn);

      //進(jìn)入按鈕的監(jiān)聽(tīng)事件
      enterBtn.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              startActivity(new Intent(GuideActivity.this,MainActivity.class));
              finish();
          }
      });

      /**
       * ViewPager的適配器
       * 一般復(fù)寫getCount、isViewFromObject、destroyItem、instantiateItem即可
       */
      PagerAdapter pagerAdapter = new PagerAdapter() {
          /**
           * 滑動(dòng)視圖的個(gè)數(shù)
           * @return
           */
          @Override
          public int getCount() {
              return list.size();
          }
/**
           * 如果對(duì)應(yīng)的是同一個(gè)View,返回True,否則返回False
           * @param view
           * @param object
           * @return
           */
          @Override
          public boolean isViewFromObject(View view, Object object) {
              return view == object;
          }

          /**
           * 移除指定位置的視圖
           * @param container
           * @param position
           * @param object
           */
          @Override
          public void destroyItem(ViewGroup container, int position, Object object) {
              container.removeView(list.get(position));
          }
/**
           * 創(chuàng)建指定位置的頁(yè)面視圖并返回
           * @param container
           * @param position
           * @return
           */
          @Override
          public Object instantiateItem(ViewGroup container, int position) {
              container.addView(list.get(position));
              return list.get(position);
          }
      };

      //適配viewPager
      viewPager.setAdapter(pagerAdapter);
  }
}

MainActivity是空的,就不貼代碼了

activity_guide.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v4.view.ViewPager>

</RelativeLayout>

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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.demo.kinsin.demoviewpager.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/welcome"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="26sp"/>

</android.support.constraint.ConstraintLayout>

view3:(view1和view2比view3少個(gè)button,其他的都一樣)

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

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:textSize="26sp"
        android:text="@string/viewPager3"/>

    <Button
        android:id="@+id/enterBtn"
        android:layout_width="120dp"
        android:layout_height="50dp"
        android:text="@string/enterBtn"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="50dp"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

代碼+注釋,理解應(yīng)該不難了,如有錯(cuò)誤,請(qǐng)不吝指出,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容