Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 跟我學Android之十 對話框

跟我學Android之十 對話框

編輯:關於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示例運行效果

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved