您好,登錄后才能下訂單哦!
最近我司產品提出了一個很常見的需求: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(); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。