博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ToastUtil【简单的Toast封装类】【未自定义Toast的显示风格】
阅读量:6902 次
发布时间:2019-06-27

本文共 4943 字,大约阅读时间需要 16 分钟。

版权声明:本文为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;    @Override    public void onCreate() {        super.onCreate();        mAppContext = getApplicationContext();    }    /**获取系统上下文:用于ToastUtil类*/    public static Context getAppContext()    {        return mAppContext;    }}

在AndroidManifest.xml中声明这个MyApplication

在{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下载地址

 

你可能感兴趣的文章
thinkphp Class 'PDO' not found 错误
查看>>
(实用篇)PHP ftp上传文件操作类
查看>>
完成注册功能
查看>>
职场规划从“试错”开始
查看>>
AtCoder - 2568 最小割
查看>>
Lucene5.x 中文 同义词
查看>>
【转载】Cookie/Session机制详解
查看>>
ASCII码、Unicode码 转中文
查看>>
java 不通过第三个字符串,实现一个字符串倒序
查看>>
map/reduce
查看>>
矩阵的相似对角化
查看>>
weixinJSDDK
查看>>
eclipse手动安装svn和maven
查看>>
权限管理 (二) 实现中几个问题
查看>>
flume【源码分析】分析Flume的拦截器
查看>>
暂存,本人博客有bug,正在全力修复。
查看>>
GestureDetector手势识别的各个方法
查看>>
运维人员应该掌握哪些常用技术
查看>>
什么是软件架构
查看>>
C#多线程之Task------------ C#
查看>>