Android 实现 Toast 显示重叠问题
在 Android 开发中,Toast 是一个非常常用的提示工具,能够为用户提供短暂的信息展示。然而,Toast 的默认实现中,存在一个体验上的问题,当多次触发 Toast 显示时,会导致多个 Toast 重叠显示,导致用户体验不佳。
本文提供了一个简单易用的工具类 ToastUtils,帮助开发者优化 Toast 的使用体验。
ToastUtils 工具类
工具类代码
import android.content.Context;
import android.widget.Toast;
public class ToastUtils {
private static Toast toast;
/**
* 自定义 Toast ,解决了 Toast 重叠的问题
* @param context 上下文
* @param message 消息内容
*/
public static void showToast(Context context, String message) {
if (toast != null) {
toast.cancel(); // 取消当前显示的 Toast
}
toast = Toast.makeText(context.getApplicationContext(), message, Toast.LENGTH_SHORT);
toast.show();
}
}
ToastUtils 工具类代码解析
toast.cancel(),通过调用 cancel() 方法,取消当前正在显示的 Toast,从而避免多个 Toast 实例排队等待显示。
复用 Toast 实例,工具类中使用一个静态变量 toast 保存当前的 Toast 实例,每次调用 showToast() 方法时,复用或重新创建该实例。
使用 context.getApplicationContext(),确保 Toast 的生命周期与应用全局一致,而不是与当前 Activity 绑定,从而避免在 Activity 销毁时可能出现的内存泄漏问题。
调用
ToastUtils.showToast(getBaseContext(), "自定义防折叠的Toast");
解决了 Toast 重叠问题,提升了用户体验。
简化了 Toast 的调用方式,让代码更清晰、可复用。
为后续的扩展(如自定义样式和显示时间)提供了灵活性。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_62406137/article/details/144054270