日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/4/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ToastUtil【简单的Toast封装类】【未自定义Toast的显示风格】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

版權聲明:本文為HaiyuKing原創文章,轉載請注明出處!

前言

一個簡單的Toast封裝類。

效果圖

API = 6.0API = 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的显示风格】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。