android倒计时dialog,倒计时 Dialog
1. 效果
1.png
2. 调用方式
TimerDialogUtil.start(mContext, "message", TimerDialogUtil.ICON_SUCCESS, 5000, new TimerDialogUtil.OnTimerClickListener() {
@Override
public void finish() {
ToastUtils.showShort("here to do something ");
}
});
3. Code
包含两个文件,分别是:代码和页面
TimerDialogUtil.java
package com.ums.testapi;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.CountDownTimer;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Author:Created by Thorn on 2019/1/9
* Function: alert a CountDownTimer Dialog
*/
@SuppressWarnings("WeakerAccess")
public class TimerDialogUtil {
/**
* 三种图标状态
*/
public static final int ICON_SUCCESS = 0;
public static final int ICON_FAIL = 1;
public static final int ICON_WARN = 2;
/**
* @param context context
* @param message 文字描述
* @param iconType 图标类型
* @param timerCount 毫秒为单位
* @param onTimerClickListener listener
*/
public static void start(final Activity context, final String message, final int iconType, final int timerCount, final OnTimerClickListener onTimerClickListener) {
android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(context);
@SuppressLint("InflateParams") View view = LayoutInflater.from(context).inflate(R.layout.dialog_prompt, null);
builder.setView(view);
ImageView iv_icon = view.findViewById(R.id.iv_icon);
final TextView tv_message = view.findViewById(R.id.tv_message);
final TextView tv_confirm = view.findViewById(R.id.tv_confirm);
switch (iconType) {
case ICON_SUCCESS:
iv_icon.setImageResource(R.mipmap.ic_dialog_success);
break;
case ICON_FAIL:
iv_icon.setImageResource(R.mipmap.ic_dialog_error);
break;
case ICON_WARN:
iv_icon.setImageResource(R.mipmap.ic_dialog_warn);
break;
default:
iv_icon.setImageResource(R.mipmap.ic_dialog_warn);
break;
}
tv_message.setText(message);
builder.setCancelable(false);
final android.support.v7.app.AlertDialog dialog = builder.show();
final CountDownTimer countDownTimer = new CountDownTimer(timerCount, 1000) {
@SuppressLint({"DefaultLocale", "SetTextI18n"})
@Override
public void onTick(long millisUntilFinished) {
int remainTime = (int) (millisUntilFinished / 1000L);
tv_message.setText(message);
tv_confirm.setText("确定" + "(" + remainTime + "s)");
}
@Override
public void onFinish() {
if (dialog != null) {
dialog.cancel();
}
if (onTimerClickListener !=null) {
onTimerClickListener.finish();
}
}
};
countDownTimer.start();
tv_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (dialog != null) {
dialog.cancel();
}
//noinspection ConstantConditions
if (countDownTimer != null) {
countDownTimer.cancel();
}
if (onTimerClickListener !=null) {
onTimerClickListener.finish();
}
}
});
}
/**
* 默认倒计时,时间长度为 5 秒
*
* @param context context
* @param message 消息
* @param iconType 图标类型
* @param onTimerClickListener listener
*/
public static void start(final Activity context, final String message, final int iconType, final OnTimerClickListener onTimerClickListener) {
int timerCount = 5000;
start(context, message, iconType, timerCount, onTimerClickListener);
}
/**
* 点击接口类
*/
public interface OnTimerClickListener{
void finish();
}
}
dialog_prompt.xml
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:contentDescription="@string/app_name"
android:id="@+id/iv_icon"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp" />
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="支付成功"
android:textSize="18sp" />
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginTop="20sp"
android:background="@android:color/darker_gray" />
android:id="@+id/tv_confirm"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@android:color/white"
android:gravity="center"
android:text="确定"
android:textColor="@android:color/black"
android:textSize="18sp" />
android倒计时dialog,倒计时 Dialog相关推荐
- android 自定义dialog 定时关闭,Android编程实现自定义Dialog的大小自动控制方法示例...
本文实例讲述了Android编程实现自定义Dialog的大小自动控制方法.分享给大家供大家参考,具体如下: Android应用开发中,无论是出于功能还是增加用户体验,弹出对话框(Dialog)进行一些 ...
- Android开发之自定义dialog的实现(源代码分享)
使用系统自带的dialog如果不能满足我们日常开发的需求,那就得自己构建custom dialog,特别是对于一个app来说,统一的样式风格会给人一种舒服的感觉,所以dialog的样式 .色调一般都要 ...
- 如何让Android对话框全屏 Dialog 全屏
如何让一个对话框全屏对话框: <style name="Theme.Application.Dialog.Alert" parent="android:Theme. ...
- 【Android】Android 8种对话框(Dialog)
1.写在前面 Android提供了丰富的Dialog函数,本文介绍最常用的8种对话框的使用方法,包括普通(包含提示消息和按钮).列表.单选.多选.等待.进度条.编辑.自定义等多种形式,将在第2部分介绍 ...
- android倒计时功能,Android 实现列表倒计时功能
Android 实现列表倒计时功能 发布时间:2020-08-21 21:47:11 来源:脚本之家 阅读:147 作者:Choi晨 单个计时器,然后遍历数据 刷新条目: 两种实现方式:1.Handl ...
- Android开发之设置Dialog外部页透明的方法亲测可用
老套路先看默认的弹框 再看处理后透明的弹框 实现方法也很简单,只需要给dialog设置一个透明的主题,主题很重要! <style name="transparent_dialog&qu ...
- Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setCont ...
- android 酷炫倒计时,android 好用的倒计时
android倒计时 是在原有TextView的基础上进行二次开发的自定义View 效果图 这个主要是结合了android的CountDownTimer,这个一般就是发送短信的倒计时. 包含功能 倒计 ...
- 自定义圆形倒计时Android,Android自定义View倒计时圆
本文实例为大家分享了Android自定义View倒计时圆的具体代码,供大家参考,具体内容如下 创建attr 创建DisplayUtil 类 import android.content.Context ...
最新文章
- VC++ 判断点是否在线段上
- 蓝桥杯2015初赛试题
- 业务专题篇:用户增长分析
- fread、fwrite、fopen函数的简单使用和open、read、write区别解析
- 远程多台前置机连接服务器上配置作业,得到作业运行历史记录
- 20155235 信息安全技术概论 第二次实验报告
- 互联网产品需求管理思考1——统一需求管理
- django session过期设置
- LoadRunner教程(7)-LoadRunner 创建测试场景
- 关于java的面试题_JAVA面试题100问第一部分
- 数据结构个人电话号码查询系统实验报告
- VIBE:3D人体姿态预测项目复现笔记
- 旅游订票订酒店团购(APP,JAVA后台管理,MYSQL)
- 记一次Linux文件系统引发的项目启动错误(war包没有问题只有指定目录启动报错)
- (五)通过pygame搭建游戏框架
- MapReduce入门(一)—— MapReduce概述 + WordCount案例实操
- 2022 高教社杯全国大学生数学建模竞赛获奖名单(初稿)
- 基因注释-InterProScan
- 陈老师排课12A(普通新课表)排课方法
- 分享给有缘人——给明年依旧年轻的我们:欲望、外界、标签、天才、时间、人生目标、现实、懊悔、和经历...
热门文章
- APP分类及与web区别
- 【Mysql系列】如何实现王者荣耀排名
- 【AEC】【拍乐云Pano 】回声消除(AEC)怎么理解?
- 数据分析之Excel的基本功能(下)
- np.array数组的切片
- Redis订阅与发布原理
- 【深度学习】语义分割:论文阅读:(CVPR 2022) MPViT(CNN+Transformer):用于密集预测的多路径视觉Transformer
- 爱好-C语言秘钥产生器
- iphone 存图片和视频到iPhone相册
- h5获取android手机版本,Vue.js怎么获取手机系统型号、版本、浏览器类型