基于RxJava实现酷炫启动页

前言

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开发有所帮助。

时间: 2024-10-27 03:53:23

基于RxJava实现酷炫启动页的相关文章

基于RxJava实现酷炫启动页_Android

前言 RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的.基于事件的程序的库).这就是 RxJava ,概括得非常精准. 之前注意到coding APP启动页很是酷炫,今天我们使用RxJava和属性动画模仿实现其效果.

RxJava实践之打造酷炫启动页

之前注意到coding APP启动页很是酷炫,今天我们使用RxJava和属性动画模仿实现其效果. 一.新建启动页WelcomeActivity 注意,我们这里让WelcomeActivity继承Activity不要继承AppCompatActivity,因为AppCompatActivity会默认去加载主题,造成卡顿  public class WelcomeActivity extends Activity {        @Override      protected void onCr

OSChina 周日乱弹 —— 超酷炫 58 页年终总结,笑喷!

猿文:http://my.oschina.net/xxiaobian/blog/368981 借鉴一下以下的各种年终总结吧,总有适合你的... OSCer 们,小小编掐指一算,你命里真的缺我啊,赶紧给小小编送温暖,把@红薯  抱回家,哈哈--- 周日也要灰常愉快哦-

Android优化之启动页去黑屏实现秒启动_Android

前言 还记得之前我们写了一篇文章,基于RxJava实现酷炫启动页,然而当我们点击桌面图标启动APP时,有时会闪一下黑色背景,有时黑色背景时间还比较长,哎呀,难看死了,这个怎么办捏,别方,我们今天就来看看启动页的优化. 一.消除启动时的黑屏 点击桌面launcher图标启动APP,闪现的黑色背景其实是出现在我们看到界面第一帧之前.那我们就要想办法让这个黑色的背景变成用户喜欢看到的画面或者让它透明化.有了思路方法也就粗现了,我们有下面两种方案: 自定义WelcomActivity的Theme 说白了

Android零基础入门第52节:自定义酷炫进度条

原文:Android零基础入门第52节:自定义酷炫进度条    Android系统默认的ProgressBar往往都不能满足实际开发需要,一般都会开发者自定义ProgressBar.     在Android开发中,自定义ProgressBar一般有三种思路来完成.     一.在系统进度条基础上优化       首先来看一下style="@android:style/Widget.ProgressBar.Horizontal"的源码.鼠标移动到style属性值上,按住Ctrl键,鼠标

PS手把手教你打造酷炫的专属星球特效

  我们该如何打造星球特效?一定有人会告诉你用极坐标.但这个方法真的有些落伍了.今天@他山之眼 向大家强力推荐一个超方便的方法,操作更加方便,效果更加酷炫,一起来把你熟悉的场景变成一颗星球悬浮在太空中,体验一把上帝视角的感觉! 想要让自己的照片与众不同? 星球特效可以满足你这一切. 极坐标一般是这样操作: 即先把图片垂直翻转,然后使用极坐标. 之所以要垂直翻转,是因为画面从上到下,反映到极坐标里面就是从内到外,为了保证出现星球的效果,所以要进行垂直翻转. 但是极坐标有几个无法克服的缺点: 一是要

NASA最酷炫的五款X系列飞机

◆ ◆ ◆ 导读 本月早些时候,在中断了十年之后,NASA宣布了最新的X系列飞机X-57 Maxwell--一款仅凭电池驱动的纯电动飞机(如上图)--以及未来二十年建造更多野心勃勃的X系列飞机的计划.出于响应这一激动人心的消息,让我们回顾一下五款NASA最惊艳的X系列飞机吧. ◆ ◆ ◆ NASA最酷炫的五款X系列飞机 X-1:让子弹飞 X-1是第一款X系列飞机,别名"迷人的格来尼丝".这款飞机实际上模仿了能稳定超声速飞行的机关枪子弹,故又被戏称为"长了翅膀的子弹"

Asp.net使用SignalR实现酷炫端对端聊天功能_实用技巧

一.引言 在前一篇文章已经详细介绍了SignalR了,并且简单介绍它在Asp.net MVC 和WPF中的应用.在上篇博文介绍的都是群发消息的实现,然而,对于SignalR是为了实时聊天而生的,自然少了不像QQ一样的端对端的聊天了.本篇博文将介绍如何使用SignalR来实现类似QQ聊天的功能. 二.使用SignalR实现端对端聊天的思路   在介绍具体实现之前,我先来介绍了使用SignalR实现端对端聊天的思路.相信大家在前篇文章已经看到过Clients.All.sendMessage(name

WPF换肤之六:酷炫的时区浏览小精灵

原文:WPF换肤之六:酷炫的时区浏览小精灵 由于工作需要,经常要查看到不同地区的 当前时间,以前总是对照着时区表来进行加减运算,现在有了这个小工具以后,感觉省心了不少.下面是软件的截图: 效果图赏析   在界面上,有能够冉冉升起的太阳或者月亮,有缓慢飘动的浮云,有青葱翠绿的花叶, 当然,也有显目的时区显示.如果要是放在WinForm时代,要实现这样的界面,真的是繁琐和复杂,但是在WPF中,利用XAML控制前台界面,利用CodeBehind控制窗口拖动,日月变换等等逻辑,真的是简便而且效果强大.其