ToastUtil【简单的Toast封装类】【未自定义Toast的显示风格】
生活随笔
收集整理的這篇文章主要介紹了
ToastUtil【简单的Toast封装类】【未自定义Toast的显示风格】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:本文為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的显示风格】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20145233《网络对抗》Exp8 W
- 下一篇: SICP_3.25