示例代码采用 RxJava + RxLifecycle + Data-Binding 模式编写
示例图:
话不多说,实现方式如下:
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认证,获取最新安卓开发资讯。
关注科技评论家,领略科技、创新、教育以及最大化人类智慧与想象力!