时间:2021-05-20
最近我司产品提出了一个很常见的需求: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(); }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
CountDownTimerCountDownTimer是android自带的一个倒计时类,使用这个类可以很简单的实现倒计时功能CountDownTimer的实
在Android中倒计时功能是比较常用的一个功能,比如短信验证码,付款倒计时等。实现方式有Handler、Thread等,但是实现起来都有点麻烦,其实Andro
前言在开发中会经常用到倒计时这个功能,关于倒计时的实现,有疑问的朋友们可以参考这篇:本文主要给大家介绍了关于Android倒计时结束跳转页面的相关内容,分享出来
python实现windows倒计时锁屏功能#倒计时锁屏importtimefromctypesimport*defclosewindows(closetime
前言倒计时功能在游戏中一直很重要,不管是活动开放时间,还是技能冷却。本文实现了一个通用倒计时组件,实现了倒计时的基本功能,支持倒计时结束后的回调。设计思路1、倒