RxJava两步打造华丽的Android引导页

RxJava两步打造华丽的Android引导页,第1张

概述前言之前的一篇文章:基于RxJava实现酷炫启动页中,我们尝试了用RxJava实现酷炫的启动页,今天我们在此基础上加入首次使用APP时的引导页功能。

前言

之前的一篇文章:基于RxJava实现酷炫启动页 中,我们尝试了用RxJava实现酷炫的启动页,今天我们在此基础上加入首次使用APP时的引导页功能。

效果如下图:

思路:思路其实很简单,就是在WelcomeActivity setContentVIEw()之前判断是否是首次打开APP,若是,则去启动引导页(WelcomeGuIDeActivity)并return;若不是,则直接setContentVIEw(),然后启动动画再启动MainActivity

一、WelcomeActivity中判断是否是第一次启动

  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // 判断是否是第一次开启应用    boolean isFirstopen = SharedPreferencesUtil.getBoolean(this,SharedPreferencesUtil.FirsT_OPEN,true);    // 如果是第一次启动,则先进入功能引导页    if (isFirstopen) {      Intent intent = new Intent(this,WelcomeGuIDeActivity.class);      startActivity(intent);      finish();      return;    }    // 如果不是第一次启动app,则正常显示启动屏    setContentVIEw(R.layout.activity_welcome);    ButterKnife.bind(this);    startMainActivity();  }

我们判断是否是第一次打开APP是用了SharedPreferences,我们这里对他进行了一下简单封装,代码如下:

/** * Created by xialo on 2016/7/25. */public class SharedPreferencesUtil {  private static final String spfilename = "welcomePage";  public static final String FirsT_OPEN = "first_open";  public static Boolean getBoolean(Context context,String strKey,Boolean strDefault) {//strDefault  boolean: Value to return if this preference does not exist.    SharedPreferences setPreferences = context.getSharedPreferences(        spfilename,Context.MODE_PRIVATE);    Boolean result = setPreferences.getBoolean(strKey,strDefault);    return result;  }  public static voID putBoolean(Context context,Boolean strData) {    SharedPreferences activityPreferences = context.getSharedPreferences(        spfilename,Context.MODE_PRIVATE);    SharedPreferences.Editor editor = activityPreferences.edit();    editor.putBoolean(strKey,strData);    editor.commit();  }}

二、WelcomeGuIDeActivity中,我们使用VIEwPager以加载多个引导页面使其可以左右滑动

不多说,请看WelcomeGuIDeActivity.java代码:

/** * Created by xialo on 2016/7/25. */public class WelcomeGuIDeActivity extends Activity implements VIEw.OnClickListener {  private VIEwPager vp;  private GuIDeVIEwPagerAdapter adapter;  private List<VIEw> vIEws;  private button startBtn;  // 引导页图片资源  private static final int[] pics = { R.layout.guIDe_vIEw1,R.layout.guIDe_vIEw2,R.layout.guIDe_vIEw3};  // 底部小点图片  private ImageVIEw[] dots;  // 记录当前选中位置  private int currentIndex;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_guIDe);    vIEws = new ArrayList<VIEw>();    // 初始化引导页视图列表    for (int i = 0; i < pics.length; i++) {      VIEw vIEw = LayoutInflater.from(this).inflate(pics[i],null);      if (i == pics.length - 1) {        startBtn = (button) vIEw.findVIEwByID(R.ID.btn_enter);        startBtn.setTag("enter");        startBtn.setonClickListener(this);      }      vIEws.add(vIEw);    }    vp = (VIEwPager) findVIEwByID(R.ID.vp_guIDe);    adapter = new GuIDeVIEwPagerAdapter(vIEws);    vp.setAdapter(adapter);    vp.addOnPagechangelistener(new Pagechangelistener());    initDots();  }  @OverrIDe  protected voID onResume() {    super.onResume();  }  @OverrIDe  protected voID onPause() {    super.onPause();    // 如果切换到后台,就设置下次不进入功能引导页    SharedPreferencesUtil.putBoolean(WelcomeGuIDeActivity.this,false);    finish();  }  @OverrIDe  protected voID onStop() {    super.onStop();  }  @OverrIDe  protected voID onDestroy() {    super.onDestroy();  }  private voID initDots() {    linearLayout ll = (linearLayout) findVIEwByID(R.ID.ll);    dots = new ImageVIEw[pics.length];    // 循环取得小点图片    for (int i = 0; i < pics.length; i++) {      // 得到一个linearLayout下面的每一个子元素      dots[i] = (ImageVIEw) ll.getChildAt(i);      dots[i].setEnabled(false);// 都设为灰色      dots[i].setonClickListener(this);      dots[i].setTag(i);// 设置位置tag,方便取出与当前位置对应    }    currentIndex = 0;    dots[currentIndex].setEnabled(true); // 设置为白色,即选中状态  }  /**   * 设置当前vIEw   *   * @param position   */  private voID setCurVIEw(int position) {    if (position < 0 || position >= pics.length) {      return;    }    vp.setCurrentItem(position);  }  /**   * 设置当前指示点   *   * @param position   */  private voID setCurDot(int position) {    if (position < 0 || position > pics.length || currentIndex == position) {      return;    }    dots[position].setEnabled(true);    dots[currentIndex].setEnabled(false);    currentIndex = position;  }  @OverrIDe  public voID onClick(VIEw v) {    if (v.getTag().equals("enter")) {      enterMainActivity();      return;    }    int position = (Integer) v.getTag();    setCurVIEw(position);    setCurDot(position);  }  private voID enterMainActivity() {    Intent intent = new Intent(WelcomeGuIDeActivity.this,WelcomeActivity.class);    startActivity(intent);    SharedPreferencesUtil.putBoolean(WelcomeGuIDeActivity.this,false);    finish();  }  private class Pagechangelistener implements VIEwPager.OnPagechangelistener {    @OverrIDe    public voID onPageScrollStateChanged(int position) {    }    @OverrIDe    public voID onPageScrolled(int position,float arg1,int arg2) {    }    @OverrIDe    public voID onPageSelected(int position) {      // 设置底部小点选中状态      setCurDot(position);    }  }}

我们用了三个页面guIDe_vIEw1、guIDe_vIEw2、guIDe_vIEw3作为引导页面,布局类似,只是guIDe_vIEw3多了个点击进入的button。

以下是guIDe_vIEw3.xml

<?xml version="1.0" enCoding="utf-8"?><FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent" >  <ImageVIEw    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:scaleType="centerCrop"    androID:src="@mipmap/guIDe_img3" />  <button    androID:ID="@+ID/btn_enter"    androID:layout_wIDth="100dp"    androID:layout_height="26dp"    androID:layout_gravity="bottom|center_horizontal"    androID:layout_marginBottom="75dp"    androID:background="@drawable/button_shape"    androID:text="@string/entry"    androID:textcolor="@color/white"    androID:textSize="18sp"    androID:visibility="visible" /></FrameLayout>

WelcomeGuIDeActivity中值得注意的是该button点击事件的处理,在点击button后我们并没有直接进入MainActivity,而是先把SharedPreferences中标记是否第一次进入的布尔值设为false,而后再次进入WelcomeActivity,此时WelcomeActivity会直接setContentVIEw()然后启动动画,进入MainActivity

以上,我们华丽丽的引导页就完成了。希望本文中能对你的引导页提供帮助,和在大家学习AndroID开发中有所参考,谢谢大家对编程小技巧的支持。

总结

以上是内存溢出为你收集整理的RxJava两步打造华丽的Android引导页全部内容,希望文章能够帮你解决RxJava两步打造华丽的Android引导页所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存