Android一種信息提示機制:Toast

2021-01-10 IT168

  【IT168技術】大家平時在開發的時候,應該經常會有這樣的需求,向用戶提示一些信息,比如程序的狀態,或者完成某個操作,而不希望打攪用戶當前正在進行的操作——不獲取任何焦點。我們一般很容易想到的一個方法就是使用類似對話框的機制,但即使是非模態的對話框,也會打擾用戶當前的操作,那麼有沒有更簡單的方法呢?

  答案當然是肯定的啦,android已經為我們提供了一個非常簡便的方法,那就是Toast,直譯為吐司~ 很可愛的名字吧~ 用起來像它的名字一樣,非常方便。例如我們要想用戶顯示一些文本信息,可以使用下面的方法~

  Toast.makeText(self, "Hello World!", Toast.LENGTH_SHORT).show();

  非常簡單的一句話,第一個參數self是當前上下文Context對象,接著是我們要顯示的消息文字,最後一個參數是顯示的時間,可以在這兩個值裡面取其一:

  Toast.LENGTH_SHORT

  Toast.LENGTH_LONG

  下面為運行效果:

  大家看看是不是很熟悉呢,很多應用中都可以看到類似的提示信息,這條信息不會影響用戶任何正在進行的操作,當時間到了之後,他會自動消失。

  那麼Toast是不是除了顯示文本消息,就沒有其他功能了呢?當然不是了,Toast遠不只是顯示文本這麼簡單,我們可以定製它的界面,只需使用它的setView傳入任何符合View規範的對象,就可以演變出各種口味的吐司~~

  例如,我們的手機上都有調節音量的按鈕,其實這個功能的界面就是一個Toast,例如下面這幅圖:

  我們每點擊Increase Volume 這個按鈕一次,這個進度條就會浮現出來,並且增加一格,如果幾秒內沒有任何操作,這個進度條就會消失,直到我們再次點擊Increase Volume按鈕。這個操作就和我們平時調節音量的兩個按鈕非常像了,下面是主幹代碼:

  我們首先需要定義一個Layout,用來顯示Toast中的進度條和提示文字:

  3 xmlns:android="http://schemas.android.com/apk/res/android"

  4 android:layout_width="280dp"

  5 android:layout_height="wrap_content"

  6 android:gravity="center_horizontal"

  7 android:orientation="vertical"

  9 >

  11 android:layout_width="fill_parent"

  12 android:layout_height="wrap_content"

  13 android:text="Volume"

  14 />

  16 android:id="@+id/progress"

  17 android:layout_width="280dp"

  18 android:layout_height="wrap_content"

  19 android:progress="50"

  20 android:max="100"

  21 style="?android:attr/progressBarStyleHorizontal"

  22 />

  隨後,我們就可以在按鈕的點擊事件裡面添加下面的代碼:

  1 ((ProgressBar)volumeView.findViewById(R.id.progress)).setProgress(

  2 ((ProgressBar)volumeView.findViewById(R.id.progress)).getProgress() + 5

  3 );

  6 if(volumeToast == null ) {

  7 volumeToast = new Toast(self);

  8 volumeToast.setGravity(Gravity.TOP, 0, 150);

  9 volumeToast.setView(volumeView);

  10 volumeToast.setDuration(Toast.LENGTH_LONG);

  11 }

  13 volumeToast.show();

  上面這段代碼也非常簡單吧~雖然實現起來很容易,但卻是很實用的功能,我們還可以利用Toast組合中各種新奇的好東西~ 下面就由大家來盡情的發揮想像吧~

相關焦點

  • android平臺通知體提醒機制研究
    本文從androidQQ用戶為樣本,通過定性和定量研究,得出android系統不同類型apps通知提醒機制,我們在進行手機系統和app設計的時候可以套用這個機制,評估當前設計的app屬於哪個類型,找到對應的通知提醒機制。一、 研究方法和流程1.
  • 老司機總結下 Android Studio 實用小技巧
    快捷鍵Xml文件相關在寫 xml 布局文件的時候會經常遇到諸如 ImageView Lint 缺少contentDescription 的提示,API 版本不對爆紅,android : text ="" 的值會在屏幕閃一下的問題.那麼我們完全可以使用
  • 想讓Android手機開掛,安裝Xposed框架就行了!
    用戶可以在一些應用商店或其自帶的下載庫來下載安裝各種模塊,相比於重新安裝系統來獲得新功能,Xposed提供了一種更便捷的方式[1][2]。Xposed模塊可以很容易的開啟和關閉。你只需要激活或者禁用Xposed模塊,然後重啟手機即可。
  • cheers和toast都是「乾杯」,哪裡不一樣?
    同事、朋友聚餐或慶祝時,大家都會來一杯,常用到的cheers/bottoms up/toast,都是「乾杯」,但你知道嗎,它們的用法不一樣。怎麼在不同的社交場合說出得體又地道的英文,讓你更自在、更自信,又更受歡迎?1、舉杯祝賀、乾杯Cheers!
  • 二維碼認識及Android快速接入(有源碼)
    是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的;二維碼是一種比一維碼更高級的條碼格式。一維碼只能在一個方向(一般是水平方向)上表達信息,而二維碼在水平和垂直方向都可以存儲信息。一維碼只能由數字和字母組成,而二維碼能存儲漢字、數字和圖片等信息,因此二維碼的應用領域要廣得多。
  • android常用的五大布局 - CSDN
    添加布局的方式利用XML文件設計 使用Java代碼添加五大常用布局線性布局 LinearLayout 相對布局 RelativeLayout 幀布局    FrameLayout 表格布局 TableLayout 約束布局 ConstraintLayout線性布局 LinearLayoutLinearayout又稱作線性布局,是一種非常常用的布局,這個布局會將它所包含的控制項在線性方向上依次排列
  • android判斷edittext獲取焦點 - CSDN
    我們在開發中,可能會遇到需要判斷用戶在輸入框裡寫的內容合不合法,比如判斷用戶輸入的內容是否是手機號,接下來我通過詳細說明一個小Demo來解決這個問題首先看一下這個Demo實現的效果圖我多打了一位數字就會提示錯誤了
  • android布局和界面 - CSDN
    LinearLayout是最簡單也是最常用的一種布局方式,它根據orientation 屬性值,將包含的所有控制項或布局對象排列在同一個方向:水平或垂直,在這種布局中,所有的控制項都是依序排列成一條線。在線性布局中的控制項允許有自己的margins和gravity屬性。
  • 教你如何在Mac系統下編譯Android系統的源碼
    「全國公廁雲平臺」11月19日上線試運行,匯總全國近33萬條公廁信息,初步實現快速尋廁功能。
  • Android 官方兼容庫 EmojiCompat Support Library
    emoji 是一種 表情符號,來自日語詞彙「絵文字」(假名為「えもじ」,讀音即 emoji)它的創造者是日本人慄田穰崇 ( Shigetaka Kurita ) ,他將目光投向兒時的各種元素以獲取靈感,如日本漫畫和日本漢字等。「日本漫畫中有許多不同的符號。漫畫家會畫出一些表情,表現一個人滿頭大汗或是迸發出一個想法時頭上出現一個燈泡。」
  • android 排列 - CSDN
    每一個LinearLayout裡面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。
  • 你知道cheers,bottoms up,make a toast哪個才是乾杯嗎?
    但如果查相關詞典,會發現「Make a toast!"也有「乾杯」的意思。那麼三者可否混用?顯然是不行的!這裡就需要區分英語中的細微差異。我們可以通過下面一個情景對話來了解:Boss:Our sales turmover surpassed 1 million US Dollar last month.I would like to make a toast to the good news!Cheers!(我們上個月的銷售額超過了100萬美元。
  • 手把手,帶你使用Toaster快速製作簡約風格的toast
    1.12 使用Toaster快速製作簡約風格的toast [iOS開發中的神兵利器]1. 本節課將為您演示,如何快速創建一個吐司窗口。首先確保在您的項目中,已經安裝了所需的第三方庫,雙擊查看此處的Pod配置文件。2.吐司窗口就是一個用來顯示簡短提示語句的小窗口。根據配置文件中的相關設置,安裝第三方庫。
  • Google 開源的 Android 排版庫:FlexboxLayout
    ,是2009年W3C提出了一種新的布局方案,可以簡便、完整、響應式地實現各種頁面布局,並且 React Native 也是使用的 Flex 布局。    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    app
  • 2020 年 Q1 季度五大熱門的 Android 庫
    <nl.joery.animatedbottombar.AnimatedBottomBar android:id="@+id/bottom_bar" android:background
  • android關閉開機啟動 - CSDN
    com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2919)07-03 10:20:26.633 3015 3027 W System.err: at android.os.Binder.execTransact(Binder.java:697)處理
  • android 垂直約束 - CSDN
    :constraint-layout:1.0.2'<android.support.constraint.ConstraintLayoutandroid:layout_width="match_parent"
  • Android 沉浸式狀態欄的實現
    沉浸式到底是一種什麼感覺呢?用戶完全沉浸的體驗,使用戶有一種置身於虛擬世界之中的感覺。我真的很難理解這是一種什麼感覺。。。。        <item name="android:colorControlNormal">@color/colorControlNormal</item>     </style>package: res/values-19/styles.xml 開始有android:windowTranslucentStatus
  • 定義Android 清單
    package=com.demo.android.bmi「package」 是「manifest」(清)嘶`的一特e儺裕例中的熱菘捎嗣鰨@用程式的M入c存在於「com.demo.android.bmi」@名Q空g/路街小android:versionCode=1android:versionName=1.0「android:versionCode
  • Android 自定義Switch開關按鈕的樣式
    ><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval">    <solid android:color="#94C5FF" />    <size        android:width="20dp