本文实例讲述了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小时客服电话如何获取?
如何用低价快速搭建高质量网站?
开源网站制作软件,开源网站什么意思?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何在橙子建站上传落地页?操作指南详解
高端云建站费用究竟需要多少预算?
建站之星后台密码遗忘如何找回?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
浅析上传头像示例及其注意事项
平台云上自助建站如何快速打造专业网站?
建站主机SSH密钥生成步骤及常见问题解答?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
网站制作公司排行榜,四大门户网站排名?
建站之星如何快速更换网站模板?
如何用免费手机建站系统零基础打造专业网站?
Android自定义listview布局实现上拉加载下拉刷新功能
如何在云指建站中生成FTP站点?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何快速生成专业多端适配建站电话?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
内网网站制作软件,内网的网站如何发布到外网?
婚礼视频制作网站,学习*后期制作的网站有哪些?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
Android滚轮选择时间控件使用详解
建站与域名管理如何高效结合?
定制建站方案优化指南:企业官网开发与建站费用解析
宿州网站制作公司兴策,安徽省低保查询网站?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
中山网站制作网页,中山新生登记系统登记流程?
如何破解联通资金短缺导致的基站建设难题?
个人摄影网站制作流程,摄影爱好者都去什么网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何将凡科建站内容保存为本地文件?
济南网站制作的价格,历城一职专官方网站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
建站ABC备案流程中有哪些关键注意事项?
建站10G流量真的够用吗?如何应对访问高峰?
建站之星下载版如何获取与安装?
建站之星logo尺寸如何设置最合适?
如何自定义建站之星网站的导航菜单样式?
微信h5制作网站有哪些,免费微信H5页面制作工具?
Python lxml的etree和ElementTree有什么区别
*请认真填写需求信息,我们会在24小时内与您取得联系。