使用浮動顯示-Toast類別
Android提供浮動顯示的元件「android.widget.Toast」類別,使用Toast類別的靜態方法makeText方法可以浮動顯示文字,規格如下:
Toast.makeText(Context context, Charsequence text, int duration)
第一個參數為Context,目前類別MainActivity即是一個Context物件,因為Activity的上二層父類別就是Context,因此本類別MainActivity即是Context的一種,可使用「this」關鍵字代表本類別。第二個參數為「Charsequence」介面,Java的String類別即是其子類別,因此第二個參數即是想要顯示的字串值。最後,第三個參數為浮動顯示的時間長度,1代表有較長的時間停留在畫面上(大概三秒),而0代表較短時間,使用範例如下:
Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show();
請注意第三個參數,不要直接使用1或0,應使用Toast類別中為其所定義的LENGTH_LONG或LENGTH_SHORT代表長與短時間的常數,雖然程式碼會比起直接給1或0來得長,但能大大增加程式在未來的可讀性。最後,別忘了呼叫Toast類別的show方法才會在畫面下方顯示浮動資訊,如下圖:
在本例先將bmi值(float型態)轉換為String後,即可浮動顯示BMI值,程式碼如下:
執行結果如下圖:
使用浮動顯示主要目的是盡量不影響使用者,重要性不高的資訊可以使用Toast類別顯示,但如果有重要資訊需告知使用者,則可使用AlertDialog對話框。
使用對話框-AlertDialog類別
對話框是很常見的視覺元件,可用來提示、告知使用者必要的訊息,主要由Android中的「android.app.AlertDialog」類別提供相關的功能。由於對話框的種類繁多,有無標題、圖示、訊息、按鈕等各類需求,要提供如此繁複的建構子是有一定難度的,就算有,開發人員光是要記住這麼多的建構子參數也是非常頭痛的,因此,AlertDialog是以「Builder」設計模式提供使用者產生合適的物件。
AlertDialog.Builder類別
「AlertDialog.Builder」是一個公開的內部類別,它就如同一個「製造機」,先產生AlertDialog.Builder物件後,再呼叫Builder提供的方法配置想要的功能與資訊,完成後再呼叫show()方法產生對話框並顯示在畫面上。產生Builder物件時,建構子參數需要Context類別,可使用this關鍵字將MainActivity傳入,範例程式碼如下:
//產生Builder物件 AlertDialog.Builder builder = new AlertDialog.Builder(this); //呼叫setMessage方法設定顯示文字 builder.setMessage("Hello"); //顯示對話框 builder.show();
上述的builder物件是為特定的對話框服務,對話框顯示完成後,其實builder物件不會再被使用。
簡化寫法
在開發時,對於不需要重複使用的物件,可使用匿名方式(Anonymouse)建立Builder物件,設定完成後即顯示,而不需要為物件命名一個物件,使用方式如下:
上述程式碼的第59行產生一個Builder物件,接著馬上在第60、61行呼叫設定對話框資訊的setMessage與setTitle方法設定內文與標題,使用「bmi+ “”」是利用加號其中一個運算為String時,會將另一個運算元也轉換為String的特性,目的是稍微簡化程式碼,最後62行直接將已設定完成的對話框物件顯示在畫面上。
AlertDialog.Builder的方法
常用的方法如下表:
- AlertDialog create():依Builder目前配置產生一個對話框物件。
- Builder setIcon(int resId):設定圖示,使用R.drawable.X資源記錄。
- Builder setMessage(Charsequence text):設定對話框的內文字串。
- Builder setTitle(Charsequence text):設定對話框的標題字串。
- void show():產生對話框物件並顯示在畫面中。
對話框按鈕
Android的AlertDialog能夠配置按鈕,預設按鈕有三種,一為「正向按鈕」,例如確定(OK)、是(Yes),二為「中性按鈕」,例如取消(Cancel),第三種為「否定按鈕」,例如否(No)。設定這些按鈕的方法如下:
-
正向按鈕方法為setPositiveButton,使用如下:
提示:
當游標放在方法的括號內時,按下「Ctrl+P」可顯示方法的規格,可得知傳入參數的資料型態。
第一個參數為String,代表按鈕中顯示的文字資料,第二個參數是當按鈕被使用者按下時的傾聽器物件,上圖第62行中給的是null值,代表按下OK按鈕後不做任何事,會直接關閉對話框,執行結果對話框如下圖:
-
中性按鈕方法為setNeuButton,使用如下:
執行結果對話框如下圖:
各個版本的Android系統對於正向、中性、反向按鈕的排列方式會有不同,因此,針對按鈕的意義去使用合適的方法設定,讓Android系統決定按鈕應該的位置即可。