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

溫馨提示×

溫馨提示×

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

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

怎么在Android應用中利用View實現一個倒計時功能

發布時間:2020-12-03 16:14:55 來源:億速云 閱讀:219 作者:Leah 欄目:移動開發

這篇文章將為大家詳細講解有關怎么在Android應用中利用View實現一個倒計時功能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Android 自定義View實現倒計時

需求:

具體方法如下:

/** 
 * 通過selector選擇器來改變背景,其中倒計時運行時為android:state_enabled="true", 
 * 不顯示倒計時時為android:state_enabled="false"; 
 * */ 
public class CountDownView extends TextView { 
   
  private long totalMills = 10 * 1000;//倒計時的總時間,根據需要更改這個值 
  private long interval = 1000;//倒計時的時間間隔 
   
  public CountDownView(Context context) { 
    super(context); 
  } 
 
  public CountDownView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
  } 
 
  public CountDownView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
  } 
 
  private TimeCount mTimeCount; 
   
  private void startCount(long totalMills, long countDownInterval) { 
    if (mTimeCount == null) 
      mTimeCount = new TimeCount(totalMills, countDownInterval); 
    mTimeCount.start(); 
  } 
   
  public void start(){ 
    defaultText = getText().toString(); 
    startCount(totalMills, interval); 
  } 
 
  public void cancel() { 
    if (mTimeCount != null){ 
      mTimeCount.onFinish(); 
      mTimeCount.cancel(); 
    } 
  } 
 
  String defaultText = "";//獲取到在點擊之前的文本內容 
 
  class TimeCount extends CountDownTimer { 
 
    public TimeCount(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
    } 
 
    @Override 
    public void onTick(long millisUntilFinished) { 
      setEnabled(false); 
      setText(millisUntilFinished / 1000 + "S"); 
    } 
 
    @Override 
    public void onFinish() { 
      setEnabled(true); 
      setText(defaultText); 
    } 
 
  } 
 
} 

測試代碼:

public class MainActivity extends Activity implements OnClickListener { 
 
  private CountDownView mCountDownView; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
 
    mCountDownView = (CountDownView) findViewById(R.id.tv_1); 
     
    mCountDownView.setOnClickListener(this); 
    findViewById(R.id.tv_2).setOnClickListener(this); 
  } 
 
  int count = 0; 
  DemoThread thread; 
  @Override 
  public void onClick(View v) { 
     
    if(v.getId() == R.id.tv_1){ 
      mCountDownView.start(); 
      thread = new DemoThread(); 
      thread.start(); 
    } else if (v.getId() == R.id.tv_2) { 
      mCountDownView.cancel(); 
      System.out.println("wisely 取消倒計時"); 
    } 
  } 
   
  class DemoThread extends Thread{ 
    @Override 
    public void run() { 
      while (count < 10) { 
        SystemClock.sleep(100); 
        count++; 
        System.out.println("wisely count:" + count); 
      } 
    } 
  } 
} 

總結:

1、使用的時候,為該控件設置點擊事件,然后調用start()方法,剩下的就是你自己的代碼,一般都是聯網調接口。

2、獲取驗證碼的控件背景可以設置為selector選擇器,設置android:state_enabled屬性。上面例子的selector選擇器代碼如下:

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
   
  <item android:state_enabled="true" android:drawable="@color/green"/> 
  <item android:state_enabled="false" android:drawable="@color/red"/> 
 
</selector> 

3、在退出activity時,記得調用控件的cancel方法銷毀它,否則會造成內存泄露。

關于怎么在Android應用中利用View實現一個倒計時功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

仁化县| 吉水县| 靖州| 秦皇岛市| 德庆县| 泗阳县| 东台市| 霞浦县| 微山县| 榆树市| 岗巴县| 普兰店市| 囊谦县| 双辽市| 定边县| 邢台县| 独山县| 正镶白旗| 龙山县| 昭通市| 凌海市| 北票市| 赣榆县| 余江县| 张家港市| 衡阳县| 永城市| 盐源县| 梅州市| 双牌县| 南阳市| 吉安市| 都安| 杂多县| 潼南县| 金乡县| 乐平市| 南皮县| 泸州市| 康保县| 荣昌县|