android利用handler实现倒计时功能

 更新时间:2020年11月24日 11:55:13   作者:codeTcy  
这篇文章主要为大家详细介绍了android利用handler实现倒计时功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了android利用handler实现倒计时的具体代码,供大家参考,具体内容如下

xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity">

 <TextView
  android:id="@+id/text"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Hello World!"
  app:layout_constraintBottom_toBottomOf="parent"
  app:layout_constraintLeft_toLeftOf="parent"
  app:layout_constraintRight_toRightOf="parent"
  app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

java

package com.tcy.handlertest;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

import java.lang.ref.WeakReference;

public class MainActivity extends AppCompatActivity {

 /**
  * 倒计时标记handler code
  */
 public static final int COUNT_DOWN_CODE = 10001;
 /**
  * 倒计时最大值
  */
 public static final int MAX_COUNT = 10;
 /**
  * 倒计时间隔
  */
 public static final int DELAY_MILLIS = 1000;
 TextView textView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  textView = findViewById(R.id.text);


  CountdownTimeHandler handler = new CountdownTimeHandler(this);
  Message message = Message.obtain();
  message.what = COUNT_DOWN_CODE;
  message.arg1 = MAX_COUNT;
  handler.sendMessageDelayed(message, DELAY_MILLIS);


 }

 public static class CountdownTimeHandler extends Handler {
  //弱引用加在上下文上面
  final WeakReference<MainActivity> weakReference;

  //这个方法要改一下,这样就能直接传进来上下文
  public CountdownTimeHandler(MainActivity activity) {
   this.weakReference = new WeakReference<>(activity);
  }

  @Override
  public void handleMessage(@NonNull Message msg) {
   super.handleMessage(msg);

   //得到上下文
   MainActivity activity = weakReference.get();

   switch (msg.what) {
    case COUNT_DOWN_CODE:
     int value = msg.arg1;
     activity.textView.setText(String.valueOf(value--));


     if (value >= 0) {
      //再把value发出去
      Message message = Message.obtain();
      message.what = COUNT_DOWN_CODE;
      message.arg1 = value;
      sendMessageDelayed(message, DELAY_MILLIS);
     }


     break;
   }
  }
 }
}

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

相关文章

  • 解决AMD无法使用Android studio问题

    解决AMD无法使用Android studio问题

    这篇文章主要介绍了AMD无法使用Android studio解决方法,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Android实现退出时关闭所有Activity的方法

    Android实现退出时关闭所有Activity的方法

    这篇文章主要介绍了Android实现退出时关闭所有Activity的方法,主要通过自定义类CloseActivityClass实现这一功能,需要的朋友可以参考下
    2014-09-09
  • Android中FileProvider的各种场景应用详解

    Android中FileProvider的各种场景应用详解

    这篇文章主要为大家介绍了Android中FileProvider的各种场景应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 解决NDK开发中Eclipse报错Unresolved inclusion jni.h的最终解决方法(已测)

    解决NDK开发中Eclipse报错Unresolved inclusion jni.h的最终解决方法(已测)

    这篇文章主要介绍了解决NDK开发中Eclipse报错Unresolved inclusion jni.h的最终方法,需要的朋友可以参考下
    2016-12-12
  • Android开发自定义短信验证码实现过程详解

    Android开发自定义短信验证码实现过程详解

    这篇文章主要为大家介绍了Android开发自定义短信验证码实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Flutter之自定义Dialog实现版本更新弹窗功能的实现

    Flutter之自定义Dialog实现版本更新弹窗功能的实现

    这篇文章主要介绍了Flutter之自定义Dialog实现版本更新弹窗功能的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Android入门之SubMenu的实现详解

    Android入门之SubMenu的实现详解

    这篇文章主要为大家详细介绍了Android如何实现SubMenu子菜单的效果,文中的示例代码讲解详细,对我们学习Android有一定的帮助,感兴趣的可以了解一下
    2022-11-11
  • Android应用开发中实现apk皮肤文件换肤的思路分析

    Android应用开发中实现apk皮肤文件换肤的思路分析

    这篇文章主要介绍了Android应用开发中实现apk皮肤文件换肤的思路分析,包括布局和主要的皮肤更换逻辑实现,需要的朋友可以参考下
    2016-02-02
  • Android实现倾斜角标样式

    Android实现倾斜角标样式

    最新小编接到这样一个项目,需要在一个距形卡片上做一个倾斜的Tag,类似支付宝上的一个功能,接着小编给大家带来了实现思路,对android 倾斜角标的实现方法感兴趣的朋友跟随小编一起看看吧
    2019-10-10
  • Android中数据解析的五种方式

    Android中数据解析的五种方式

    今天小编就为大家分享一篇关于Android中数据解析的五种方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02

最新评论