最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 自定義View之倒計(jì)時(shí)實(shí)例代碼

 更新時(shí)間:2017年04月20日 14:14:16   投稿:lqh  
這篇文章主要介紹了Android 自定義View之倒計(jì)時(shí)實(shí)例代碼的相關(guān)資料,大多數(shù)app在注冊(cè)的時(shí)候,都有一個(gè)獲取驗(yàn)證碼的按鈕,點(diǎn)擊后,訪問接口,最終用戶會(huì)收到短信驗(yàn)證碼。為了不多次寫這個(gè)獲取驗(yàn)證碼的接口,下面將它自定義成一個(gè)view,方便使用,需要的朋友可以參考下

Android 自定義View之倒計(jì)時(shí)實(shí)例代碼

需求:

大多數(shù)app在注冊(cè)的時(shí)候,都有一個(gè)獲取驗(yàn)證碼的按鈕,點(diǎn)擊后,訪問接口,最終用戶會(huì)收到短信驗(yàn)證碼。為了不多次寫這個(gè)獲取驗(yàn)證碼的接口,下面將它自定義成一個(gè)view,方便使用。

分析一下,這是一個(gè)TextView,點(diǎn)擊的時(shí)候變色,不能再點(diǎn)擊,同時(shí)里面的倒計(jì)時(shí)開始顯示。那么就有了下面的代碼

代碼:

/** 
 * 通過selector選擇器來改變背景,其中倒計(jì)時(shí)運(yùn)行時(shí)為android:state_enabled="true", 
 * 不顯示倒計(jì)時(shí)時(shí)為android:state_enabled="false"; 
 * */ 
public class CountDownView extends TextView { 
   
  private long totalMills = 10 * 1000;//倒計(jì)時(shí)的總時(shí)間,根據(jù)需要更改這個(gè)值 
  private long interval = 1000;//倒計(jì)時(shí)的時(shí)間間隔 
   
  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 = "";//獲取到在點(diǎn)擊之前的文本內(nèi)容 
 
  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); 
    } 
 
  } 
 
} 

測(cè)試代碼:

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 取消倒計(jì)時(shí)"); 
    } 
  } 
   
  class DemoThread extends Thread{ 
    @Override 
    public void run() { 
      while (count < 10) { 
        SystemClock.sleep(100); 
        count++; 
        System.out.println("wisely count:" + count); 
      } 
    } 
  } 
} 

總結(jié):

1、使用的時(shí)候,為該控件設(shè)置點(diǎn)擊事件,然后調(diào)用start()方法,剩下的就是你自己的代碼,一般都是聯(lián)網(wǎng)調(diào)接口。

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

<?xml version="1.0" encoding="utf-8"?> 
<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時(shí),記得調(diào)用控件的cancel方法銷毀它,否則會(huì)造成內(nèi)存泄露。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Android中fragment+viewpager實(shí)現(xiàn)布局

    Android中fragment+viewpager實(shí)現(xiàn)布局

    這篇文章主要為大家詳細(xì)介紹了Android中fragment+viewpager實(shí)現(xiàn)布局效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Android Studio下的APP目錄結(jié)構(gòu)詳解

    Android Studio下的APP目錄結(jié)構(gòu)詳解

    這篇文章主要介紹了AndroidStudio下的APP目錄結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • android自定義開關(guān)控件-SlideSwitch的實(shí)例

    android自定義開關(guān)控件-SlideSwitch的實(shí)例

    本篇文章主要介紹了android自定義開關(guān)控件-SlideSwitch的實(shí)例,實(shí)現(xiàn)了手機(jī)控件開關(guān)的功能,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • Android實(shí)現(xiàn)左右滑動(dòng)切換圖片

    Android實(shí)現(xiàn)左右滑動(dòng)切換圖片

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)左右滑動(dòng)切換圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Android中Canvas的常用方法總結(jié)

    Android中Canvas的常用方法總結(jié)

    在Android自定義View的時(shí)候,我們經(jīng)常需要繪制一些自己想要的效果。這里就需要使用Canvas對(duì)象。下面這篇文章將Canvas對(duì)象常用方法做個(gè)筆記,方便自己和大家以后使用的時(shí)候查閱,下面來一起看看吧。
    2016-09-09
  • android連接wifi時(shí)獲取廣播地址代碼

    android連接wifi時(shí)獲取廣播地址代碼

    本文詳細(xì)介紹android連接wifi時(shí)獲取廣播地址的方法,需要了解的朋友可以參考下,獲取對(duì)你有所幫助
    2012-12-12
  • Android應(yīng)用自動(dòng)跳轉(zhuǎn)到應(yīng)用市場(chǎng)詳情頁面的方法

    Android應(yīng)用自動(dòng)跳轉(zhuǎn)到應(yīng)用市場(chǎng)詳情頁面的方法

    最近在工作中遇到一個(gè)需求,推廣部門要求實(shí)現(xiàn)應(yīng)用自動(dòng)跳轉(zhuǎn)到應(yīng)用市場(chǎng)詳情頁面,通過查找一些資料,實(shí)現(xiàn)出來了,覺得有必要整理下方便以后或者有需要的朋友們參考借鑒,下面來一起詳細(xì)看看Android應(yīng)用自動(dòng)跳轉(zhuǎn)到應(yīng)用市場(chǎng)詳情頁面的方法吧。
    2016-12-12
  • Android App如何防止抓包

    Android App如何防止抓包

    我們要知道常用的抓包方式有Charles和Fiddler,他們通過在手機(jī)網(wǎng)絡(luò)中添加代理的方式,拿到App的請(qǐng)求,這篇文章主要給大家介紹了關(guān)于Android中App如何防止抓包的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Android fragment 轉(zhuǎn)場(chǎng)動(dòng)畫創(chuàng)建步驟

    Android fragment 轉(zhuǎn)場(chǎng)動(dòng)畫創(chuàng)建步驟

    在 Android 中,可以使用 setCustomAnimations() 方法來繪制自定義的 Fragment 轉(zhuǎn)場(chǎng)動(dòng)畫,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Android畫個(gè)時(shí)鐘玩玩

    Android畫個(gè)時(shí)鐘玩玩

    這篇文章主要向大家介紹了Android畫時(shí)鐘的方法,內(nèi)容很詳細(xì),分享了每一個(gè)制作步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評(píng)論

韶山市| 泰宁县| 陆河县| 剑川县| 从江县| 沛县| 安宁市| 义马市| 华阴市| 台山市| 葫芦岛市| 古浪县| 邵阳市| 乐山市| 嘉兴市| 吉水县| 沅陵县| 刚察县| 错那县| 开原市| 铁岭市| 正定县| 景东| 金坛市| 丰台区| 雅安市| 永宁县| 徐州市| 苍山县| 彰化县| 齐齐哈尔市| 五寨县| 佳木斯市| 舞阳县| 民县| 汝州市| 潞城市| 沈阳市| 吉林市| 忻州市| 西宁市|