亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android封裝實現(xiàn)短信驗證碼的獲取倒計時

 更新時間:2023年03月12日 09:43:32   作者:萌動小彩筆  
這篇文章主要介紹了Android封裝實現(xiàn)短信驗證碼的獲取倒計時,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

如圖所示的效果相信大家都不陌生,我們可以使用很多種方法去實現(xiàn)此效果,這里自己采用CountDownTimer定時器簡單封裝下此效果,方便我們隨時調(diào)用。

首頁先在attrs.xml中定義下所需的幾個屬性:

<resources>
    <declare-styleable name="CountDownButton">
        <attr name="millisinfuture" format="integer"/>
        <attr name="countdowninterva" format="integer"/>
        <attr name="normalColor" format="color"/>
        <attr name="countDownColor" format="color"/>
    </declare-styleable>
</resources>

下面是實現(xiàn)的具體代碼,很簡單的一種方式,通俗易懂:

/**
 * Created by xiaolong on 2018/1/12.
 */
@SuppressLint("AppCompatCustomView")
public class CountDownButton extends Button{
    //總時長
    private long millisinfuture;
    //間隔時長
    private long countdowninterva;
    //默認(rèn)背景顏色
    private int normalColor;
    //倒計時 背景顏色
    private int countDownColor;
    //是否結(jié)束
    private boolean isFinish;
    //定時器
    private CountDownTimer countDownTimer;
    public CountDownButton(Context context) {
        this(context,null);
    }
    public CountDownButton(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }
    public CountDownButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CountDownButton,defStyleAttr,0);
        //設(shè)置默認(rèn)時長
        millisinfuture = (long) typedArray.getInt(R.styleable.CountDownButton_millisinfuture,60000);
        //設(shè)置默認(rèn)間隔時長
        countdowninterva = (long)typedArray.getInt(R.styleable.CountDownButton_countdowninterva,1000);
        //設(shè)置默認(rèn)背景色
        normalColor = typedArray.getColor(R.styleable.CountDownButton_normalColor,android.R.color.holo_blue_light);
        //設(shè)置默認(rèn)倒計時 背景色
        countDownColor = typedArray.getColor(R.styleable.CountDownButton_countDownColor,android.R.color.darker_gray);
        typedArray.recycle();
        //默認(rèn)為已結(jié)束狀態(tài)
        isFinish = true;
        //字體居中
        setGravity(Gravity.CENTER);
        //默認(rèn)文字和背景色
        normalBackground();
        //設(shè)置定時器
        countDownTimer = new CountDownTimer(millisinfuture, countdowninterva) {
            @Override
            public void onTick(long millisUntilFinished) {
                //未結(jié)束
                isFinish = false;
                setText((Math.round((double) millisUntilFinished / 1000) - 1) + "秒");
                setBackgroundResource(countDownColor);
            }
            @Override
            public void onFinish() {
                //結(jié)束
                isFinish = true;
                normalBackground();
            }
        };
    }
    private void normalBackground(){
        setText("獲取驗證碼");
        setBackgroundResource(normalColor);
    }
    public boolean isFinish() {
        return isFinish;
    }
    public void cancel(){
        countDownTimer.cancel();
    }
    public void start(){
        countDownTimer.start();
    }
}

一個簡單的調(diào)用方式:

public class MainActivity extends AppCompatActivity {
    private CountDownButton countDownButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        countDownButton = ((CountDownButton) findViewById(R.id.countDownButton));
        countDownButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //這里判斷是否倒計時結(jié)束,避免在倒計時時多次點擊導(dǎo)致重復(fù)請求接口
                if (countDownButton.isFinish()) {
                    //發(fā)送驗證碼請求成功后調(diào)用
                    countDownButton.start();
                }
            }
        });
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (!countDownButton.isFinish()) {
            countDownButton.cancel();
        }
    }
}

這樣一個簡單的封裝就結(jié)束了,過程很簡單。這里主要是對CountDownTimer的使用練習(xí),之前工作中一直沒有接觸過這個類。傳送門

到此這篇關(guān)于Android封裝實現(xiàn)短信驗證碼的獲取倒計時的文章就介紹到這了,更多相關(guān)Android封裝倒計時內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android使用Rotate3dAnimation實現(xiàn)3D旋轉(zhuǎn)動畫效果的實例代碼

    Android使用Rotate3dAnimation實現(xiàn)3D旋轉(zhuǎn)動畫效果的實例代碼

    利用Android的ApiDemos的Rotate3dAnimation實現(xiàn)了個圖片3D旋轉(zhuǎn)的動畫,圍繞Y軸進行旋轉(zhuǎn),還可以實現(xiàn)Z軸的縮放。點擊開始按鈕開始旋轉(zhuǎn),點擊結(jié)束按鈕停止旋轉(zhuǎn)。
    2018-05-05
  • Android 下載網(wǎng)絡(luò)圖片并顯示到本地

    Android 下載網(wǎng)絡(luò)圖片并顯示到本地

    本文主要介紹了Android實現(xiàn)下載網(wǎng)絡(luò)圖片并顯示到本地功能的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • Android 中ThreadLocal的深入理解

    Android 中ThreadLocal的深入理解

    這篇文章主要介紹了Android 中ThreadLocal的深入理解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解應(yīng)用ThreadLocal,需要的朋友可以參考下
    2017-09-09
  • Android 極光推送別名與標(biāo)簽方式

    Android 極光推送別名與標(biāo)簽方式

    這篇文章主要介紹了Android 極光推送別名與標(biāo)簽方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android實現(xiàn)圖片瀏覽并改變透明度

    Android實現(xiàn)圖片瀏覽并改變透明度

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圖片瀏覽并改變透明度,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Flutter實現(xiàn)Android滾動懸浮效果過程

    Flutter實現(xiàn)Android滾動懸浮效果過程

    這篇文章主要介紹了Flutter實現(xiàn)Android滾動懸浮效果,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • Android通知欄增加快捷開關(guān)的功能實現(xiàn)教程

    Android通知欄增加快捷開關(guān)的功能實現(xiàn)教程

    對于Android來說其中一項很方便的操作便是下拉菜單,下拉菜單欄可以快捷打開某項設(shè)置,這篇文章主要給大家介紹了關(guān)于Android通知欄增加快捷開關(guān)的功能實現(xiàn),需要的朋友可以參考下
    2023-01-01
  • Android編程中的5種數(shù)據(jù)存儲方式

    Android編程中的5種數(shù)據(jù)存儲方式

    這篇文章主要介紹了Android編程中的5種數(shù)據(jù)存儲方式,結(jié)合實例形式詳細分析了Android實現(xiàn)數(shù)據(jù)存儲的5中實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-12-12
  • Android序列化接口Parcelable與Serializable接口對比

    Android序列化接口Parcelable與Serializable接口對比

    我們使用 Intent 傳遞數(shù)據(jù)的時候,putExtra() 所支持的數(shù)據(jù)類型事有限的,當(dāng)需要傳遞自定義對象的時候就需要序列化。Serializable更簡單但是會把整個對象進行序列化因此效率比Parcelable低一些
    2023-02-02
  • Android自定義ViewPager實現(xiàn)縱向滑動翻頁效果

    Android自定義ViewPager實現(xiàn)縱向滑動翻頁效果

    這篇文章主要為大家詳細介紹了Android自定義ViewPager實現(xiàn)縱向滑動翻頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論