倒计时,dialog上显示倒计时,如果不点击dialog,倒计时结束后自动跳转

首先在strings.xml文件里定义

// 整数用 %d 字符串用 %s
<string name="prompt">"提示"</string>
<string name="the_video_is_removed">"该视频已被移除"</string>
< string name =" R.string.back_list_num " formatted="false"> %d 返回播放列表 </ string >

/*如果你string里面有%在编译的时候它会格式化数据  这样的话%就是错误的 你必须用%%这样它格式化后就是一个%  
或者加转义字符 这样的话编译就不会出错了  
如果你加了 formatted="false"的话 就是告诉编译的时候不用格式化 直接用自己写的字符 这样的话一个%就不会报错了*/

private void dialog(){
    AlertDialog.Builder builder=new AlertDialog.Builder(this.getActivity());
    builder.setTitle(R.string.prompt);
    builder.setMessage(R.string.the_video_is_removed);
    builder.setNegativeButton(R.string.back_list_num,new DialogInterface.OnClickListener() {
        @Override 
        public void onClick(DialogInterface dialog,int which) { 
         dialog.dismiss(); 
         timer.cancel();//取消倒计时
        }
    });
    mDialog=builder.create();
    mDialog.show(); 
    timer.start();
}

CountDownTimer timer= new CountDownTimer(6000,1000) {
    @Override
    public void onTick(long arg0) {
        int thetime=(int) (arg0/1000);
        if(mDialog!=null){
        mDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText(getString(R.string.back_list_num, thetime));
        }
    }


    @Override
    public void onFinish() {
        if(mDialog!=null){
            mDialog.dismiss();
        }
    }
};


转载于:https://my.oschina.net/u/2531348/blog/612580

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的带倒计时的 loading dialog 的示例代码,你可以参考一下: ```java public class LoadingDialog extends Dialog { private TextView tvMessage; private ProgressBar progressBar; private CountDownTimer countDownTimer; private OnTimeOutListener onTimeOutListener; private static final long DEFAULT_TIMEOUT = 5000; // 默认超时时间为5秒 public LoadingDialog(Context context) { super(context); init(); } public LoadingDialog(Context context, int themeResId) { super(context, themeResId); init(); } protected LoadingDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { super(context, cancelable, cancelListener); init(); } private void init() { setContentView(R.layout.dialog_loading); tvMessage = findViewById(R.id.tv_message); progressBar = findViewById(R.id.progress_bar); setCancelable(false); } /** * 设置消息文本 * * @param message 消息文本 */ public void setMessage(String message) { tvMessage.setText(message); } /** * 设置超时时间 * * @param timeout 超时时间,单位毫秒 */ public void setTimeout(long timeout) { if (countDownTimer != null) { countDownTimer.cancel(); } countDownTimer = new CountDownTimer(timeout, 1000) { @Override public void onTick(long millisUntilFinished) { // 显示剩余时间 tvMessage.setText("距离超时还有 " + millisUntilFinished / 1000 + " 秒"); } @Override public void onFinish() { // 超时回调 if (onTimeOutListener != null) { onTimeOutListener.onTimeOut(); } dismiss(); } }; countDownTimer.start(); } /** * 设置超时监听器 * * @param listener 超时监听器 */ public void setOnTimeOutListener(OnTimeOutListener listener) { onTimeOutListener = listener; } public interface OnTimeOutListener { void onTimeOut(); } } ``` layout/dialog_loading.xml 文件内容如下: ```xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <ProgressBar android:id="@+id/progress_bar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:indeterminate="true" /> <TextView android:id="@+id/tv_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/progress_bar" android:layout_centerHorizontal="true" android:layout_marginTop="16dp" android:textColor="@android:color/black" android:textSize="14sp" /> </RelativeLayout> ``` 使用时,可以像这样: ```java LoadingDialog dialog = new LoadingDialog(this); dialog.setMessage("正在加载,请稍后..."); dialog.show(); dialog.setTimeout(10000); // 设置超时时间为10秒 dialog.setOnTimeOutListener(new LoadingDialog.OnTimeOutListener() { @Override public void onTimeOut() { // 处理超时事件 Toast.makeText(MainActivity.this, "加载超时", Toast.LENGTH_SHORT).show(); } }); ``` 当超时时间到达时,会自动触发 onTimeOut() 方法,可以在该方法中处理超时事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值