1.需求

弹出提示的dialog,实现倒计时,结束后关闭dialog

2.dialog界面布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="500dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/counter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/greater_magrin_space"
android:gravity="center"
android:text="10s"
android:textSize="@dimen/content_text_size_standard"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/greater_magrin_space"
android:gravity="center"
android:text="@string/title_sale"
android:textSize="@dimen/content_text_size_standard"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/content_header_space"
android:gravity="center"
android:text="@string/processing"
android:textSize="@dimen/content_text_size_standard"/>
<TextView
android:layout_width="match_parent"
android:layout_height="@dimen/greater_magrin_space" /> </LinearLayout>

3.AndroidManifest.xml文件设置

<activity android:name=".ProcessingDialogActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light.Dialog.NoActionBar"
android:screenOrientation="portrait"/>

4.ProcessingDialogActivity实现

另开一个线程实现倒计时功能不占用UI线程

public class ProcessingDialogActivity extends Activity{
private TextView counter;
private int count = 10;
private boolean isEnd = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_processingdialog); counter = (TextView)findViewById(R.id.counter);
new Thread(new CounterThread()).start();
}
Handler handler = new Handler(){
public void handleMessage(Message message){
switch (message.what){
case 0:
if (count == 0){
finish();
}
counter.setText(String.valueOf(count)+"s");
break;
default:
break;
}
}
};
public class CounterThread implements Runnable{
@Override
public void run(){
while (!isEnd){
try {
Thread.sleep(1000);
count--;
if (count < 1){
isEnd = true;
}
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
}catch (Exception e){
e.printStackTrace();
}
}
}
}
}
效果如下图
aaarticlea/png;base64,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" alt="" />

Android中实现倒计时的更多相关文章

  1. Android中的倒计时实现

    一.android.os包下提供了倒计时的抽象工具类: public abstract class CountDownTimer { /** * Millis since epoch when ala ...

  2. Android开发案例 – 在AbsListView中使用倒计时

    在App中, 有多种多样的倒计时需求, 比如: 在单View上, 使用倒计时, 如(如图-1) 在ListView(或者GridView)的ItemView上, 使用倒计时(如图-2) 图-1 图-2 ...

  3. Android中使用Handler以及CountDownTimer实现包含倒计时的闪屏页面

    上一篇博文<Android中Handler使用浅析>通过实现倒计时闪屏页面的制作引出了Handler的使用方法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友可以点击链接回去 ...

  4. Android中使用Handler以及CountDownTimer实现包括倒计时的闪屏页面

    上一篇博文<Android中Handler使用浅析>通过实现倒计时闪屏页面的制作引出了Handler的用法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友能够点击链接回去看看 ...

  5. 浅谈android中只使用一个TextView实现高仿京东,淘宝各种倒计时

    今天给大家带来的是只使用一个TextView实现一个高仿京东.淘宝.唯品会等各种电商APP的活动倒计时.近期公司一直加班也没来得及时间去整理,今天难得歇息想把这个分享给大家.只求共同学习,以及自己兴许 ...

  6. android中倒计时控件CountDownTimer分析

    android中倒计时控件CountDownTimer分析 1 示例代码 new CountDownTimer(10000, 1000) { public void onTick(long milli ...

  7. 拓展 Android 原生 CountDownTimer 倒计时

    拓展 Android 原生 CountDownTimer 倒计时 [TOC] CountDownTimer 在系统的CountDownTimer上进行的修改,主要是拓展了功能,当然也保留了系统默认的模 ...

  8. Android中Handler使用浅析

    1. Handler使用引出 现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友可能立马想到如果打开后自动倒计时,就类似于各个APP的欢迎 ...

  9. Android中三种计时器Timer、CountDownTimer、handler.postDelayed的使用

    在android开发中,我们常常需要用到计时器,倒计时多少秒后再执行相应的功能,下面我就分别来讲讲这三种常用的计时的方法. 一.CountDownTimer 该类是个抽象类,如果要使用这个类中的方法, ...

随机推荐

  1. Register DLL Assembly Gacutil.exe(全局程序集缓存工具)

    全局程序集缓存工具使你可以查看和操作全局程序集缓存和下载缓存的内容. 此工具会自动随 Visual Studio 一起安装. 若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Vi ...

  2. c语言折半查找

    折半查找又称为二分查找,它的前提是线性表中的记录必须是有序的(通常从小到大有序),线性表必须采用顺序存储. 折半查找的基本思想是 : 在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等 ...

  3. Web服务器的工作原理

    Web服务器的工作原理 Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了 ...

  4. iOS 10 开发 相机相关的适配

    升级 iOS 10 之后目测坑还是挺多的,记录一下吧,看看到时候会不会成为一个系列. 直入正题吧 今天在写 Swift 3 相关的一个项目小小练下手,发现调用相机,崩了.试试看调用相册,又特么崩了.然 ...

  5. python 生成 xml文件 属性的顺序问题

    需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...

  6. hdu 5534 (完全背包) Partial Tree

    题目:这里 题意: 感觉并不能表达清楚题意,所以 Problem Description In mathematics, and more specifically in graph theory, ...

  7. HTML5实现摇一摇

    一.原理: 利用devicemotion获取移动速度,得到device移动时相对之前某个时间的差值比 二.效果图: 三.源码: //先判断设备是否支持HTML5摇一摇功能 if (window.Dev ...

  8. 《第一本docker书》- 第一章笔记

    环境: Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic i686) 第一章: 1 Docker客户端和服务器 2 Docker镜像 添加一个文件,执行一 ...

  9. easyui datagird 列宽自适应

    代码如下: onLoadSuccess: function (data) { var rows = data.rows; //得到行数据 var columnMaxCharacter = new Ar ...

  10. css3之背景新属性

    background属性 属性 描述 background-origin 背景图片的定位区域 background-size 背景图片尺寸 background-image:url(),url();允 ...