編輯:關於Android編程
本章內容
第1節 Toast提示框
第2節 AlertDialog對話框
第3節 特色對話框
第4節 自定義對話框
本章目標
熟練掌握Toast的用法。
熟練掌握Dialog的用法。
掌握幾種常用的特色對話框的用法。
掌握自定義對話框的方法。
掌握Notification的用法。
Toast是一種浮於屏幕最上層,用於顯示消息的窗體,u主要用於顯示各種動作的提示信息,比如:
?正在編寫的郵件自動保存到了草稿箱
?刪除某條通訊了成功了
uToast窗體只是占據一部分的屏幕窗口
u當前的Activity依然保持存在並能與用戶交互
uToast在顯示一段時間超時後會自動關閉
構建Toast消息
u1、通過Toast.makeText()方法創建一個Toast對象
Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration);
?duration參數表示Toast顯示的超時時間設定,可以取值如下:
lToast.LENGTH_SHORT短時間顯示(大約2秒)
lToast.LENGTH_LONG長時間顯示(大約3.5秒)
u2、通過Toast.show()方法顯示Toast窗體
u
調整Toast的顯示位置
u默認情況下,Toast顯示在屏幕底部,水平居中的位置
u通過Toast.setGravity()方法可以修改顯示位置,支持三個參數
?第一個參數gravity:接收一個Gravity常量,可以是常量的組合
?第二個參數是x方向的偏移量
?第三個參數是y方向的偏移量
toast .setGravity(Gravity.TOP|Gravity.LEFT, 20, 30);
Toast的外觀除了默認情況外,也可以進行定制
u1、為Toast中顯示的內容定制一個視圖布局(toast_layout.xml)
u2、采用動態加載的辦法在程序中為Toast使用定制布局
LayoutInflater li = getLayoutInflater(); View layout = li.inflate(R.layout.toast_layout_root, null); TextView tv = (TextView)layout.findViewById(R.id.text); tv.setText("custom toast"); Toast t = new Toast(getApplicationContext()); t.setGravity(Gravity.CENTER, 0, 0); t.setDuration(Toast.LENGTH_SHORT); t.setView(layout); t.show();
Dialog是一個讓用戶做一個決定或者輸入一些信息的窗口,對話框通常不充滿屏幕,與Toast不同,對話框不會自動關閉,對話框出現時,當前Activity的界面繼續顯示但不能進行交互,對話框不是一個視圖,基類是Dialog繼承自Object
對話框的創建方法有多種
uAndroid系統提供了很多對話框的類用於創建各種對話框
?android.app.AlertDialog
?android.app.DatePickerDialog
?android.app.TimePickerDialog
?android.app.ProgressDialog
u自主定義對話框內容
u通過AlertDialog創建對話框是最常用的辦法
AlertDialog是Dialog的直接子類
u包含一個標題
u包含一個文本消息
u可以管理0~3個按鈕
u可以包含單選列表和多選列表
u不能直接創建對象,需要使用AlertDialog.Builder
u
u
使用AlertDialog
u創建AlertDialog對象
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog alert = builder.create();
u使用Builder對象的setTitle()方法設置標題內容
builder.setTitle(“信息提示”);
u使用Builder對象的setMessage()方法設置消息內容
builder.setMessage (“信息提示”);
使用AlertDialog,添加按鈕
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MyActivity.this.finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } } );
簡單列表對話框相當於將ListView組件放在對話框上
u通過AlertDialog.Builder中的setItems()設置內容和事件監聽
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("請選擇你最喜歡的運動"); builder.setItems(items, new OnClickListener() { public void onClick(DialogInterface dialog, int which) { show.setText("你選中了《" + items[which] + "》"); } }); builder.create().show();
簡單列表對話框相當於將ListView組件放在對話框上,運行後的效果圖
單選列表對話框用於顯示單選列表
u通過Builder中的setSingleChoiceItems()設置內容和事件監聽
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setSingleChoiceItems(items, 1, new OnClickListener() { public void onClick(DialogInterface dialog, int which) { show.setText("你選中了《" + items[which] + "》"); } }); builder.setTitle("請選擇要使用的情景模式"); builder.create().show();
單選列表對話框用於顯示單選列表,運行後的效果圖
復選列表對話框用於顯示復選項列表,通過Builder中的setMultiChoiceItems()設置內容和事件監聽
final boolean[] checkedItems= new boolean[] { false, true, false,true, false }; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("請選擇您喜愛的游戲"); builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog, int which, boolean isChecked) { checkedItems[which]=isChecked; //改變被操作列表項的狀態 } }); builder.create().show();
復選列表對話框用於顯示復選項列表
u運行後的效果圖
自定義列表對話框用於顯示自定義列表,通過Builder中的setAdapter()設置列表項內容
final String[] items = new String[] { "邁巴赫","布加迪","法拉利","保時捷"}; AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle("自定義列表項對話框") .setIcon(R.drawable.tools) .setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1 , items), new OnClickListener() { public void onClick(DialogInterface dialog, int which) { show.setText("你選中了《" + items[which] + "》"); } }); builder.create().show();
自定義列表對話框用於顯示自定義列表,運行後的效果圖
自定義對話框的實現思路
u所謂自定義就是要擺脫對話框的固有模式,顯示自定義的設計
u首先需要做的是通過布局的方式將自定義內容的布局設計出來
?一般會在res/layout下通過xml文件存放自定義的設計
u然後通過對話框提供的能力將自定義的布局顯示在對話框中
uAlertDialog類提供了使用自定義內容的基礎
通過AlertDialog類實現自定義對話框
uAlertDialog是Dialog的子類,完全具備了Dialog的特性
u對於Dialog來講,如果沒有設置Title,Title位置依然空白存在
?AlertDialog可以解決這個問題
u使用AlertDialog加載自定義布局的示例如下:
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.custom_dlg, null); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setView(layout); AlertDialog alertDialog = builder.create(); alertDialog.show();
自定義對話框,示例運行效果
對話框風格的窗口
這種對話樞本質上依然是窗口,只是把顯示窗口的Activity的風格設為對話樞風格即可,需要先增加Activity,在清單文件中進行設置
自定義對話框
u示例運行效果
Android 工程構建的持續集成,需要搭建一套編譯和打包自動化流程,比如建立每日構建系統、自動生成發布文件等等。這些都需要我們對Android工程的編譯和打包有一個比較
Hello,大家好,最近好長時間沒有寫博客了,因為我決定辭職了。 廢話不多說,我們還是來看屬性動畫在上一篇 Android 動畫詳解之屬性動畫(Property Anim
前言:為什麼要了解系統Activity,Service,,BroadCastReceiver,ContentProvider的啟動流程,這是一個對於即將理解插件中的四大組
什麼是反射?反射是一種能夠在程序運行時動態訪問、修改某個類中任意屬性(狀態)和方法(行為)的機制(包括private實例和方法),java反射機制提供了以下幾個功能:在運