這可能是性能優(yōu)、使用簡(jiǎn)單瓮孙,支持自定義唐断,不需要通知欄權(quán)限的吐司
已投入公司項(xiàng)目多時(shí),沒(méi)有任何毛病杭抠,可勝任任何需求
想了解實(shí)現(xiàn)原理的可以點(diǎn)擊此鏈接查看:Toaster 源碼
集成步驟
- 如果你的項(xiàng)目 Gradle 配置是在
7.0 以下
栗涂,需要在build.gradle
文件中加入
allprojects {
repositories {
// JitPack 遠(yuǎn)程倉(cāng)庫(kù):https://jitpack.io
maven { url 'https://jitpack.io' }
}
}
- 如果你的 Gradle 配置是
7.0 及以上
,則需要在settings.gradle
文件中加入
dependencyResolutionManagement {
repositories {
// JitPack 遠(yuǎn)程倉(cāng)庫(kù):https://jitpack.io
maven { url 'https://jitpack.io' }
}
}
- 配置完遠(yuǎn)程倉(cāng)庫(kù)后祈争,在項(xiàng)目 app 模塊下的
build.gradle
文件中加入遠(yuǎn)程依賴(lài)
android {
// 支持 JDK 1.8
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
// 吐司框架:https://github.com/getActivity/Toaster
implementation 'com.github.getActivity:Toaster:12.0'
}
初始化框架
public class XxxApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 初始化 Toast 框架
Toaster.init(this);
}
}
框架 API 介紹
// 顯示 Toast
Toaster.show(CharSequence text);
Toaster.show(int id);
Toaster.show(Object object);
// debug 模式下顯示 Toast
Toaster.debugShow(CharSequence text);
Toaster.debugShow(int id);
Toaster.debugShow(Object object);
// 延遲顯示 Toast
Toaster.delayedShow(CharSequence text, long delayMillis);
Toaster.delayedShow(int id, long delayMillis);
Toaster.delayedShow(Object object, long delayMillis);
// 顯示短 Toast
Toaster.showShort(CharSequence text);
Toaster.showShort(int id);
Toaster.showShort(Object object);
// 顯示長(zhǎng) Toast
Toaster.showLong(CharSequence text);
Toaster.showLong(int id);
Toaster.showLong(Object object);
// 自定義顯示 Toast
Toaster.show(ToastParams params);
// 取消 Toast
Toaster.cancel();
// 設(shè)置 Toast 布局(全局生效)
Toaster.setView(int id);
// 設(shè)置 Toast 樣式(全局生效)
Toaster.setStyle(IToastStyle<?> style);
// 獲取 Toast 樣式
Toaster.getStyle()
// 判斷當(dāng)前框架是否已經(jīng)初始化
Toaster.isInit();
// 設(shè)置 Toast 策略(全局生效)
Toaster.setStrategy(IToastStrategy strategy);
// 獲取 Toast 策略
Toaster.getStrategy();
// 設(shè)置 Toast 重心和偏移
Toaster.setGravity(int gravity);
Toaster.setGravity(int gravity, int xOffset, int yOffset);
// 設(shè)置 Toast 攔截器(全局生效)
Toaster.setInterceptor(IToastInterceptor interceptor);
// 獲取 Toast 攔截器
Toaster.getInterceptor();
框架亮點(diǎn)
一馬當(dāng)先:首款適配 Android 11 的吐司框架斤程,開(kāi)發(fā)者無(wú)需關(guān)心適配過(guò)程
無(wú)需權(quán)限:不管有沒(méi)有授予通知欄權(quán)限都不影響吐司的彈出
兼容性強(qiáng):處理原生 Toast 在 Android 7.1 產(chǎn)生崩潰的歷史遺留問(wèn)題
功能強(qiáng)大:不分主次線程都可以彈出Toast,自動(dòng)識(shí)別資源 id 和 int 類(lèi)型
使用簡(jiǎn)單:只需傳入文本菩混,會(huì)自動(dòng)根據(jù)文本長(zhǎng)度決定吐司顯示的時(shí)長(zhǎng)
性能最佳:使用懶加載模式忿墅,只在顯示時(shí)創(chuàng)建 Toast,不占用 Application 啟動(dòng)時(shí)間
體驗(yàn)最佳:顯示下一個(gè) Toast 會(huì)取消上一個(gè) Toast 的顯示沮峡,真正做到即顯即示
全局統(tǒng)一:可以在 Application 中初始化 Toast 樣式疚脐,達(dá)到一勞永逸的效果
關(guān)于通知欄權(quán)限
本框架已經(jīng)完美解決這個(gè)問(wèn)題,(請(qǐng)以Demo測(cè)試為主)
具體解決方案可見(jiàn):Toast通知欄權(quán)限填坑指南