Android dialog实现10s toast透传点击事件
时间: 2023-07-15 22:15:38 浏览: 96
要实现这个功能,你可以创建一个自定义的Dialog,然后在Dialog中添加一个倒计时计时器,当计时器结束时,触发dismiss()方法来关闭Dialog。
在Dialog中添加透传点击事件可以通过在Dialog的布局文件中添加一个Button,并在Dialog的代码中设置Button的点击事件。当用户点击Button时,触发相应的操作。
以下是一个示例代码,可以作为参考:
```
public class CustomDialog extends Dialog {
private TextView mTextView;
private Button mButton;
private CountDownTimer mCountDownTimer;
private OnCustomDialogClickListener mListener;
public interface OnCustomDialogClickListener {
void onCustomDialogClick();
}
public CustomDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.dialog_custom);
mTextView = findViewById(R.id.tv_countdown);
mButton = findViewById(R.id.btn_action);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onCustomDialogClick();
}
dismiss();
}
});
}
public void setOnCustomDialogClickListener(OnCustomDialogClickListener listener) {
mListener = listener;
}
public void startCountDown(long millisInFuture) {
mCountDownTimer = new CountDownTimer(millisInFuture, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mTextView.setText("倒计时 " + millisUntilFinished / 1000 + "s");
}
@Override
public void onFinish() {
dismiss();
}
};
mCountDownTimer.start();
}
@Override
public void dismiss() {
if (mCountDownTimer != null) {
mCountDownTimer.cancel();
}
super.dismiss();
}
}
```
然后在Activity中,你可以这样使用这个自定义Dialog:
```
CustomDialog dialog = new CustomDialog(this);
dialog.setOnCustomDialogClickListener(new CustomDialog.OnCustomDialogClickListener() {
@Override
public void onCustomDialogClick() {
// 处理点击事件
}
});
dialog.startCountDown(10000);
dialog.show();
```
阅读全文