版权声明:本文为HaiyuKing原创文章,转载请注明出处!

前言

一个简单的Toast封装类。

效果图

API = 6.0 API = 4.4.2

代码分析

  • 实现了不管我们触发多少次Toast调用,都只会持续一次Toast显示的时长;
  • 使用了系统上下文,防止当前Activity未加载完成就退出时,程序崩溃的情况;
  • 缺陷:只是调用系统的Toast显示,未自定义Toast的显示风格(机型不同,显示的样式也就不同)。

使用步骤

一、项目组织结构图

注意事项:

1、复制ToastUtil类文件后需要重新import MyApplication路径

二、导入步骤

创建一个包含以下代码的MyApplication.java(自定义的Application子类)

/*** Used 自定义Application【系统上下文】*/
public class MyApplication extends Application{/**系统上下文*/private static Context mAppContext;@Overridepublic void onCreate() {super.onCreate();mAppContext = getApplicationContext();}/**获取系统上下文:用于ToastUtil类*/public static Context getAppContext(){return mAppContext;}
}

在AndroidManifest.xml中声明这个MyApplication

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.why.project.toastutildemo"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"android:name=".MyApplication"><activity android:name=".activity.MainActivity"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter></activity></application></manifest>

在{package}.util(比如,com.why.project.toastutildemo.util)包下新建一个ToastUtil.java

package com.why.project.toastutildemo.util;import android.content.Context;
import android.view.Gravity;
import android.widget.Toast;import com.why.project.toastutildemo.MyApplication;/*** Create By HaiyuKing* Used 简单的Toast封装类*/
public class ToastUtil {private static Toast toast;//实现不管我们触发多少次Toast调用,都只会持续一次Toast显示的时长/*** 短时间显示Toast【居下】* @param msg 显示的内容-字符串*/public static void showShortToast(String msg) {if(MyApplication.getAppContext() != null){if (toast == null) {toast = Toast.makeText(MyApplication.getAppContext(), msg, Toast.LENGTH_SHORT);} else {toast.setText(msg);}//1、setGravity方法必须放到这里,否则会出现toast始终按照第一次显示的位置进行显示(比如第一次是在底部显示,那么即使设置setGravity在中间,也不管用)//2、虽然默认是在底部显示,但是,因为这个工具类实现了中间显示,所以需要还原,还原方式如下:toast.setGravity(Gravity.BOTTOM, 0, dip2px(MyApplication.getAppContext(),64));toast.show();}}/*** 短时间显示Toast【居中】* @param msg 显示的内容-字符串*/public static void showShortToastCenter(String msg){if(MyApplication.getAppContext() != null) {if (toast == null) {toast = Toast.makeText(MyApplication.getAppContext(), msg, Toast.LENGTH_SHORT);} else {toast.setText(msg);}toast.setGravity(Gravity.CENTER, 0, 0);toast.show();}}/*** 短时间显示Toast【居上】* @param msg 显示的内容-字符串*/public static void showShortToastTop(String msg){if(MyApplication.getAppContext() != null) {if (toast == null) {toast = Toast.makeText(MyApplication.getAppContext(), msg, Toast.LENGTH_SHORT);} else {toast.setText(msg);}toast.setGravity(Gravity.TOP, 0, 0);toast.show();}}/*** 长时间显示Toast【居下】* @param msg 显示的内容-字符串*/public static void showLongToast(String msg) {if(MyApplication.getAppContext() != null) {if (toast == null) {toast = Toast.makeText(MyApplication.getAppContext(), msg, Toast.LENGTH_LONG);} else {toast.setText(msg);}toast.setGravity(Gravity.BOTTOM, 0, dip2px(MyApplication.getAppContext(),64));toast.show();}}/*** 长时间显示Toast【居中】* @param msg 显示的内容-字符串*/public static void showLongToastCenter(String msg){if(MyApplication.getAppContext() != null) {if (toast == null) {toast = Toast.makeText(MyApplication.getAppContext(), msg, Toast.LENGTH_LONG);} else {toast.setText(msg);}toast.setGravity(Gravity.CENTER, 0, 0);toast.show();}}/*** 长时间显示Toast【居上】* @param msg 显示的内容-字符串*/public static void showLongToastTop(String msg){if(MyApplication.getAppContext() != null) {if (toast == null) {toast = Toast.makeText(MyApplication.getAppContext(), msg, Toast.LENGTH_LONG);} else {toast.setText(msg);}toast.setGravity(Gravity.TOP, 0, 0);toast.show();}}/*=================================常用公共方法============================*/public static int dip2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}
}

三、使用方法

ToastUtil.showShortToast("ToastUtilDemo");//如果显示字符串,直接写即可
ToastUtil.showShortToast(MyApplication.getAppContext().getResources().getString(R.string.app_name));//如果想要显示Strings.xml文件中的字符串,建议使用MyApplication.getAppContext()

如果是在Fragment、DialogFragment中调用ToastUtil类,则建议使用下面的方式

if(isAdded()) {//如果该Fragment对象被添加到了它的Activity中,那么它返回true,否则返回false。ToastUtil.showShortToast(MyApplication.getAppContext().getResources().getString(R.string.app_name)); }

混淆配置

参考资料

暂时空缺

项目demo下载地址

https://github.com/haiyuKing/ToastUtilDemo

转载于:https://www.cnblogs.com/whycxb/p/6822349.html

ToastUtil【简单的Toast封装类】【未自定义Toast的显示风格】相关推荐

  1. toast 停留时间_android 自定义toast停留时间

    Toast类 //首先定义全局变量mToast已经显示和隐藏函数 private Toast mToast; // 隐藏toast信息框常量 public static final int AIRPL ...

  2. android toast居中显示_android Toast 弹出在屏幕中间位置以及自定义Toast

    Toast 我想我们应该使用的都很多,一般我们使用默认设置较多,但是默认设置往往不能满足我们的需求,那我们现在来自定义下: 默认Toast: Toast.makeText(MainActivity.t ...

  3. 安卓Toast随时跟新以及自定义Toast

    文章目录 一.随时更新Toast 二.自定义Toast 一.随时更新Toast 创建工具类形式: package com.example.myapplication.until;import andr ...

  4. Android例子—自定义Toast(吐司)样式

    1.直接调用Toast类的makeText()方法创建 这是我们用的最多的一种形式了!比如点击一个按钮,然后弹出Toast,用法: Toast.makeText(MainActivity.this, ...

  5. Android问题——解决Toast在APP通知关闭不显示

    Android在8.0中针对通知一块在功能上做了较大的改动. Toast被纳入到了通知管理,其实这在Android 4.4(API 19)以上就已经有特别的处理了.只是一般用户不会怎么注意,开发人员也 ...

  6. Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明

    http://blog.csdn.net/wangfayinn/article/details/8065763 Android Toast用于在手机屏幕上向用户显示一条信息,一段时间后信息会自动消失. ...

  7. Android开发之自定义Toast(带详细注释)

    因为工作需求,所以自己研究了自定义Toast,这里做出总结: 在此之前有一点需要提前说明:Toast与其他组件一样,都属于UI界面中的内容,因此在子线程中无法使用Toast弹出提示内容,如果强行在子线 ...

  8. Android实例-手机安全卫士(四十一)-选择自定义Toast背景

    一.目标 通过对话框选择并保存自定义的Toast背景        二.代码实现 1.复制layout文件夹中的model_setting_item.xml文件,以其为模板进行修改(取名为model_ ...

  9. android 自定义 snackbar,Android Study Material Design 五 之:自定义Toast以及玩转SnackBar...

    > LZ-Says:有时候真的不需要让自己在意太多,在意的太多,反而有些累,计较太多,反而让自己患得患失,随心随性就好,愿各位伙计能开心撸码~ > LZ-Says:有时候真的不需要让自己在 ...

最新文章

  1. php 使用redis
  2. 关于各种JOIN连接的解释说明【原创】
  3. 操作系统短作业优先(SJF)调度算法
  4. springmvc+jpa实现分页的两种方式
  5. Jzzhu and Chocolate(CF-449A)
  6. 第二次打开不是最大_第二次约会男生该干嘛,才能让关系更进一步?
  7. 计算机系班级海报,系部动态 | 电子系“五彩班栏”班级海报评比
  8. sklearn中的train_test_split函数
  9. SharePoint 2010在线查看PDF文档
  10. 比例化简 详解(C++)
  11. LigerUI权限系统之角色管理
  12. coreseek java_基于Sphinx的中文全文检索引擎Coreseek的安装
  13. echarts地图,及经纬度(省市两级经纬度)
  14. html背景图片自适应屏幕
  15. 理解和应用向量积与数量积
  16. ios系统越狱才可以享受的100项操作
  17. 2022年5月26日:用C#生成.NET应用程序--创建新的.NET项目并使用依赖项(部分没看懂。)
  18. Android知识点-圆角
  19. JavaSE02-JVM、JRE、JDK
  20. 【初等数论】整除、公约数、同余与剩余系

热门文章

  1. 2014年江苏省计算机二级c语言考试大纲,「二级C语言」江苏省计算机二级VFP考试大纲...
  2. 我的第一个oracle触发器
  3. kafka架构、亿级数据如何优化GC
  4. HTML <!DOCTYPE> 标签
  5. 鸿蒙系统小卡片,升级鸿蒙101版本,UI审美升级了
  6. FilterDispatcher is deprecated!
  7. eoiioe linux下解压命令大全
  8. 在Excel中如何引用其他的工作表或者工作簿
  9. Python网络爬虫第二弹《http和https协议》
  10. python 之 前端初识 html