當前位置:編程學習大全網 - 源碼下載 - 使用Snackbar替換Toast

使用Snackbar替換Toast

Toast是Android平臺較常用的基礎提示控件,使用簡單易用;但是,Toast是系統層面提供的,不依賴於前臺頁面,存在濫用的風險。為了規避這些風險,Google在Android系統版本的叠代過程中,不斷進行了優化和限制。這些限制不可避免的影響到了正常的業務邏輯,在叠代過程中,我們遇到過以下幾個問題:

當然了,上面這些問題,多少有壹些替代方案,比如以下這些方式:

經過對比和參考 美團實踐方案 ,最終采用Snackbar對Toast進行替換。

針對Snackbar彈出的時候,被Dialog,PopupWindow等控件遮住的問題,原因在於Snackbar依賴於View,當把Activity布局的View傳給Snackbar做為Snackbar展示依賴的父View時,後面再彈Dialog,PopupWindow等控件,Snackbar就會被控件遮擋。正確的做法是直接把PopupWindow和Dialog所依賴的View傳給Snackbar。那麽我們定制化的Snackbar不僅支持傳遞這個View,也支持直接傳遞PopupWindow和Dialog的實例

跨頁面存在兩種情況:

這兩種情況都是在彈出Snackbar之後所依賴的Activity不可見或者關閉導致無法正常顯示。所以將消息緩存起來,後置到下壹個可見Activity進行處理,通過 application.registerActivityLifecycleCallbacks 進行頁面onStart監聽實現

系統的Snackbar不支持自定義擴展,所以參考Snackbar的源碼,進行了按需定制。

簡而言之:請在合適的時候、合適的場景、使用合適的API

註意:如繼續使用ToastUtils中相關API,還是會老的Toast進行展示

  • 上一篇:常用的數據庫有哪些?
  • 下一篇:安卓如何變蘋果系統
  • copyright 2024編程學習大全網