返回顶部
首页 > 资讯 > 精选 >Android封装怎么实现短信验证码的获取倒计时
  • 954
分享到

Android封装怎么实现短信验证码的获取倒计时

2023-07-05 11:07:19 954人浏览 独家记忆
摘要

今天小编给大家分享一下Android封装怎么实现短信验证码的获取倒计时的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如图所示

今天小编给大家分享一下Android封装怎么实现短信验证码的获取倒计时的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Android封装怎么实现短信验证码的获取倒计时

如图所示的效果相信大家都不陌生,我们可以使用很多种方法去实现此效果,这里自己采用CountDownTimer定时器简单封装下此效果,方便我们随时调用。

首页先在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>

下面是实现的具体代码,很简单的一种方式,通俗易懂:

@SuppressLint("AppCompatCustomView")public class CountDownButton extends Button{    //总时长    private long millisinfuture;    //间隔时长    private long countdowninterva;    //默认背景颜色    private int normalColor;    //倒计时 背景颜色    private int countDownColor;    //是否结束    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);        //设置默认时长        millisinfuture = (long) typedArray.getInt(R.styleable.CountDownButton_millisinfuture,60000);        //设置默认间隔时长        countdowninterva = (long)typedArray.getInt(R.styleable.CountDownButton_countdowninterva,1000);        //设置默认背景色        normalColor = typedArray.getColor(R.styleable.CountDownButton_normalColor,android.R.color.holo_blue_light);        //设置默认倒计时 背景色        countDownColor = typedArray.getColor(R.styleable.CountDownButton_countDownColor,android.R.color.darker_gray);        typedArray.recycle();        //默认为已结束状态        isFinish = true;        //字体居中        setGravity(Gravity.CENTER);        //默认文字和背景色        normalBackground();        //设置定时器        countDownTimer = new CountDownTimer(millisinfuture, countdowninterva) {            @Override            public void onTick(long millisUntilFinished) {                //未结束                isFinish = false;                setText((Math.round((double) millisUntilFinished / 1000) - 1) + "秒");                setBackgroundResource(countDownColor);            }            @Override            public void onFinish() {                //结束                isFinish = true;                normalBackground();            }        };    }    private void normalBackground(){        setText("获取验证码");        setBackgroundResource(normalColor);    }    public boolean isFinish() {        return isFinish;    }    public void cancel(){        countDownTimer.cancel();    }    public void start(){        countDownTimer.start();    }}

一个简单的调用方式:

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) {                //这里判断是否倒计时结束,避免在倒计时时多次点击导致重复请求接口                if (countDownButton.isFinish()) {                    //发送验证码请求成功后调用                    countDownButton.start();                }            }        });    }    @Override    protected void onDestroy() {        super.onDestroy();        if (!countDownButton.isFinish()) {            countDownButton.cancel();        }    }}

以上就是“Android封装怎么实现短信验证码的获取倒计时”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Android封装怎么实现短信验证码的获取倒计时

本文链接: https://lsjlt.com/news/351415.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作