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

首頁 > 系統 > Android > 正文

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

2019-10-22 18:35:18
字體:
來源:轉載
供稿:網友

最近我司產品提出了一個很常見的需求:App 在開屏頁(Splash 界面) 需要加上一個 3s 倒計時按鈕,可以選擇看 3s 的廣告,或者點擊按鈕跳過廣告。

Android倒計時的開屏,android倒計時功能,Android開屏頁倒計時

一、布局實現(使用 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();  }

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江源县| 淮阳县| 塘沽区| 盐城市| 康定县| 淮阳县| 华蓥市| 安新县| 内乡县| 孙吴县| 沈丘县| 平定县| 鄂尔多斯市| 淅川县| 谷城县| 双流县| 河北区| 景泰县| 元阳县| 收藏| 恩施市| 堆龙德庆县| 怀仁县| 陆河县| 清水县| 潼关县| 都江堰市| 博白县| 萨迦县| 靖州| 平凉市| 三亚市| 乐安县| 光泽县| 达拉特旗| 泸西县| 赫章县| 万宁市| 惠东县| 广东省| 十堰市|