Android 自定义 Toast 显示时间

作者:lqh 时间:2022-01-22 23:22:06 

Android 自定义 Toast 显示时间

实现代码:


package com.wm.realname.util;
import android.content.Context;
import android.os.Handler;
import android.view.View;
import android.widget.Toast;
/**
* Toast自定义显示时间
* 使用方法
* 1.先初始化类 MyToast myToast = new MyToast(this);
* 2.显示消息 myToast.setText("要显示的内容"); //设置要显示的内容
*  myToast.show(8000); //传入消息显示时间,单位毫秒,最少2000毫秒,并且只能是2000的倍数。
*  传入0时会一直显示,只有调用 myToast.cancel();时才会取消。
* 3.取消消息显示 myToast.cancel();
* */
public class ToastUtil {
private Context mContext = null;
private Toast mToast = null;
private Handler mHandler = null;
private int duration = 0;
private int currDuration = 0;
private final int DEFAULT = 2000;
private Runnable mToastThread = new Runnable() {
 public void run() {
  mToast.show();
  mHandler.postDelayed(mToastThread, DEFAULT); // 每隔2秒显示一次
  if (duration != 0) {
   if (currDuration <= duration) {
    currDuration += DEFAULT;
   } else {
    cancel();
   }
  }
 }
}
public ToastUtil(Context context) {
 mContext = context;
 currDuration = DEFAULT;
 mHandler = new Handler(mContext.getMainLooper());
 mToast = Toast.makeText(mContext, "", Toast.LENGTH_LONG);
}
public void setText(String text) {
 mToast.setText(text);
}
public void show(int duration) {
 this.duration = duration;
 mHandler.post(mToastThread);
}
public void setGravity(int gravity, int xOffset, int yOffset) {
 mToast.setGravity(gravity, xOffset, yOffset);
}
public void setDuration(int duration) {
 mToast.setDuration(duration);
}
public void setView(View view) {
 mToast.setView(view);
}
public void cancel( ) {
 mHandler.removeCallbacks(mToastThread);// 先把显示线程删除
 mToast.cancel();// 把最后一个线程的显示效果cancel掉,就一了百了了
 currDuration = DEFAULT;
}
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://www.123si.org/android/240.html

标签:Android,Toast,时间
0
投稿

猜你喜欢

  • 使用logback屏蔽一些包的日志

    2023-08-08 20:46:20
  • springBoot解决static和@Component遇到的bug

    2022-12-31 01:23:27
  • java 图片验证码的实现代码

    2023-11-09 13:33:52
  • Spring Cloud Gateway整合sentinel 实现流控熔断的问题

    2022-01-18 23:10:05
  • Java设计模式之工厂模式

    2023-12-18 01:40:50
  • Java 并发编程学习笔记之Synchronized简介

    2023-09-01 03:24:05
  • 如何在Java SpringBoot项目中配置动态数据源你知道吗

    2021-07-23 11:10:08
  • java中使用xls格式化xml的实例

    2023-06-13 09:43:07
  • springboot项目如何防止XSS攻击

    2021-10-17 10:03:02
  • Java将Exception信息转为String字符串的方法

    2022-12-01 08:39:35
  • java实现简单石头剪刀布游戏

    2023-07-20 05:31:37
  • Java中局部变量和成员变量的区别详解

    2021-12-26 11:53:36
  • Android带进度条的文件上传示例(使用AsyncTask异步任务)

    2023-06-24 09:43:11
  • Java设计模式之命令模式

    2022-06-17 22:49:07
  • idea 多模块项目依赖父工程class找不到问题的方法

    2022-06-08 10:47:41
  • 如何使用Spring自定义Xml标签

    2022-11-14 19:01:08
  • Maven默认中央仓库(settings.xml 配置详解)

    2021-10-17 12:25:40
  • sin(x)如何求解的java代码实现方法

    2022-04-17 16:22:07
  • Spring 整合 MyBatis的实现步骤

    2022-08-21 16:51:14
  • mybatis 映射文件中if标签判断字符串相等的两种方式

    2023-08-02 16:06:44
  • asp之家 软件编程 m.aspxhome.com