Android 开屏页倒计时功能实现的详细教程 您所在的位置:网站首页 倒计时广告设计效果图怎么做 Android 开屏页倒计时功能实现的详细教程

Android 开屏页倒计时功能实现的详细教程

2024-06-28 22:07| 来源: 网络整理| 查看: 265

未经本人授权,不得转载!否则必将维权到底

最近我司产品提出了一个很常见的需求:App 在开屏页(Splash 界面) 需要加上一个 3s 倒计时按钮,可以选择看 3s 的广告,或者点击按钮跳过广告。

效果图.jpg

#####一、布局实现(使用 FrameLayout 悬浮在广告的右上角,显示倒计时的 TextView 的宽高尽量不要写死,要考虑字体很多的情况!!)

#####二、TextView 背景的 @drawable/bg_start_page_circle 用系统 shape 实现,不需要 UI 帮我们切图

#####三、在 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(); }

开屏页是一个很使用的小需求,我做这个需求的时候,查阅其他的博客,复制的别人的代码,直接跑不通,还报了个稀奇古怪的 bug ,耽误我好一会儿。所以写下此博客供后人方便,有需要的就取走吧。如果觉得对你有帮助,记得点个赞哦~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有