本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# Toast
# 显示
# 最后一条
# Android实现屏幕各尺寸的获取的示例
# Android开发之全屏与非全屏的切换设置方法小结
# Android编程实现播放视频时切换全屏并隐藏状态栏的方法
# Android编程实现捕获程序异常退出时的错误log信息功能详解
# Android MTU 值修改的实例详解
# 进阶
# 相关内容
# 中有
# 感兴趣
# 给大家
# 写了
# 只显示
# 一个问题
# 更多关于
# 解决方法
# 能再
# 所述
# 程序设计
# 而不是
# 讲述了
# getMainLooper
# mHandler
# static
# Object
# null
相关文章:
如何快速搭建高效服务器建站系统?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何通过多用户协作模板快速搭建高效企业网站?
高性价比服务器租赁——企业级配置与24小时运维服务
建站之星下载版如何获取与安装?
公司网站的制作公司,企业网站制作基本流程有哪些?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
建站主机助手选型指南:2025年热门推荐与高效部署技巧
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
长沙做网站要多少钱,长沙国安网络怎么样?
宁波自助建站系统如何快速打造专业企业网站?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
如何在IIS7上新建站点并设置安全权限?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
焦点电影公司作品,电影焦点结局是什么?
海南网站制作公司有哪些,海口网是哪家的?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
常州自助建站费用包含哪些项目?
如何快速上传自定义模板至建站之星?
广州美橙建站如何快速搭建多端合一网站?
制作电商网页,电商供应链怎么做?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
如何在阿里云虚拟服务器快速搭建网站?
如何通过FTP空间快速搭建安全高效网站?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
网站按钮制作软件,如何实现网页中按钮的自动点击?
定制建站策划方案_专业建站与网站建设方案一站式指南
Android自定义listview布局实现上拉加载下拉刷新功能
C++时间戳转换成日期时间的步骤和示例代码
高防服务器:AI智能防御DDoS攻击与数据安全保障
音乐网站服务器如何优化API响应速度?
内网网站制作软件,内网的网站如何发布到外网?
江苏网站制作公司有哪些,江苏书法考级官方网站?
在线教育网站制作平台,山西立德教育官网?
Python路径拼接规范_跨平台处理说明【指导】
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
Swift中循环语句中的转移语句 break 和 continue
高端网站建设与定制开发一站式解决方案 中企动力
佛山企业网站制作公司有哪些,沟通100网上服务官网?
太平洋网站制作公司,网络用语太平洋是什么意思?
建站VPS推荐:2025年高性能服务器配置指南
建站之星备案流程有哪些注意事项?
h5在线制作网站电脑版下载,h5网页制作软件?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
,怎么在广州志愿者网站注册?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何用AWS免费套餐快速搭建高效网站?
如何用好域名打造高点击率的自主建站?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。