編輯:關於Android編程
前言
本文主要介紹的是短信驗證碼功能,這裡總結了兩種常用的方式,可以直接拿來使用。
看圖

計時器
說明:這裡的及時從10開始,是為了演示的時間不要等太長而修改的。
方法如下
1、第一種方式:Timer
/**
* Description:自定義Timer
* <p>
* Created by Mjj on 2016/12/4.
*/
public class TimeCount extends CountDownTimer {
private Button button;
//參數依次為總時長,和計時的時間間隔
public TimeCount(Button button, long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
this.button = button;
}
//計時過程顯示
@Override
public void onTick(long millisUntilFinished) {
String time = "(" + millisUntilFinished / 1000 + ")秒";
setButtonInfo(time, "#c1c1c1", false);
}
//計時完畢時觸發
@Override
public void onFinish() {
setButtonInfo("重新獲取", "#f95353", true);
}
/**
* 驗證按鈕在點擊前後相關設置
*
* @param content 要顯示的內容
* @param color 顏色值
* @param isClick 是否可點擊
*/
private void setButtonInfo(String content, String color, boolean isClick) {
button.setText(content);
button.setBackgroundColor(Color.parseColor(color));
button.setClickable(isClick);
}
}
說明:根據自己的需求,在這裡修改背景顏色和不同狀態顯示文字即可,在需要監聽的按鈕下直接調用new TimerCount(xxx,xxx,xxx).start()即可。
2、第二種方式:Handler
/**
* 第二種方式:使用Handler
* <p>
* 靜態內部類:避免內存洩漏
*/
private static class MyHandler extends Handler {
private final WeakReference<MainActivity> weakReference;
public MyHandler(MainActivity activity) {
weakReference = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
MainActivity activity = weakReference.get();
if (activity != null) {
switch (msg.what) {
case 0:
if (msg.arg1 == 0) {
btn2.setText("重新獲取");
btn2.setBackgroundColor(Color.parseColor("#f95353"));
btn2.setClickable(true);
} else {
btn2.setText("(" + msg.arg1 + ")秒");
btn2.setBackgroundColor(Color.parseColor("#c1c1c1"));
btn2.setClickable(false);
}
break;
}
}
}
}
/**
* 監聽按鈕下直接調用即可
*/
private void sendMessageClick() {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 59; i >= 0; i--) {
Message msg = myHandler.obtainMessage();
msg.arg1 = i;
myHandler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
說明:此種方式采用的handler實時接收消息來設置Button的狀態,對於消息的發送用的是sendMessage方式,也可以使用post方式。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定幫助,如果有疑問大家可以留言交流。
【Android UI】ListView的使用和簡單優化
ListView是每個app中都要使用的,所以今天我來總結下ListView的使用和一些簡單的優化。先看下運行效果:一、創建數據庫為了模擬數據,這裡將數據保存數據庫中,順
Android ListView滾動到底後自動加載數據
熟悉Android的朋友們都知道,不管是微博客戶端還是新聞客戶端,都離不開列表組件,可以說列表組件是Android數據展現方面最重要的組件,我們 今天就要講一講列表組件L
Android 自定義ScrollView ListView 體驗各種縱向滑動的需求
1、概述 群裡的一個哥們有個需求是這樣的:問題;主要功能就是:1、循環的一個滑動;2、每次滑動結束,保持每個Item的完整。然後我當時給他寫了個Demo,所
Android中跨進程通信
Android跨進程通信的功能,下面就讓我們具體地學習一下。在上篇文章中我們知道了,Service其實是運行在主線程裡的,如果直接在Service中處理一些耗時的邏輯,就