Android開屏頁倒計時功能實現的詳細教程
最近我司產品提出了一個很常見的需求: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 用系統(tǒng) 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 系統(tǒng)原生的倒計時控件 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 跳過");
}
}
五、根據具體的業(yè)務邏輯完整實現
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 跳過");
//創(chuàng)建倒計時類
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獲取RecyclerView滑動距離方法詳細講解
RecyclerView是Android一個更強大的控件,其不僅可以實現和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實現數據縱向滾動,也可以實現橫向滾動(ListView做不到橫向滾動)。接下來講解RecyclerView的用法2023-01-01
關于Android內存緩存LruCache的使用及其源碼解析
LruCache作為內存緩存,使用強引用方式緩存有限個數據,當緩存的某個數據被訪問時,它就會被移動到隊列的頭部,本文詳細介紹了關于Android內存緩存LruCache的使用及其源碼解析,需要的朋友可以參考下2023-05-05
Android開發(fā)之開關按鈕控件ToggleButton簡單用法示例
這篇文章主要介紹了Android開發(fā)之開關按鈕控件ToggleButton簡單用法,結合實例形式分析了Android開關按鈕控件ToggleButton的相關xml布局與調用操作技巧,需要的朋友可以參考下2017-12-12
Android開發(fā)之ListView的簡單用法及定制ListView界面操作示例
這篇文章主要介紹了Android開發(fā)之ListView的簡單用法及定制ListView界面操作,結合實例形式分析了Android ListView界面布局相關操作技巧,需要的朋友可以參考下2019-04-04
Android BroadcastReceiver實現網絡狀態(tài)實時監(jiān)聽
這篇文章主要為大家詳細介紹了Android BroadcastReceiver實現網絡狀態(tài)實時監(jiān)聽,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05

