Android实现时间倒计时功能

本文实例为大家分享了Android实现时间倒计时功能展示的具体代码,供大家参考,具体内容如下

效果展示

MainActivity(主页面代码)

public class MainActivity extends Activity {

  private RelativeLayout countDown;
  // 倒计时
  private TextView daysTv, hoursTv, minutesTv, secondsTv;
  private long mDay = 10;
  private long mHour = 10;
  private long mMin = 30;
  private long mSecond = 00;// 天 ,小时,分钟,秒
  private boolean isRun = true;
  private Handler timeHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      if (msg.what==1) {
        computeTime();
        daysTv.setText(mDay+"");
        hoursTv.setText(mHour+"");
        minutesTv.setText(mMin+"");
        secondsTv.setText(mSecond+"");
        if (mDay==0&&mHour==0&&mMin==0&&mSecond==0) {
          countDown.setVisibility(View.GONE);
        }
      }
    }
  };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    countDown = (RelativeLayout) findViewById(R.id.countdown_layout);
    daysTv = (TextView) findViewById(R.id.days_tv);
    hoursTv = (TextView) findViewById(R.id.hours_tv);
    minutesTv = (TextView) findViewById(R.id.minutes_tv);
    secondsTv = (TextView) findViewById(R.id.seconds_tv);

    startRun();
  }

  /**
   * 开启倒计时
   */
  private void startRun() {
    new Thread(new Runnable() {

      @Override
      public void run() {
        // TODO Auto-generated method stub
        while (isRun) {
          try {
            Thread.sleep(1000); // sleep 1000ms
            Message message = Message.obtain();
            message.what = 1;
            timeHandler.sendMessage(message);
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
    }).start();
  }

  /**
   * 倒计时计算
   */
  private void computeTime() {
    mSecond--;
    if (mSecond < 0) {
      mMin--;
      mSecond = 59;
      if (mMin < 0) {
        mMin = 59;
        mHour--;
        if (mHour < 0) {
          // 倒计时结束
          mHour = 23;
          mDay--;
        }
      }
    }
  }
}

main(主页面布局)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/countdown_layout"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@android:color/white"
  android:gravity="center" >

  <RelativeLayout
    android:id="@+id/daojishi_rl"
    android:layout_width="match_parent"
    android:layout_height="40.0dip"
    android:layout_marginLeft="10.0dip"
    android:layout_marginRight="10.0dip"
    android:gravity="center" >

    <ImageView
      android:id="@+id/describe_iv"
      android:layout_width="40.0dip"
      android:layout_height="40.0dip"
      android:background="@drawable/clock"
      android:gravity="center_vertical" />

    <TextView
      android:id="@+id/describe_tv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_marginRight="5.0dip"
      android:layout_toRightOf="@+id/describe_iv"
      android:text="距离活动还有 "
      android:textSize="25sp" />

    <TextView
      android:id="@+id/days_tv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_toRightOf="@+id/describe_tv"
      android:textColor="@color/colorAccent"
      android:gravity="center"
      android:text="20"
      android:textSize="20sp" />

    <TextView
      android:id="@+id/colon0"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_marginLeft="5.0dip"
      android:layout_marginRight="3.0dip"
      android:layout_toRightOf="@+id/days_tv"
      android:text="天"
      android:textSize="20sp"
      android:textStyle="bold" />
  </RelativeLayout>

  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/daojishi_rl"
    android:gravity="center_horizontal" >

    <TextView
      android:id="@+id/hours_tv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_toLeftOf="@+id/colon1"
      android:textColor="@color/colorAccent"
      android:gravity="center"
      android:text="23"
      android:textSize="20sp" />

    <TextView
      android:id="@+id/colon1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_marginLeft="3.0dip"
      android:layout_marginRight="3.0dip"
      android:layout_toLeftOf="@+id/minutes_tv"
      android:text=":"
      android:textSize="20sp"
      android:textStyle="bold" />

    <TextView
      android:id="@+id/minutes_tv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_toLeftOf="@+id/colon2"
      android:textColor="@color/colorAccent"
      android:gravity="center"
      android:text="59"
      android:textSize="20sp" />

    <TextView
      android:id="@+id/colon2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_marginLeft="3.0dip"
      android:layout_marginRight="3.0dip"
      android:layout_toLeftOf="@+id/seconds_tv"
      android:text=":"
      android:textSize="20sp"
      android:textStyle="bold" />

    <TextView
      android:id="@+id/seconds_tv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:layout_centerVertical="true"
      android:gravity="center"
      android:text="59"
      android:textColor="@color/colorAccent"
      android:textSize="20sp" />
  </RelativeLayout>

</RelativeLayout>

谢谢观看,小编祝大家生活愉快!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android实现加载广告图片和倒计时的开屏布局

    这是一个android开屏布局的实例,可以用于加载广告图片和倒计时的布局.程序中设置的LayoutParams,划分额外空间比例为6分之5,具体权重比例可根据用户自己需求来自定义,异步加载广告图片,相关的Android代码. 具体实现代码如下: package cn.waps.extend; import android.app.Activity; import android.content.Context; import android.content.res.Configuration;

  • Android开发之获取短信验证码后按钮背景变化并且出现倒计时

    目前越来越多的app在注册或是进行对应操作时,要求获取短信验证码,在点击了获取短信验证码的按钮后,就是出现倒计时,比如倒计时120S,在倒计时期间内,按钮背景变化并且出现倒计时,当倒计时结束后,如果你没有获取到验证码,可以再次点击. 代码如下所示: VerCodeTimer mVerCodeTimer=(Button) findViewById(R.id.login_get_ver_code); private class VerCodeTimer extends CountDownTimer

  • Android账号注册实现点击获取验证码倒计时效果

    网站中为了防止恶意获取验证短信.验证邮箱,都会在点击获取验证码的按钮上做个倒计时的效果,如何实现这个效果,具体内容如下 效果图:   代码: RegisterActivity.java import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.Button; import com.jialianjia.bzw.BaseAct

  • Android自定义圆形倒计时进度条

    效果预览 源代码传送门:https://github.com/yanzhenjie/CircleTextProgressbar 实现与原理 这个文字圆形的进度条我们在很多APP中看到过,比如APP欢迎页倒计时,下载文件倒计时等. 分析下原理,可能有的同学一看到这个自定义View就慌了,这个是不是要继承View啊,是不是要绘制啊之类的,答案是:是的.但是我们也不要担心,实现这个效果实在是so easy.下面就跟我一起来看看核心分析和代码吧. 原理分析 首先我们观察上图,需要几个部分组成: 1. 外

  • android自定义倒计时控件示例

    自定义TextView控件TimeTextView代码: 复制代码 代码如下: import android.content.Context;import android.content.res.TypedArray;import android.graphics.Paint;import android.text.Html;import android.util.AttributeSet;import android.widget.TextView; import com.new0315.R;

  • Android中使用TextView实现高仿京东淘宝各种倒计时效果

    今天给大家带来的是仅仅使用一个TextView实现一个高仿京东.淘宝.唯品会等各种电商APP的活动倒计时.最近公司一直加班也没来得及时间去整理,今天难得休息想把这个分享给大家,只求共同学习,以及自己后续的复习.为什么会想到使用一个TextView来实现呢?因为最近公司在做一些优化的工作,其中就有一个倒计时样式,原来开发的这个控件的同事使用了多个TextView拼接在一起的,实现的代码冗余比较大,故此项目经理就说:小宏这个就交给你来优化了,并且还要保证有一定的扩展性,当时就懵逼了.不知道从何处开始

  • Android 实现闪屏页和右上角的倒计时跳转实例代码

    以前编程的时候,遇到倒计时的功能时,经常自己去写,但其实Android已经帮封装好了一个倒计时类CountDownTimer,其实是将后台线程的创建和Handler队列封装成为了一个方便的类调用. 闪屏页用到了handler和CountDownTimer类,还需配置一下Activity的主题,这里是:android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 全屏主题的意思. 给大家展示下效果图: 代码如下所示: package

  • Android中CountDownTimer倒计时器用法实例

    本文实例讲述了Android中CountDownTimer倒计时器用法.分享给大家供大家参考,具体如下: 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写.现在发现了这个类,大家共享一下: 在一个TextView不断显示剩下的时间,代码如下: private TextView vertifyView; private CountDownTimer timer = new CountDownTimer(10000, 1000) { @Ov

  • android实现倒计时功能代码

    效果图,每隔1秒,变换一下时间  xml: 复制代码 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="mat

  • Android实现计时与倒计时的常用方法小结

    本文实例总结了Android实现计时与倒计时的常用方法.分享给大家供大家参考,具体如下: 方法一 Timer与TimerTask(Java实现) public class timerTask extends Activity{ private int recLen = 11; private TextView txtView; Timer timer = new Timer(); public void onCreate(Bundle savedInstanceState){ super.onC

随机推荐