1. 程式人生 > >自定義toast、toast重複顯示、切換介面toast自動消失

自定義toast、toast重複顯示、切換介面toast自動消失

自定義toast很簡單,就直接上程式碼:

先是佈局,只有一個TextView即可:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvToastTips"
        android:layout_width
="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:background="@drawable/toast_custom_selector" android:padding="12dp" android:textSize="21sp" android:textColor="#FFFFFF" />
</LinearLayout>

接著是類:

public class
MyWidget {
private static Context mContext = null; private static Toast mToast = null; //壓制警告 @SuppressLint("InflateParams") public static void myToast(String str) { //首先載入一個自定義的佈局 LayoutInflater inflater = LayoutInflater.from(MyApplication.getContext()); View view = inflater.inflate(R.layout.widget_custom_toast, null
); //然後找到裡面的控制元件,以單純的textview為例 TextView tvToastTips = (TextView) view.findViewById(R.id.tvToastTips); //避免toast長時間顯示 if (mToast != null) { mToast.cancel(); } //接下來就是給textview設定資訊 tvToastTips.setText(str); //最重要的就是下面了,把佈局引用到toast當中 //獲得toast mToast = new Toast(MyApplication.getContext()); //設定toast顯示的位置 mToast.setGravity(Gravity.CENTER, 0, -120); //設定彈出顯示的時間 mToast.setDuration(Toast.LENGTH_SHORT); //設定佈局 mToast.setView(view); //最後一步,show出來 mToast.show(); } /** * 使toast不在顯示 */ public static void cancleMyToast() { if (mToast != null) { mToast.cancel(); } } }

在程式碼中只需要:

MyWidget.myToast("需要提示的內容");

即可使用自定義形狀、顏色、位置的Toast。

關於toast重複顯示,導致toast長時間不消失,嚴重影響使用者體驗的問題。網上有不少相關的文章可以參考,我這裡採用的方法是上述程式碼塊中的:

        //避免toast長時間顯示
        if (mToast != null)
        {
            mToast.cancel();
        }

這部分程式碼就是在每次呼叫toast的時候,只要toast不為空就把前面的取消掉,只顯示最新toast內容,這樣就不會出現螢幕上長時間顯示toast的情況了。

切換介面toast自動消失也是很必要的,試想使用者介面都切換幾個了toast遲遲的捨不得離去,肯定不是什麼好的使用者體驗。網上有說重寫系統方法實現點選返回鍵時使toast消失,但是若不是通過返回鍵切換介面的話就沒有效果。最好的方法是監控返回鍵,當點選返回鍵時使toast消失,這也是必要的。我們還需要在activity或者fragment被替換、銷燬的生命週期方法中呼叫上述MyWidget程式碼中:

/**
     * 使toast不在顯示
     */
    public static void cancleMyToast()
    {
        if (mToast != null)
        {
            mToast.cancel();
        }
    }

方法,即可使其及時消失。

相關推薦

定義toasttoast重複顯示切換介面toast自動消失

自定義toast很簡單,就直接上程式碼: 先是佈局,只有一個TextView即可: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android

實現中等難度通訊錄。需求: 1、定義聯絡人類AddressContact。例項變數:姓名(拼音,首字母大寫)性別電話號碼住址分組名稱年齡。方法:自定義初始化方法(姓名電話號碼)、顯示聯絡人

<span style="font-size:24px;">// 1、定義聯絡人類AddressContact。例項變數:姓名(拼音,首字母大寫)、性別、電話號碼、住址、分組名稱、年齡。方法:自定義初始化方法(姓名、電話號碼)、顯示聯絡人資訊 { NS

vue定義過濾器格式化時間為年小時分鐘剛剛

color 進行 ges time log 格式化時間 lte seconds gets 首先需要在需要過濾的時間裏面添加一個過濾器 我這裏需要過濾的是item.time 然後需要在item.time後面添加自定義過濾的名稱 date 接下來就是需要定

Django——模板層(template)(模板語法定義模板過濾器及標簽模板繼承)

num 序列 document 希望 可讀性 數量 AC 自然 同學 前言:當我們想在頁面上給客戶端返回一個當前時間,一些初學者可能會很自然的想到用占位符,字符串拼接來達到我們想要的效果,但是這樣做會有一個問題,HTML被直接硬編碼在 Python代碼之中。

在PyODPS DataFrame定義函數中使用pandasscipy和scikit-learn

函數背景PyODPS DataFrame 提供了類似 pandas 的接口,來操作 ODPS 數據,同時也支持在本地使用 pandas,和使用數據庫來執行。PyODPS DataFrame 除了支持類似 pandas 的 map 和 apply 方法,也提供了 MapReduce API 來擴展 pandas

CAD轉換PDF格式,定義設置PDF的尺寸顏色質量

文件 清晰 自定義 轉換pdf 這一 下載 批處理 ad轉換 保存文件 我們在日常辦公工作中,經常需要把CAD 轉換成PDF格式,但是有時候會發現,轉換完成的PDF圖紙的顯示是不清晰的。可能尺寸、顏色、質量都有問題,這時候我們該如何才能解決這一問題呢?今天小編就為大家迅捷C

定義Git ~ 忽略特殊檔案.gitignore配置別名搭建Git伺服器(十八)

在 安裝 Git 一節中,我們已經配置了使用者名稱 user.name 和 Email 地址 user.email,實際上,Git還有很多可配置項。比如,讓 Git 顯示顏色,會讓 輸出的命令 看起來更醒目,如下: 這樣,Git 會適當地顯示不同的顏色,比如 git status

定義組合控制元件:Banner輪播圖廣告欄控制元件

1. 專案概述 這裡,我們使用自定義組合控制元件實現一個自動輪播的廣告條,也叫輪播圖,完整版的效果圖如下圖所示。其實,這就是我們經常見到的滾動廣告,預設情況下每隔N 秒會自動滾動,用手指左右滑動時也會切換到上一張或者下一張。當介面切換時,對應廣告圖片的標題也會

C#中的定義控制元件中的屬性事件及一些相關特性的總結

今天學習了下C#使用者控制元件開發新增自定義屬性的事件,主要參考了MSDN,總結並實驗了一些用於開發自定義屬性和事件的特性(Attribute)。 在這裡先說一下我的環境: 作業系統:Windows7旗艦版(Service Pack 1) VS版本:Microsoft

springmvc在處理請求過程中出現異常資訊交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。為了區別不同的異常通常根據異常型別自定義異常類,這裡我們建立一個自定義系統異常,如果controllerservicedao丟擲此類異常說明是系統預期處理的異常資訊。

springmvc在處理請求過程中出現異常資訊交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。 1.1 異常處理思路 系統中異常包括兩類:預期異常和執行時異常RuntimeException,前者通過捕獲異常從而獲取異常資訊,後者主要通過規範程式碼開發、測試通過手段減少執

springmvc在處理請求過程中出現異常信息交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。為了區別不同的異常通常根據異常類型自定義異常類,這裏我們創建一個自定義系統異常,如果controllerservicedao拋出此類異常說明是系統預期處理的異常信息。

ansi req -type this spring 進行 name ext code springmvc在處理請求過程中出現異常信息交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。 1.1 異常處理思路 系統中異常包括兩類:預期異常和運行時異常Ru

Android繪圖:定義View之——矩形進度條圓環進度條填充型進度條時鐘

主函式 這幾種進度條的主函式都是類似的,所以下面我只給出了一個填充型進度條的主函式,其他幾個主函式只是在這基礎上改動一下按鈕id(即與各自佈局裡面的id相同即可),還有改動一下相對應的類即可。 public class MainActivity

Android定義軟鍵盤樣式:字母數字標點三種切換

第一次寫,直接上程式碼吧: 先看效果圖: 1.在需要的呼叫軟鍵盤的activity_mian.xml中加入鍵盤控制元件 <!--自定義鍵盤控制元件--> <RelativeLayout android:layout_width="fill

ckeditor定義視訊外掛支援優酷土豆騰訊視訊

現最近專案使用的ckeditor作為編輯器,業務需要新增視訊內容,搜尋後發現一個video的外掛,但是隻支援MP4格式並且要做資源服務,不滿足現階段需求。現階段最好能直接嵌入第三方視訊服務商的內容。

android定義側滑LisitView(包含編輯刪除)

      (尊重原創轉載請說明來處,謝謝)        最近由於專案的需要,自定義了一個具有側滑功能的listview,側滑後可以點選編輯、刪除。好了,大家先看一下效果圖,畢竟是看臉的世界 好了,我要先講一下思路,一次編輯很難完善,有什麼問題我後來還會補上,歡迎各位

SwipeToLoadLayout佈局中新增定義控制元件仿美團餓了嗎等下拉效果

  SwipeToLoadLayout是一個可重用的下拉重新整理和上拉載入控制元件,理論上支援各種View和ViewGroup(ListView,ScrollView,RecyclerView,GridView,WebView,Linearlayout,Rela

Android 特殊的單例Toast(防止重複顯示

1、介紹 所謂單例Toast就是每次顯示的時候不會重複建立,節約資源。網上有很多這樣的單例Toast,但是本篇介紹的是特殊的單例Toast,根據顯示事件的長短來顯示內容。正常的Toast顯示的時候會出現這樣的情況,當我們點選一個按鈕彈出Toast的時候,當Toast顯示沒有結束的時候再次點選,後臺就會又建

c#定義配置節點(web.configapp.config)

這裡提供一個例項的完整寫法,深入瞭解的話請參考官方的文件 1.專案引用System.Configuration 2.編寫PositionConfigurationSection,程式碼如下: public class PositionConfigurationSection: Confi

android 定義ListView實現下拉重新整理分頁載入點選事件——定義控制元件學習(七)

package com.example.administrator.customerpulldownrefreshandpageload; import android.content.Context; import android.os.Handler; import android.os.Message

JavaScript定義瀏覽器滾動條相容IE 火狐和chrome

今天為大家分享一下我自己製作的瀏覽器滾動條,我們知道用css來自定義滾動條也是挺好的方式,css雖然能夠改變chrome瀏覽器的滾動條樣式可以自定義,css也能夠改變IE瀏覽器滾動條的顏色。但是css只能是改變IE瀏覽器的顏色,而且CSS不能做到改變火狐瀏覽器的樣式和顏色。