android开发 时间倒计时的启动页,App启动页倒计时功能(示例代码)

示例代码采用 RxJava + RxLifecycle + Data-Binding 模式编写

示例图:

c8f080284f5e251c497fd9e15e74bec1.gif

话不多说,实现方式如下:

1.导入依赖库

① RxJava: Reactive Extensions for the JVM

compile ‘io.reactivex:rxjava:1.2.9‘

compile ‘io.reactivex:rxandroid:1.2.1‘

② RxLifecycle

compile ‘com.trello:rxlifecycle:1.0‘

compile ‘com.trello:rxlifecycle-components:1.0‘

③ Data-Binding

dataBinding {

enabled = true

}

2.代码编写(关键代码)

① 自定义接口View

public interfaceBaseView { LifecycleTransformerbindToLife();

}

② 创建一个Helper类,用来进行倒计时操作

public final classRxHelper {privateRxHelper() {throw newAssertionError();

}/*** 倒计时*/

public static Observable countdown(inttime) {if (time < 0) {

time= 0;

}final int countTime =time;return Observable.interval(0, 1, TimeUnit.SECONDS)

.map(new Func1() {

@OverridepublicInteger call(Long increaseTime) {return countTime -increaseTime.intValue();

}

})

.take(countTime+ 1)

.subscribeOn(Schedulers.io())

.unsubscribeOn(Schedulers.io())

.subscribeOn(AndroidSchedulers.mainThread())

.observeOn(AndroidSchedulers.mainThread());

}

}

③ 自定义方法:实现异步加载

private voidinit() {

RxHelper.countdown(5)

.compose(this.bindToLife())

.subscribe(new Subscriber() {

@Overridepublic voidonCompleted() {

doSkip();

}

@Overridepublic voidonError(Throwable e) {

doSkip();

}

@Overridepublic voidonNext(Integer integer) {

mBinding.sbSkip.setText("跳过 " +integer);

}

});

}

④ 自定义方法:实现跳转

private voiddoSkip() {if (!mIsSkip) {

mIsSkip= true;

finish();

startActivity(new Intent(SplashActivity.this, MainActivity.class));

overridePendingTransition(R.anim.hold, R.anim.zoom_in_exit);

}

}

⑤ 设置主题样式为全屏

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

true

关注我的新浪微博,请认准黄V认证,获取最新安卓开发资讯。

关注科技评论家,领略科技、创新、教育以及最大化人类智慧与想象力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值