国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開屏頁倒計時功能實現的詳細教程

2019-12-12 02:43:22
字體:
來源:轉載
供稿:網友

最近我司產品提出了一個很常見的需求: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();  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿巴嘎旗| 三河市| 普洱| 白朗县| 安平县| 莆田市| 乐陵市| 油尖旺区| 石嘴山市| 会同县| 乐陵市| 开封市| 雷州市| 岑巩县| 大埔县| 玉田县| 满城县| 田阳县| 宿松县| 兴安盟| 元谋县| 法库县| 宁化县| 平舆县| 酉阳| 梅州市| 荔波县| 邯郸市| 互助| 寻甸| 措勤县| 贵阳市| 马尔康县| 岑巩县| 松滋市| 军事| 濮阳市| 米泉市| 新绛县| 临清市| 嘉祥县|