当前位置: 移动技术网 > IT编程>移动开发>Android > 基于RxJava实现酷炫启动页

基于RxJava实现酷炫启动页

2019年07月24日  | 移动技术网IT编程  | 我要评论

行尸走肉第六季第6集,盖网通,爱彩票网

前言

rxjava 在 github 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the java vm"(一个在 java vm 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 rxjava ,概括得非常精准。

之前注意到coding app启动页很是酷炫,今天我们使用rxjava和属性动画模仿实现其效果。

先来看看效果

一、新建启动页welcomeactivity

注意,我们这里让welcomeactivity继承activity不要继承appcompatactivity,因为appcompatactivity会默认去加载主题,造成卡顿

  public class welcomeactivity extends activity {

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_welcome);
  }
}

二、定义引导页布局activity_welcome.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">

  <imageview
    android:id="@+id/iv_entry"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaletype="fitxy"
    android:src="@drawable/welcomimg1"/>

  <view
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/welcomimg_bg"/>


  <textview
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignparentbottom="true"
    android:layout_marginbottom="100dp"
    android:gravity="center"
    android:text="xialong"
    android:textcolor="@android:color/white"
    android:textsize="23sp"/>

  <imageview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/google_logo"
    android:layout_alignparentbottom="true"
    android:layout_marginbottom="60dp"
    android:layout_centerinparent="true"
    android:tint="@android:color/white" />
</relativelayout>

这里我们用了相对布局,在imageview上覆盖一个view,该view用渐变色背景welcomimg_bg.xml以暗化图片,

welcomimg_bg.xml代码如下:

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

  <gradient
    android:angle="90"
    android:startcolor="@color/black"
    android:endcolor="@android:color/transparent"
    />

</shape>

其中startcolor表示起始颜色,endcolor表示结束颜色,angle=90 表示颜色从下往上渐变。

三、随机选取图片并使用rxjava启动动画

最后我们的welcomeactivity.java长这样:

public class welcomeactivity extends activity {

  @bind(r.id.iv_entry)
  imageview miventry;

  private static final int anim_time = 2000;

  private static final float scale_end = 1.15f;

  private static final int[] imgs={
      r.drawable.welcomimg1,r.drawable.welcomimg2,
      r.drawable.welcomimg3,r.drawable.welcomimg4,
      r.drawable.welcomimg5, r.drawable.welcomimg6,
      r.drawable.welcomimg7,r.drawable.welcomimg8,
      r.drawable.welcomimg9,r.drawable.welcomimg10,
      r.drawable.welcomimg11,r.drawable.welcomimg12,};

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_welcome);
    butterknife.bind(this);

    random random = new random(systemclock.elapsedrealtime());//systemclock.elapsedrealtime() 从开机到现在的毫秒数(手机睡眠(sleep)的时间也包括在内)
    miventry.setimageresource(imgs[random.nextint(imgs.length)]);

    observable.timer(1000, timeunit.milliseconds)
        .observeon(androidschedulers.mainthread())
        .subscribe(new action1<long>()
        {

          @override
          public void call(long along)
          {
            startanim();
          }
        });
  }


  private void startanim() {

    objectanimator animatorx = objectanimator.offloat(miventry, "scalex", 1f, scale_end);
    objectanimator animatory = objectanimator.offloat(miventry, "scaley", 1f, scale_end);

    animatorset set = new animatorset();
    set.setduration(anim_time).play(animatorx).with(animatory);
    set.start();

    set.addlistener(new animatorlisteneradapter()
    {

      @override
      public void onanimationend(animator animation)
      {

        startactivity(new intent(welcomeactivity.this, mainactivity.class));
        welcomeactivity.this.finish();
      }
    });
  }
}

这里的rxjava使用了timer操作符,它的意思是延迟执行某个操作,第一个参数表示延迟时间,第二个参数是时间单位。

好了,就酱。以上就是用rxjava打造酷炫启动页的全部内容,希望本文对大家学习android开发有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网