Android开屏页倒计时功能实现的详细教程
程序员文章站
2023-11-20 17:44:46
最近我司产品提出了一个很常见的需求:app 在开屏页(splash 界面) 需要加上一个 3s 倒计时按钮,可以选择看 3s 的广告,或者点击按钮跳过广告。
一、...
最近我司产品提出了一个很常见的需求:app 在开屏页(splash 界面) 需要加上一个 3s 倒计时按钮,可以选择看 3s 的广告,或者点击按钮跳过广告。
一、布局实现(使用 framelayout 悬浮在广告的右上角,显示倒计时的 textview 的宽高尽量不要写死,要考虑字体很多的情况!!)
<framelayout android:id="@+id/start_skip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_alignparenttop="true"> <textview android:id="@+id/start_skip_count_down" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/default_padding" android:text="@string/click_to_skip" android:gravity="center" android:background="@drawable/bg_start_page_circle" android:textcolor="@android:color/white" android:textsize="14sp" /> </framelayout>
二、textview 背景的 @drawable/bg_start_page_circle 用系统 shape 实现,不需要 ui 帮我们切图
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#80000000"/> <padding android:bottom="3dp" android:left="8dp" android:right="8dp" android:top="3dp"/> <corners android:bottomleftradius="45dp" android:bottomrightradius="45dp" android:topleftradius="45dp" android:toprightradius="45dp"/> </shape>
三、在 oncreate() 里面找到显示倒计时的 textview
private textview mcountdowntextview; /** * created by keithxiaoy on 2017/06/07. */ @override public void oncreate(bundle savedinstancestate) { mcountdowntextview = (textview) findviewbyid(r.id.start_skip_count_down); }
四、倒计时实现(使用 android 系统原生的倒计时控件 countdowntimer 实现)
class mycountdowntimer extends countdowntimer { /** * @param millisinfuture * 表示以「 毫秒 」为单位倒计时的总数 * 例如 millisinfuture = 1000 表示1秒 * * @param countdowninterval * 表示 间隔 多少微秒 调用一次 ontick() * 例如: countdowninterval = 1000 ; 表示每 1000 毫秒调用一次 ontick() * */ public mycountdowntimer(long millisinfuture, long countdowninterval) { super(millisinfuture, countdowninterval); } public void onfinish() { mcountdowntextview.settext("0s 跳过"); } public void ontick(long millisuntilfinished) { mcountdowntextview.settext( millisuntilfinished / 1000 + "s 跳过"); } }
五、根据具体的业务逻辑完整实现
private textview mcountdowntextview; private mycountdowntimer mcountdowntimer; /** * created by keithxiaoy on 2017/06/07. */ @override public void oncreate(bundle savedinstancestate) { ... mcountdowntextview = (textview) findviewbyid(r.id.start_skip_count_down); //我司需求,在没有 banner 广告的时候一秒跳过开屏页,有 banner 广告的时候三秒跳过 if (preferencesfactory.getcommonpref().getboolean(commonpreferences.prefs_has_start_page_banner, false)) { mcountdowntextview.settext("3s 跳过"); //创建倒计时类 mcountdowntimer = new mycountdowntimer(3000, 1000); mcountdowntimer.start(); //这是一个 handler 里面的逻辑是从 splash 界面跳转到 main 界面,这里的逻辑每个公司基本上一致 tmphandler.postdelayed(runnable, 3000); } else { mcountdowntextview.settext("1s 跳过"); mcountdowntimer = new mycountdowntimer(1000, 1000); mcountdowntimer.start(); tmphandler.postdelayed(runnable, 1000); } }
六、注意事项(一定记得在界面销毁的时候将 countdowntimer 销毁)
@override protected void ondestroy() { if (mcountdowntimer != null) { mcountdowntimer.cancel(); } super.ondestroy(); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 百度市值是多少美金!
推荐阅读
-
Android开屏页倒计时功能实现的详细教程
-
destoon实现公司新闻详细页添加评论功能的方法
-
Android实现加载广告图片和倒计时的开屏布局
-
有关JS代码实现倒计时功能的教程
-
Android开发实现的ViewPager引导页功能(动态加载指示器)详解
-
微信公众号H5页面跳转至app的某个页面,如果手机内没有app,则进入下载页面功能的实现教程
-
Android使用OKhttp3实现登录注册功能+springboot搭建后端的详细过程
-
ANDROID倒计时功能的实现(COUNTDOWNTIMER)
-
如何用Android studio开发一个实现基本功能的新闻app?——简闻(源码及教程)
-
基于PHP实现用户登录注册功能的详细教程