App启动页倒计时功能

转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6753418.html

示例代码采用 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 interface BaseView {

    <T> LifecycleTransformer<T> bindToLife();

}

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

public final class RxHelper {

    private RxHelper() {
        throw new AssertionError();
    }

    /**
     * 倒计时
     */
    public static Observable<Integer> countdown(int time) {
        if (time < 0) {
            time = 0;
        }
        final int countTime = time;

        return Observable.interval(0, 1, TimeUnit.SECONDS)
                .map(new Func1<Long, Integer>() {
                    @Override
                    public Integer call(Long increaseTime) {
                        return countTime - increaseTime.intValue();
                    }
                })
                .take(countTime + 1)
                .subscribeOn(Schedulers.io())
                .unsubscribeOn(Schedulers.io())
                .subscribeOn(AndroidSchedulers.mainThread())
                .observeOn(AndroidSchedulers.mainThread());
    }

}

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

private void init() {
    RxHelper.countdown(5)
            .compose(this.<Integer>bindToLife())
            .subscribe(new Subscriber<Integer>() {
                @Override
                public void onCompleted() {
                    doSkip();
                }

                @Override
                public void onError(Throwable e) {
                    doSkip();
                }

                @Override
                public void onNext(Integer integer) {
                    mBinding.sbSkip.setText("跳过 " + integer);
                }
            });
}

④ 自定义方法:实现跳转

private void doSkip() {
    if (!mIsSkip) {
        mIsSkip = true;
        finish();
        startActivity(new Intent(SplashActivity.this, MainActivity.class));
        overridePendingTransition(R.anim.hold, R.anim.zoom_in_exit);
    }
}

⑤ 设置主题样式为全屏

<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowFullscreen">true</item>
</style>

示例Demo下载:App启动页倒计时功能

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

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

时间: 2024-12-24 22:57:36

App启动页倒计时功能的相关文章

app启动页的设计技巧(一)

虽然,每一个APP的启动页界面设计是需要按使用场景设计的.但是每一个APP启动页的存在的意义与APP产品定位.APP运营策略有关的. 第一部分:对于设计一个好的APP启动页作品,必须满足这三个特征 认真观察,很容易归纳出欢迎页有以下的三个特征: 1.简单:在启动页中,文案是极为简短精炼的,而启动页一般由一张图片和一句文案组成: 2.直接:启动页中的文字表述简单直接,基本没有过多的修饰性词语: 3.图为主,文为辅:启动页中,图片约占三分之二的区域,文字约占三分之一的区域 第二部分:简单易学的APP

Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)

转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法   首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象,微信每次启动的时候,是直接进入这个启动页面. 我的意思是,很多应用,往往会先白屏停顿一下后再进入启动页面(Splash).为了印证这一点,我把手机上所有的App都点了一遍.选几个例子 如下图: 微信:  斗鱼:  斗鱼和微信是直接进入了,他们的Splash页面. 知乎:  B站:  知乎和B站要先

app的启动页面(二)----四种APP启动页设计方案

第一种APP启动页设计方案: 扁平法 简单粗暴的手法.简单的纯色或者几何立体背景+广告语+icon,也适合如今设计的风格趋势等. 方案的延伸就是,加点加载动画或者过渡动画. 第二种APP启动页设计方案: 组合法 根据行业背景来设计,选取行业元素做一个图形化组合或者图形化标志等,衬托突出APP的icon或LOGO 第三种APP启动页设计方案: 情景法 采用一种非常有意境和含义的大背景来做设计.难点在于背景的选择和设计.然后加上APP的广告语或者LOGO即可.注重情感的表达和意境的抒发.着重点在于设

分分钟解决iOS开发中App启动广告的功能

前不久有朋友需要一个启动广告的功能,我说网上有挺多的,他说,看的不是很理想.想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单的封装了一下,各种事件用block回调的,有俩种样式的广告,一种是全屏广告,另一种是下面露logo的,类似网页新闻的启动广告.依赖SDWebImage主要用来下载网络的广告图片,一般项目里面网络图片都用的这个框架,所以在此不做过多的阐述.下面让我们来看看我封装的过程,对于新手来说,可以学习一下这种封装的思想. 1.首先建一个继承View的LBLaunchImageAd

APP启动页

关于APP启动引导页面模块 时间:2016年6月14日 作者:赵锐 模块使用说明 模块暴露在外的接口是- (void)showGuideViewWithImages:(NSArray *)images;调用时候需要传入引导页图片的名字数组即可. @interface GuideManager : NSObject /** * 实现功能:APP启动引导图 * * @param images 引导图图片的名字数组 */ - (void)showGuideViewWithImages:(NSArray

【Android】Mac下Android Studio设置App启动页

先将启动页放到项目资源中,图片一般是1080*1920的jpg. 新建一个activity,如图: 创建成功之后,打开刚刚创建的activity,来进行代码的编写: public class BZLaunchActivity extends AppCompatActivity { private final int SPLASH_DISPLAY_LENGHT = 2000;//两秒后进入系统,时间可自行调整 @Override protected void onCreate(Bundle sav

每日一博 | 用 Ionic2 创建 App 启动页滑动欢迎界面

原文  https://my.oschina.net/qinphil/blog/777787 效果如下,图片来自网络 本文例子和上图稍有不同,主要功能如下: 每滑动一下展示一张全屏图片: 滑动到最后一页才出现启动按钮: 欢迎界面只在第一次安装启动时出现. 下面就让我们一步一步实现这个功能: 1.创建应用: 使用Ionic2创建应用非常简单,只需在V1的命令后跟上--v2即可,如下: ionic start ionic2-welcome --v2 2.创建Component 使用命令行创建页面或者

js调用app启动页

第一步:添加js $(function () { var ua = window.navigator.userAgent.toLowerCase(); //微信 if(ua.match(/MicroMessenger/i) == 'micromessenger'){ //微信浏览器绑定事件 /*$(".app").bind('click', function (event) { window.location.href = ''; })*/ }else{//非微信浏览器 if (nav

用代码获取APP启动页图片

源码 - swift // // AppleSystemService.swift // Swift-Animations // // Created by YouXianMing on 16/8/11. // Copyright © 2016年 YouXianMing. All rights reserved. // import UIKit class AppleSystemService : NSObject { /** Get the lauch image. - returns: Th