Android启动引导页使用ViewPager实现

Android启动引导页使用ViewPager实现,第1张

概述我们在安装某个APP的时候,基本都会有一个引导页的提示,他们可以打广告,或者介绍新功能的加入和使用说明等。

我们在安装某个APP的时候,基本都会有一个引导页的提示,他们可以打广告,或者介绍新功能的加入和使用说明等。
一般都支持滑动并且下面有几个点,显示共有多少页和当前图片的位置,在IOS上这个实现起来比较简单,但在安卓上如何实现呢。
今天就和大家一起来学习用官方v4支持包下的VIEwPager来实现这个效果。

先上图:

下面是我的实现,一个xml布局,一个GuIDeActivity和一个GuIDePageAdapter.
 先上XML. 

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context="com.example.nanchen.guIDepagedemo.GuIDeActivity">  <androID.support.v4.vIEw.VIEwPager androID:ID="@+ID/guIDe_vp" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> </androID.support.v4.vIEw.VIEwPager> <linearLayout androID:ID="@+ID/guIDe_ll_point" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:orIEntation="horizontal" androID:layout_alignParentBottom="true" androID:layout_marginBottom="40dp" androID:gravity="center_horizontal"> </linearLayout> <Imagebutton androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:ID="@+ID/guIDe_ib_start" androID:src="@mipmap/btn_start" androID:layout_centerHorizontal="true" androID:layout_above="@+ID/guIDe_ll_point" androID:background="@null" androID:visibility="gone"/></relativeLayout>

在准备一个Adapter,这个没什么好说的。 

package com.example.nanchen.guIDepagedemo;import androID.support.v4.vIEw.PagerAdapter;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import java.util.List;/** * Created by 南尘 on 2016/7/10. */public class GuIDePageAdapter extends PagerAdapter { private List<VIEw> vIEwList; public GuIDePageAdapter(List<VIEw> vIEwList) { this.vIEwList = vIEwList; } /** * @return 返回页面的个数 */ @OverrIDe public int getCount() { if (vIEwList != null){  return vIEwList.size(); } return 0; } /** * 判断对象是否生成界面 * @param vIEw * @param object * @return */ @OverrIDe public boolean isVIEwFromObject(VIEw vIEw,Object object) { return vIEw == object; }  /** * 初始化position位置的界面 * @param container * @param position * @return */ @OverrIDe public Object instantiateItem(VIEwGroup container,int position) { container.addVIEw(vIEwList.get(position)); return vIEwList.get(position); } @OverrIDe public voID destroyItem(VIEwGroup container,int position,Object object) { container.removeVIEw(vIEwList.get(position)); }} 

最后就是我们的Activity了

package com.example.nanchen.guIDepagedemo;import androID.content.Intent;import androID.os.Bundle;import androID.support.v4.vIEw.VIEwPager;import androID.support.v7.app.AppCompatActivity;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.vIEw.Window;import androID.Widget.Imagebutton;import androID.Widget.ImageVIEw;import androID.Widget.linearLayout;import java.util.ArrayList;import java.util.List;/** * 实现首次启动的引导页面 */public class GuIDeActivity extends AppCompatActivity implements VIEwPager.OnPagechangelistener{  private VIEwPager vp; private int []imageIDArray;//图片资源的数组 private List<VIEw> vIEwList;//图片资源的集合 private VIEwGroup vg;//放置圆点//实例化原点VIEw private ImageVIEw iv_point; private ImageVIEw []ivPointArray; //最后一页的按钮 private Imagebutton ib_start; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestwindowFeature(Window.FEATURE_NO_Title); setContentVIEw(R.layout.activity_guIDe); ib_start = (Imagebutton) findVIEwByID(R.ID.guIDe_ib_start); ib_start.setonClickListener(new VIEw.OnClickListener() {  @OverrIDe  public voID onClick(VIEw v) {  startActivity(new Intent(GuIDeActivity.this,MainActivity.class));  finish();  } }); //加载VIEwPager initVIEwPager();  //加载底部圆点 initPoint(); }  /** * 加载底部圆点 */ private voID initPoint() { //这里实例化linearLayout vg = (VIEwGroup) findVIEwByID(R.ID.guIDe_ll_point); //根据VIEwPager的item数量实例化数组 ivPointArray = new ImageVIEw[vIEwList.size()]; //循环新建底部圆点ImageVIEw,将生成的ImageVIEw保存到数组中 int size = vIEwList.size(); for (int i = 0;i<size;i++){  iv_point = new ImageVIEw(this);  iv_point.setLayoutParams(new VIEwGroup.LayoutParams(20,20));  iv_point.setpadding(30,30,0);//left,top,right,bottom  ivPointArray[i] = iv_point;  //第一个页面需要设置为选中状态,这里采用两张不同的图片  if (i == 0){  iv_point.setBackgroundResource(R.mipmap.full_holo);  }else{  iv_point.setBackgroundResource(R.mipmap.empty_holo);  }  //将数组中的ImageVIEw加入到VIEwGroup  vg.addVIEw(ivPointArray[i]); } } /** * 加载图片VIEwPager */private voID initVIEwPager() { vp = (VIEwPager) findVIEwByID(R.ID.guIDe_vp); //实例化图片资源 imageIDArray = new int[]{R.mipmap.guIDe1,R.mipmap.guIDe2,R.mipmap.guIDe3}; vIEwList = new ArrayList<>(); //获取一个Layout参数,设置为全屏 linearLayout.LayoutParams params = new linearLayout.LayoutParams(  linearLayout.LayoutParams.MATCH_PARENT,linearLayout.LayoutParams.MATCH_PARENT); //循环创建VIEw并加入到集合中 int len = imageIDArray.length; for (int i = 0;i<len;i++){  //new ImageVIEw并设置全屏和图片资源  ImageVIEw imageVIEw = new ImageVIEw(this);  imageVIEw.setLayoutParams(params);  imageVIEw.setBackgroundResource(imageIDArray[i]);  //将ImageVIEw加入到集合中  vIEwList.add(imageVIEw); } //VIEw集合初始化好后,设置Adapter vp.setAdapter(new GuIDePageAdapter(vIEwList)); //设置滑动监听 vp.setonPagechangelistener(this); } @OverrIDe public voID onPageScrolled(int position,float positionOffset,int positionOffsetPixels) { } /** * 滑动后的监听 * @param position */ @OverrIDe public voID onPageSelected(int position) { //循环设置当前页的标记图 int length = imageIDArray.length; for (int i = 0;i<length;i++){  ivPointArray[position].setBackgroundResource(R.mipmap.full_holo);  if (position != i){  ivPointArray[i].setBackgroundResource(R.mipmap.empty_holo);  } } //判断是否是最后一页,若是则显示按钮 if (position == imageIDArray.length - 1){  ib_start.setVisibility(VIEw.VISIBLE); }else {  ib_start.setVisibility(VIEw.GONE); } } @OverrIDe public voID onPageScrollStateChanged(int state) {  }} 

总的来说实现流程比较简单。
 1)先加载VIEwPager,新建ImageVIEw并添加到VIEw集合中,然后设置Adapter并显示。
 2)然后加载linearLayout,放置原点图片,同样新建ImageVIEw设置背景后放在圆点图集合中。
 3)最后设置VIEwPager的滑动监听事件,在滑动完成的监听OnPageSelected方法中,设置对应的圆点为选中,如果是最后一页,则显示按钮。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android启动引导页使用ViewPager实现全部内容,希望文章能够帮你解决Android启动引导页使用ViewPager实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1141583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存