国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 交口县| 岐山县| 习水县| 竹山县| 海宁市| 宜兰县| 韶山市| 阳高县| 封丘县| 白河县| 贵溪市| 沅江市| 马鞍山市| 昌平区| 鄂伦春自治旗| 榆林市| 乳源| 比如县| 陆良县| 天等县| 龙川县| 开平市| 凉城县| 从江县| 新巴尔虎左旗| 涿州市| 辽阳市| 满洲里市| 钦州市| 黄梅县| 邵东县| 兴城市| 宿迁市| 胶南市| 浪卡子县| 嘉定区| 县级市| 福鼎市| 元阳县| 渝中区| 金堂县|