第三部分:Android 应用程序接口指南---第二节:UI---第八章 Toast通知
第8章 Toast通知
Toast通知是在窗口前面彈出的信息。它只占有信息所需要的空間量,并且用戶當前的activity仍然是可見的、可互動的。這種通知自動地淡入和淡出,它不接受交互事件。他相當于一種臨時的界面,用來反饋信息給用戶,比如當你把某條信息保存為草稿的時候,會彈出如圖8-1所示
下面的截圖是鬧鈴應用程序的一個Toast通知示例。一旦開啟鬧鈴,就會顯示一個Toast,它提示你鬧鈴已經設定成功,如圖1-9-1所示;。
?
圖8-1 保存為草稿的toast效果
你可以通過Activity或Service來創建和顯示toast。如果你通過service創建了一個toast通知,那么toast通知就會出現在當前處于焦點的activity前面。
8.1 基礎知識
首先,用一個makeText()方法可以實例化一個toast對象。這種方法需要三個參數:應用程序Context、文本消息和toast的持續時間。它會返回一個適當的被初始化的Toast對象。你可以用show()方法來顯示Toast通知,如代碼清單8-1所示:
Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT;Toast toast = Toast.makeText(context, text, duration); toast.show();?
代碼清單8-1
這個例子演示了對于大多數toast通知。你應該極少用到其他東西。然而,你可能想要把toast放置在不同的位置或者甚至用你自己的布局而不是一個簡單的文本信息。接下來的部分將告訴你如何做到這些事。你還可以直接使用一行代碼顯示toast對象,如代碼清單8-2所示:
Toast.makeText(context, text, duration).show();?
代碼清單8-2
8.2 放置你的Toast
一個標準的toast通知是出現在屏幕底部附近,并且水平居中。你可以用setGravity(int,int,int)方法來改變位置。它需要三個參數:一個Gravity常量、一個x-位置偏移、一個y-位置偏移。
例如,如果你認為Toast應該出現在左上角,那么你可以這樣設定gravity,如代碼清單8-3所示:
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);?
代碼清單8-3
如果你想把位置稍微右移,那么增加第二個參數的值。向下移,就增加最后一個參數的值。
?
8.3 創建一個自定義的Toast View
如果一個簡單的文本信息不能夠很好地顯示信息,那么你可以為你的toast通知創建一個自定義布局。要創建一個自定義布局,你需要在XML文件或你的應用程序編碼中定義一個View布局,并傳遞根View對象給setView(View)方法。
例如你可以用下面代碼清單8-4所示的XML布局文件(保存為toast_layout.xml)來創建圖8-2所示的toast布局:
?
圖8-2 toast布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/toast_layout_root"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:padding="10dp"android:background="#DAAA"><ImageView android:id="@+id/image"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_marginRight="10dp"/><TextView android:id="@+id/text"android:layout_width="wrap_content"android:layout_height="fill_parent"android:textColor="#FFF"/> </LinearLayout>?
代碼清單8-4
實現代碼如代碼清單8-5所示:
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.toast_layout,(ViewGroup) findViewById(R.id.toast_layout_root));ImageView image = (ImageView) layout.findViewById(R.id.image); image.setImageResource(R.drawable.android); TextView text = (TextView) layout.findViewById(R.id.text); text.setText("Hello! This is a custom toast!");Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show();?
代碼清單8-5
首先,用getLayoutInflater()(或者getSystemService())方法來獲取LayoutInflater,然后用inflate(int,ViewGroup)方法把XML布局文件轉換成代碼。第一個參數是布局資源ID,第二個參數是根View。你可以用這個轉換過的布局來找到更多的View對象,所以現在可以捕獲和定義ImageView和TextView元素的content。最后,用Toast(Context)創建一個新的Toast,并給它設定一些屬性,比如方位和持續時間。然后調用setView(View)并給它傳遞轉換過的布局。現在你可以調用show()方法來顯示自定義的布局了。注意:?不要為一個toast使用公有構造函數,除非你打算用setView(View)來定義布局。如果你沒有一個自定義的布局,那么你可以用makeText(Context,int,int)來創建Toast。
?本文來自jy02432443,是本人辛辛苦苦一個個字碼出來的,轉載請保留出處,并保留追究法律責任的權利?QQ78117253?
總結
以上是生活随笔為你收集整理的第三部分:Android 应用程序接口指南---第二节:UI---第八章 Toast通知的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件系统及软链接和硬链接
- 下一篇: SqlBulkCopy批量插入数据库