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相关推荐

  1. android 自定义dialog 定时关闭,Android编程实现自定义Dialog的大小自动控制方法示例...

    本文实例讲述了Android编程实现自定义Dialog的大小自动控制方法.分享给大家供大家参考,具体如下: Android应用开发中,无论是出于功能还是增加用户体验,弹出对话框(Dialog)进行一些 ...

  2. Android开发之自定义dialog的实现(源代码分享)

    使用系统自带的dialog如果不能满足我们日常开发的需求,那就得自己构建custom dialog,特别是对于一个app来说,统一的样式风格会给人一种舒服的感觉,所以dialog的样式 .色调一般都要 ...

  3. 如何让Android对话框全屏 Dialog 全屏

    如何让一个对话框全屏对话框: <style name="Theme.Application.Dialog.Alert" parent="android:Theme. ...

  4. 【Android】Android 8种对话框(Dialog)

    1.写在前面 Android提供了丰富的Dialog函数,本文介绍最常用的8种对话框的使用方法,包括普通(包含提示消息和按钮).列表.单选.多选.等待.进度条.编辑.自定义等多种形式,将在第2部分介绍 ...

  5. android倒计时功能,Android 实现列表倒计时功能

    Android 实现列表倒计时功能 发布时间:2020-08-21 21:47:11 来源:脚本之家 阅读:147 作者:Choi晨 单个计时器,然后遍历数据 刷新条目: 两种实现方式:1.Handl ...

  6. Android开发之设置Dialog外部页透明的方法亲测可用

    老套路先看默认的弹框 再看处理后透明的弹框 实现方法也很简单,只需要给dialog设置一个透明的主题,主题很重要! <style name="transparent_dialog&qu ...

  7. Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析

    [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setCont ...

  8. android 酷炫倒计时,android 好用的倒计时

    android倒计时 是在原有TextView的基础上进行二次开发的自定义View 效果图 这个主要是结合了android的CountDownTimer,这个一般就是发送短信的倒计时. 包含功能 倒计 ...

  9. 自定义圆形倒计时Android,Android自定义View倒计时圆

    本文实例为大家分享了Android自定义View倒计时圆的具体代码,供大家参考,具体内容如下 创建attr 创建DisplayUtil 类 import android.content.Context ...

最新文章

  1. VC++ 判断点是否在线段上
  2. 蓝桥杯2015初赛试题
  3. 业务专题篇:用户增长分析
  4. fread、fwrite、fopen函数的简单使用和open、read、write区别解析
  5. 远程多台前置机连接服务器上配置作业,得到作业运行历史记录
  6. 20155235 信息安全技术概论 第二次实验报告
  7. 互联网产品需求管理思考1——统一需求管理
  8. django session过期设置
  9. LoadRunner教程(7)-LoadRunner 创建测试场景
  10. 关于java的面试题_JAVA面试题100问第一部分
  11. 数据结构个人电话号码查询系统实验报告
  12. VIBE:3D人体姿态预测项目复现笔记
  13. 旅游订票订酒店团购(APP,JAVA后台管理,MYSQL)
  14. 记一次Linux文件系统引发的项目启动错误(war包没有问题只有指定目录启动报错)
  15. (五)通过pygame搭建游戏框架
  16. MapReduce入门(一)—— MapReduce概述 + WordCount案例实操
  17. 2022 高教社杯全国大学生数学建模竞赛获奖名单(初稿)
  18. 基因注释-InterProScan
  19. 陈老师排课12A(普通新课表)排课方法
  20. 分享给有缘人——给明年依旧年轻的我们:欲望、外界、标签、天才、时间、人生目标、现实、懊悔、和经历...

热门文章

  1. APP分类及与web区别
  2. 【Mysql系列】如何实现王者荣耀排名
  3. 【AEC】【拍乐云Pano 】回声消除(AEC)怎么理解?
  4. 数据分析之Excel的基本功能(下)
  5. np.array数组的切片
  6. Redis订阅与发布原理
  7. 【深度学习】语义分割:论文阅读:(CVPR 2022) MPViT(CNN+Transformer):用于密集预测的多路径视觉Transformer
  8. 爱好-C语言秘钥产生器
  9. iphone 存图片和视频到iPhone相册
  10. h5获取android手机版本,Vue.js怎么获取手机系统型号、版本、浏览器类型