自定义Button之实现点击按钮实现倒计时功能

  1. 其实,实现倒计时功能非常容易,因为Android已经将该功能封装好了我们只要使用就可以了因为简单我这里也不多说直接上代码,
    在自定义VIew中我继承Button
public class CountDownTimerButton extends Button {
    // 总倒计时时间
    private static final long millisInFuture = 60 * 1000;
    // 每次减去1秒
    private static final long countDownInterval = 1000;
    public CountDownTimerButton(Context context) {
        this(context, null);
    }

    public CountDownTimerButton(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public CountDownTimerButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

    }

    public void startTiming(){
        // 设置按钮为不可点击,并修改显示背景
        setEnabled(false);
        setBackgroundResource(R.drawable.mine_button_shape);
        // 开始倒计时
        new CountDownTimer( millisInFuture, countDownInterval){

            @Override
            public void onTick(long millisUntilFinished) {
                setText(millisUntilFinished/countDownInterval+"秒");
            }

            @Override
            public void onFinish() {
                // 重置文字,并恢复按钮为可点击
                setText("重新发送");
                setEnabled(true);
                setBackgroundResource(R.drawable.button_bg_selected);
            }
        }.start();
    }
}

代码非常简单里面都有注释
下面是布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
   >

    <com.example.as.myview.CountDownTimerButton
        android:id="@+id/myView"
        android:layout_width="68dp"
        android:layout_height="33dp"
        android:background="#FFA21212"
        android:gravity="center"
        android:text="点击获取"
        android:textColor="#fff"
        android:textSize="10sp" />
</RelativeLayout>

Activity中使用方法

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     final CountDownTimerButton myView = (CountDownTimerButton) findViewById(R.id.myView);
        myView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myView.startTiming();
            }
        });
    }
}

是不是非常简单它主要使用了Android内部的一个类CountDownTimer里面需要两个参数第一个是总时间第二个是每次变化的时间数

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值