前言
這篇博客講解一下Android下的一個簡單信息提示的方式:Toast。如果一直看我的博客,會發現在之前的Demo中,一直有用到Toast去提示消息,在這篇博客中就專門講它。Toast提供一個浮動的簡單的小顯示塊,並且不影響任何其他操作,僅僅用於提示信息,並且會在超時后,自動消失。因為它的及時性已經自動消失的特性,不適合提示一些重要的信息,如果有重要的信息,可以使用Notification提示用,Notification之后會介紹。在本片博客中將講解Toast的常規使用,以及特殊的屬性、方法的使用,並且會說明如何使用Toast創建一個自定義的內容,並且最后會對以上講解的內容給出代碼示例。
Toast
Toast是為了給當前視圖顯示一個浮動的顯示塊,它永遠不會獲得焦點。一般用於提示一些不那么引人注目,但是又希望用戶看見的消息,無需用戶自己維護它的消失。
如果只是提示簡單的信息,使用Android為Toast提供的兩個靜態的方法最為方便,它們會返回一個Toast對象,如果需要顯示,只需要調用show()方法顯示即可,下面是這兩個方法的簽名:
- static Toast makeText(Context context,int resId,int duration).
- static Toast makeText(Context context,CharSequence text,int duration)
上面兩個方法,參數大致相同,一個上下文對象Context,一個顯示的消息來源,一個設置持續時間。消息來源可以指定String資源,使用<string.../>標簽在XML資源文件中定義,還可以指定一個字符串用於消息展示。最后的duration參數設置了Toast的持續時間,一般使用Toast自帶的兩個整形的常量:LENGTH_LONG(1,時間稍長)、LENGTH_SHORT(0,時間稍短),針對不同的使用場景,選擇不用的持續時間。
Toast消息的默認顯示位置在屏幕的中間偏下,Android也為開發者提供了方法設置Toast消息的位置,使用setGravity(int gravity, int xOffset, int yOffset)方法即可設置,它有三個參數,gravity設置一個重力方向,另外兩個設置水平和垂直方向的偏移量。
示例:使用Toast提示一個簡單的消息,顯示在屏幕中間。
1 btnToast1.setOnClickListener(new View.OnClickListener() { 2 @Override 3 public void onClick(View v) { 4 // TODO Auto-generated method stub 5 Toast toast=Toast.makeText(MainActivity.this,"Toast提示消息",Toast.LENGTH_SHORT ); 6 toast.setGravity(Gravity.CENTER, 0, 0); 7 toast.show(); 8 } 9 });
顯示效果:
自定義消息
無論是從美觀的角度、還是用戶視覺體驗的角度,很多時候都不僅僅需要顯示一簡單的文本信息。如果需要顯示用戶自定義的消息,那么就不能使用上面介紹的靜態方法來得到一個Toast對象,而是需要使用Toast的構造方法進行初始化,然后對相應的屬性進行設置。一般對於自定義布局的顯示,會使用XML定義好一個布局文件,這樣清晰明朗。
步驟如下:
- 使用LayoutInflater.from(Context).inflate(int , ViewGroup)方法動態獲得需要顯示的View。
- 對View中的控件進行必要操作。
- 使用構造函數初始化Toast。
- 使用Toast.setView(View)進行設置。
- 最后使用show()方法展示Toast消息。
下面通過一個示例展示自定義布局在Toast中的顯示:
Toast消息的布局代碼:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@+id/toast_layout_root" 4 android:orientation="horizontal" 5 android:layout_width="fill_parent" 6 android:layout_height="fill_parent" 7 android:padding="8dp" 8 android:background="#DAAA" 9 > 10 <ImageView android:src="@drawable/ic_launcher" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:layout_marginRight="8dp" 14 /> 15 <TextView android:id="@+id/text" 16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content" 18 android:textColor="#FFF" 19 /> 20 </LinearLayout>
Toast消息的顯示代碼:
1 btnCustomToast.setOnClickListener(new View.OnClickListener() { 2 3 @Override 4 public void onClick(View v) { 5 View view=LayoutInflater.from(MainActivity.this).inflate(R.layout.toast_layout,null ); 6 TextView tv=(TextView)view.findViewById(R.id.text); 7 tv.setText("自定義提示Toast"); 8 Toast toast=new Toast(MainActivity.this); 9 toast.setView(view); 10 toast.show(); 11 12 } 13 });
效果展示:
總結
以上就講解了Toast的使用,在Android中,Toast提示消息的方式會經常被用到,所以掌握它是有必要的,之后會介紹另外一種消息提示方式,Notification。