中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用實例代碼詳解Android中倒計時控件CountDownView

發布時間:2020-07-21 11:34:26 來源:億速云 閱讀:174 作者:小豬 欄目:移動開發

小編這次要給大家分享的是用實例代碼詳解Android中倒計時控件CountDownView,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

一個精簡可自定義的倒計時控件,使用 Canvas.drawArc() 繪制。實現了應用開屏頁的圓環掃過的進度條效果。

代碼見https://github.com/hanjx-dut/CountDownView

使用

allprojects {
 repositories {
  ...
  maven { url 'https://jitpack.io' }
 }
}

dependencies {
 implementation 'com.github.hanjx-dut:CountDownView:1.1'
}

實現的效果

效果圖

用實例代碼詳解Android中倒計時控件CountDownView

對應的view:

 <com.hanjx.ui.CountDownView
  android:id="@+id/count_down_1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  app:auto_start="true"
  app:text_mode="time_variant"
  app:duration="3000"
  app:paint_stroke="3dp"/>

 <com.hanjx.ui.CountDownView
  android:id="@+id/count_down_2"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  app:finished_color="#000000"
  app:auto_start="true"
  app:start_angle="90"
  app:text_mode="time_variant"
  app:duration="3000"
  app:paint_stroke="3dp"/>

 <com.hanjx.ui.CountDownView
  android:id="@+id/count_down_3"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  app:finished_color="#FF0000"
  app:unfinished_color="#00FF00"
  app:auto_start="true"
  app:duration="2000"
  app:refresh_interval="quick"
  app:text="跳過"
  app:text_size="12sp"
  app:text_color="#FF0000"
  app:text_mode="fixed"
  app:paint_stroke="2dp"/>

 <com.hanjx.ui.CountDownView
  android:id="@+id/count_down_4"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  app:auto_start="true"
  app:text_mode="fixed"
  app:clockwise="false"
  app:text=""
  app:duration="2000"
  app:paint_stroke="3dp"/>

 <com.hanjx.ui.CountDownView
  android:id="@+id/count_down_5"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  app:text_mode="time_variant"
  app:duration="5000"
  app:paint_stroke="1.5dp"/>

全部屬性:

<declare-styleable name="CountDownView">
  <attr name="duration" format="integer"/> <!-- 總時間 -->
  <attr name="refresh_interval"> <!-- 刷新間隔 ms -->
   <enum name="normal" value="16"/>
   <enum name="quick" value="11"/>
   <enum name="slow" value="20"/>
  </attr>
  <attr name="paint_stroke" format="dimension"/> <!-- 圓環寬度 -->
  <attr name="finished_color" format="color"/> <!-- 掃過完成的顏色 -->
  <attr name="unfinished_color" format="color"/> <!-- 未完成的顏色 -->
  <attr name="start_angle" format="float"/> <!-- 起始角度 默認 -90 即頂部 -->
  <attr name="clockwise" format="boolean"/> <!-- 順時針 默認 true -->
  <attr name="auto_start" format="boolean"/> <!-- 自動開始 默認 false -->

  <!-- 文字 -->
  <attr name="text" format="string"/> <!-- 設置文字 -->
  <attr name="text_mode"> <!-- 文字模式 固定 / 隨時間倒數(默認)-->
   <enum name="fixed" value="0"/>
   <enum name="time_variant" value="1"/>
  </attr>
  <attr name="text_size" format="dimension"/> <!-- 文字尺寸 -->
  <attr name="text_color" format="color"/> <!-- 文字顏色 -->
 </declare-styleable>

文字部分沒有提供更多的自定義屬性,可以通過 setTextDrawer()對畫筆和文字進行自定義,如 demo 中的第五個:

CountDownView countDownView = findViewById(R.id.count_down_5);
countDownView.setTextDrawer(new CountDownView.TextDrawer() {
 @Override
 public void setTextPaint(Paint paint, long leftTime, int textMode) {
  if (leftTime < 2000) {
   paint.setTextSize(SizeUtils.sp2px(12));
  }
  paint.setTypeface(Typeface.DEFAULT_BOLD);
  paint.setColor(0xFFFF802E);
 }

 @Override
 public String getText(long leftTime, int mode, String originText) {
  if (leftTime < 2000) {
   return "跳過";
  }
  return String.format("%ss", leftTime == 0 &#63; leftTime : leftTime / 1000 + 1);
 }
});

監聽

countDownView.setCountDownListener(new CountDownView.CountDownListener() {
 @Override
 public void onTick(long leftTime, float finishedAngle) {
  // leftTime: 剩余時間, finishedAngle: 掃過的角度
 }

 @Override
 public void onStop(boolean reset) {
  // 主動調用 countDownView.stop() 時會觸發此回調
 }

 @Override
 public void onFinished() {

 }
});

ps:接口都有默認實現,可以選擇實現任意方法

看完這篇關于用實例代碼詳解Android中倒計時控件CountDownView的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤阳县| 德钦县| 瑞昌市| 出国| 寿阳县| 苗栗市| 天峻县| 湖口县| 松江区| 吴堡县| 平遥县| 同德县| 缙云县| 南昌市| 富顺县| 两当县| 通渭县| 和田市| 厦门市| 横峰县| 全南县| 勃利县| 达拉特旗| 道孚县| 阳春市| 当涂县| 赤峰市| 阜城县| 改则县| 邛崃市| 青阳县| 东乡| 普宁市| 时尚| 兴仁县| 闻喜县| 尼玛县| 颍上县| 广水市| 扶风县| 阜城县|