返回顶部
首页 > 资讯 > 精选 >Android中如何实现Toast只显示最后一条
  • 813
分享到

Android中如何实现Toast只显示最后一条

androidtoast 2023-05-30 20:05:41 813人浏览 安东尼
摘要

这篇文章主要介绍了Android中如何实现Toast只显示最后一条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:在做Android开发中,时不时的可能会用到Toas

这篇文章主要介绍了Android中如何实现Toast只显示最后一条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体如下:

在做Android开发中,时不时的可能会用到Toast,但用Toast的时候,连续使用会存在一个问题,就是一条条显示Toast。而不是直接显示最后一条。因此,根据此需求,现在写了ToastUtil这个类,该类中有三个方法供选择。

ToastUtil.Java

import android.content.Context;import android.graphics.PixelFORMat;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.view.Gravity;import android.view.WindowManager;import android.widget.TextView;import android.widget.Toast;public class ToastUtil {  //方法一  private static Handler mHandler = new Handler(Looper.getMainLooper());  private static Toast mToast = null;  private static Object synObject = new Object();  public static void showToastByThread(Context context, String msg){    showToastByThread(context, msg, Toast.LENGTH_SHORT);  }  public static void showToastByThread(Context context, int msg){    showToastByThread(context, context.getText(msg), Toast.LENGTH_SHORT);  }  public static void showToastByThread(final Context context, final CharSequence msg, final int length){    new Thread(new Runnable() {      @Override      public void run() {        mHandler.post(new Runnable() {          @Override          public void run() {            synchronized (synObject) {              if (mToast != null){                mToast.setText(msg);                mToast.setDuration(length);              }else{                mToast = Toast.makeText(context, msg, length);              }              mToast.show();            }          }        });      }    }).start();  }  //方法二:注意此方法不能再子线程中使用  private static long oneTime;  private static long twoTime;  private static String oldMsg;  public static void showToastByTime(Context context, String msg){    if (mToast == null) {      mToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);      mToast.show();      oneTime = System.currentTimeMillis();    } else {      twoTime = System.currentTimeMillis();      if (msg.equals(oldMsg)){        if (twoTime-oneTime > Toast.LENGTH_SHORT){          mToast.show();        }      } else {        oldMsg = msg;        mToast.setText(msg);        mToast.show();      }    }    oneTime = twoTime;  }  public static void showToastByTime(Context context, int msg){    showToastByTime(context, context.getString(msg));  }  //方法三  public static TextView mTextView;  public static WindowManager mWindowManager = null;  private static Handler mPriHandler = new Handler(){    @Override    public void handleMessage(Message msg) {      cancelToast();    }  };  public static void showToastByWindow(Context context, String msg){    mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);    if (mTextView == null){      mTextView = new TextView(context);    }    mTextView.setText(msg);    mTextView.setTextSize(20);    mTextView.setPadding(0, 0, 0, 30);    if (mTextView.getParent() == null){      WindowManager.LayoutParams params = new WindowManager.LayoutParams();      params.gravity= Gravity.BOTTOM;      params.alpha = 0.65f;      params.x = 0;      params.height = WindowManager.LayoutParams.WRAP_CONTENT;      params.width = WindowManager.LayoutParams.WRAP_CONTENT;      params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |          WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |          WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |          WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;      params.format = PixelFormat.TRANSLUCENT;      params.windowAnimations = 0;      mWindowManager.addView(mTextView, params);      mPriHandler.sendEmptyMessageDelayed(101, 1000);    } else {      mTextView.setText(msg);      mPriHandler.removeMessages(101);      mPriHandler.sendEmptyMessageDelayed(101, 1000);    }  }  public static void cancelToast(){    if (mTextView != null && mTextView.getParent() != null){      mWindowManager.removeView(mTextView);    }  }}

感谢你能够认真阅读完这篇文章,希望小编分享的“Android中如何实现Toast只显示最后一条”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Android中如何实现Toast只显示最后一条

本文链接: https://lsjlt.com/news/221289.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android中如何实现Toast只显示最后一条
    这篇文章主要介绍了Android中如何实现Toast只显示最后一条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:在做Android开发中,时不时的可能会用到Toas...
    99+
    2023-05-30
    android toast
  • CSS怎么实现横向进度条最后显示文字
    这篇文章将为大家详细讲解有关CSS怎么实现横向进度条最后显示文字,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题描述在工作中想要实现如下效果:解决思路在 div 标签中添加一个 relative 定位,...
    99+
    2023-06-08
  • css如何实现超出三行则只显示一行
    这篇“css如何实现超出三行则只显示一行”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“css如何实现超出三行则只显示一行”文...
    99+
    2023-07-05
  • Android编程实现只显示图片一部分的方法
    本文实例讲述了Android编程实现只显示图片一部分的方法。分享给大家供大家参考,具体如下: 在Android应用程序中加载一张图片,然后把它显示出来这是一件非常容易的事情,那...
    99+
    2022-06-06
    方法 图片 Android
  • java如何实现进度条显示
    在Java中可以通过使用`JProgressBar`类来实现进度条的显示。以下是一个简单的例子,演示了如何在Java中实现进度条的显...
    99+
    2023-08-24
    java
  • Android编程实现Gallery中每次滑动只显示一页的方法
    本文实例讲述了Android编程实现Gallery中每次滑动只显示一页的方法。分享给大家供大家参考,具体如下: import android.content.Context;...
    99+
    2022-06-06
    方法 gallery Android
  • laydate如何实现只显示时分且不显示秒的功能
    这篇文章主要为大家展示了“laydate如何实现只显示时分且不显示秒的功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“laydate如何实现只显示时分且不显示...
    99+
    2024-04-02
  • css只显示行的下边线如何实现
    本篇内容介绍了“css只显示行的下边线如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!css只显示下边线的实现方法:1、打开一个htm...
    99+
    2023-07-05
  • Android如何实现App应用退到后台显示通知
    小编给大家分享一下Android如何实现App应用退到后台显示通知,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!需求背景刚开始接到这个需求时,第一时间想到的是做成跟银行类app一样用户退到主页之后,需要在通知栏显示“XXX...
    99+
    2023-06-28
  • 如何在Android中使用Dialog、Toast和Snackbar实现一个提醒功能
    这期内容当中小编将会给大家带来有关如何在Android中使用Dialog、Toast和Snackbar实现一个提醒功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1,Dialog 首先来介绍一...
    99+
    2023-05-31
    android dialog toast
  • Android中设置只有程序第一次运行才显示的界面实现思路
    程序安装后第一次启动: 启动页-->功能介绍页-->系统主页 以后启动: 启动页-->系统主页 所以在启动页中判断一下就可以了 可以弄一个文件保存一个状态,推...
    99+
    2022-06-06
    运行 程序 界面 Android
  • 如何在Android中动态显示进度条的进度
    在Android中,可以使用ProgressBar来显示进度条的进度。以下是一个示例代码,演示如何动态地更新进度条的进度。1. 在布...
    99+
    2023-09-20
    Android
  • HTML5中Ajax如何实现文件上传并显示进度条
    这篇文章主要介绍HTML5中Ajax如何实现文件上传并显示进度条,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下效果图:html5上传是同步上传的方式,所以能够实现进度条的显示。1.上传文件:首先我们用aj...
    99+
    2023-06-08
  • Android如何实现编辑框显示行数
    在Android中,可以通过设置EditText的属性来实现编辑框显示行数。1. 在布局文件中,将EditText的属性`andro...
    99+
    2023-09-27
    Android
  • PyQt5如何实现tableWidget居中显示
    这篇文章主要介绍“PyQt5如何实现tableWidget居中显示”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PyQt5如何实现tableWidget居中显示”文章能帮助大家解决问题。PyQt5 ...
    99+
    2023-07-02
  • 如何解决vue中echart 在子组件中只显示一次的问题
    小编给大家分享一下如何解决vue中echart 在子组件中只显示一次的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题描述...
    99+
    2024-04-02
  • CentOS7系统中如何实现安装KDE后显示为中文语言
    这篇文章将为大家详细讲解有关CentOS7系统中如何实现安装KDE后显示为中文语言,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在CentOS7系统上安装KDE后,默认显示的是英文。修改为中文的步骤如下:...
    99+
    2023-06-10
  • 如何在Android中利用ListView实现一个内容无限循环显示效果
    这期内容当中小编将会给大家带来有关如何在Android中利用ListView实现一个内容无限循环显示效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。其实要达到无限循环显示,主要就是实现继承Adapter...
    99+
    2023-05-31
    android listview roi
  • Ajax如何实现获取数据后显示在页面
    这篇文章主要介绍Ajax如何实现获取数据后显示在页面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!主要功能流程介绍循环获取列表数据 点击列表数据进入详情页点击报名参加弹出报名成功提示...
    99+
    2024-04-02
  • 如何实现python爬虫爬取视频时实现实时进度条显示
    目录一、全部代码展示二、解释1.with closingwith用法(实现上下文管理)closing用法(完美解决上述问题)2.文件流stream3.response.headers...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作