Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 從零開始學android(Dialog對話框.二十五.)

從零開始學android(Dialog對話框.二十五.)

編輯:關於Android編程

在圖形界面之中,對話框也是人機交互的一種重要形式,程序可以通過對話框對用戶進行一些信息的提示,而用戶也可以通過對話框的和程序進行一些簡單的交互操作。 在Android的開發之中,所有的對話框都是從android.app.Dialog類繼承而來,此類繼承結構如下: java.lang.Object ?android.app.Dialog
DIalog常用的方法 1 public void setTitle(CharSequence title) 普通 設置對話框的顯示標題 2 public void setTitle(int titleId) 普通 設置對話框的顯示標題,內容為資源文件指定 3 public void show() 普通 顯示對話框 4 public void hide() 普通 隱藏對話框 5 public boolean isShowing() 普通 判斷對話框是否顯示 6 public void setContentView(View view) 普通 設置View組件 7 public void setContentView(int layoutResID) 普通 設置View組件的ID 8 public void dismiss() 普通 隱藏對話框 9 public void closeOptionsMenu() 普通 關閉選項菜單 10 public void setDismissMessage(Message msg) 普通 設置隱藏對話框時的消息 11 public void setCancelable(boolean flag) 普通 設置是否可以取消 12 public void setCancelMessage(Message msg) 普通 設置對話框取消時的消息 13 public void cancel() 普通 取消對話框,與dismiss()方法類似 14 public Window getWindow() 普通 取得Window對象 15 public void setOnShowListener( DialogInterface.OnShowListener listener) 普通 設置對話框打開時監聽 16 public void setOnDismissListener ( DialogInterface.OnDismissListener listener) 普通 對話框隱藏時監聽 17 public void setOnCancelListener( DialogInterface.OnCancelListener listener) 普通 設置對話框取消時監聽
一般情況下我們用AlertDialog中的內部類來實例化 dialog對象
DIalog中常用的方法,大家了解就行了,具體會在代碼中說明 1 public AlertDialog.Builder(Context context) 構造 創建AlertDialog.Builder對象 2 public AlertDialog.Builder setMessage (int messageId) 普通 設置顯示信息的資源ID 3 public AlertDialog.Builder setMessage (CharSequence message) 普通 設置顯示信息的字符串 4 public AlertDialog.Builder setView(View view) 普通 設置顯示的View組件 5 public AlertDialog.Builder setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener) 普通 設置對話框顯示一個單選的List,指定默認選中項,同時設置監聽處理操作 6 public AlertDialog.Builder setSingleChoiceItems (ListAdapter adapter, int checkedItem, DialogInterface.OnClickListener listener) 普通 設置對話框顯示一個單選的List,指定默認選中項,同時設置監聽處理操作 7 public AlertDialog.Builder setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener) 普通 設置對話框顯示一個復選的List,同時設置監聽處理操作 8 public AlertDialog.Builder setPositiveButton (CharSequence text, DialogInterface.OnClickListener listener) 普通 為對話框添加一個確認按鈕,同時設置監聽操作 9 public AlertDialog.Builder setPositiveButton (int textId, DialogInterface.OnClickListener listener) 普通 為對話框添加一個確認按鈕,顯示內容由資源文件指定,並設置監聽操作 10 public AlertDialog.Builder setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener) 普通 為對話框設置一個取消按鈕,並設置監聽操作 11 public AlertDialog.Builder setNegativeButton (int textId, DialogInterface.OnClickListener listener) 普通 為對話框設置一個取消按鈕,顯示內容由資源文件指定,並設置監聽操作 12 public AlertDialog.Builder setNeutralButton(CharSequence text, DialogInterface.OnClickListener listener) 普通 設置一個普通按鈕,並設置監聽操作 13 public AlertDialog.Builder setNeutralButton(int textId, DialogInterface.OnClickListener listener) 普通 設置一個普通按鈕,顯示內容由資源文件指定,並設置監聽操作 14 public AlertDialog.Builder setItems(CharSequence[] items, DialogInterface.OnClickListener listener) 普通 將信息內容設置為列表項,同時設置監聽操作 15 public AlertDialog.Builder setItems(int itemsId, DialogInterface.OnClickListener listener) 普通 將信息內容設置為列表項,列表項內容由資源文件指定,同時設置監聽操作 16 public AlertDialog create() 普通 創建AlertDialog的實例化對象 17 public AlertDialog.Builder setIcon(Drawable icon) 普通 設置顯示的圖標 18 public AlertDialog.Builder setIcon(int iconId) 普通 設置要顯示圖標的資源ID



了解了AlertDialog的方法,我們來看例子

1******最簡單的對話框*******button1
2******帶按鈕的對話框*******button2
3******帶事件的對話框*******button3
4******帶選項的對話框*******button4
5******帶單選的對話框*******button5
6******帶多選的對話框*******button6
7******帶進度條對話框*******button7
8******日期選擇對話框*******button8
9******事件選擇對話框*******button9
10******自定義對話框*******button10
\

下面看代碼
main XML文件


    

自定義custom.xml



    

        
	


        
	

    

    
					


        
	


        
?	

    


JAVA文件
package com.example.dialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.widget.Toast;

public class MainActivity extends Activity {
	private Button button1, button2, button3, button4, button5, button6,
			button7, button8, button9,button10;
	private String CityData[] = { "河南", "北京", "上海", "天津", "湖南", "深圳" };//city數據
	private String SexData[] = { "男", "女" };//性別數據
	private String ColorData[] = { "紅", "橙", "黃", "綠", "青", "藍", "紫" };//顏色數據
	private boolean ColorChoiced[] = { false, false, false, false, false,
			false, false };// 設置默認選中項

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
//		為按鈕實例化
		button1 = (Button) this.findViewById(R.id.button1);
		button2 = (Button) this.findViewById(R.id.button2);
		button3 = (Button) this.findViewById(R.id.button3);
		button4 = (Button) this.findViewById(R.id.button4);
		button5 = (Button) this.findViewById(R.id.button5);
		button6 = (Button) this.findViewById(R.id.button6);
		button7 = (Button) this.findViewById(R.id.button7);
		button8 = (Button) this.findViewById(R.id.button8);
		button9 = (Button) this.findViewById(R.id.button9);
		button10 = (Button) this.findViewById(R.id.button10);

		// 最簡單的對話框
		button1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				Dialog dialog = new AlertDialog.Builder(MainActivity.this)
						.setTitle("關於我們")//設置標題
						.setMessage("飛揚軟件有限公司")//設置提示信息
						.setIcon(R.drawable.a2)//設置圖標
						.create();//創建對話框
				dialog.show();//顯示對話框
			}
		});

		// 帶按鈕的信息處理對話框
		button2.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				Dialog dialog = new AlertDialog.Builder(MainActivity.this)
						.setTitle("刪除信息")//設置標題
						.setMessage("您確定要刪除該條信息嗎?")//設置提示信息
						.setIcon(R.drawable.a2)//設置圖標
						.setNegativeButton("取消", null)//設置取消按鈕
						.setPositiveButton("確定", null)//設置確定按鈕
						.create();//創建對話框
				dialog.show();//顯示對話框
			}
		});

		// 帶事件處理的對話框

		button3.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				Dialog dialog = new AlertDialog.Builder(MainActivity.this)
						.setTitle("退出程序")
						.setMessage("您確定要退出程序嗎?")
						.setIcon(R.drawable.a2)
						.setPositiveButton("確定",
								new DialogInterface.OnClickListener() {

									@Override
									public void onClick(
											DialogInterface dialogInterface,
											int whitch) {
										// TODO Auto-generated method stub
										Toast.makeText(MainActivity.this,
												"程序即將退出", 2).show();
										// finish(); 為了演示效果,不進行真實退出,用土司代替
									}
								})
						.setNegativeButton("取消",
								new DialogInterface.OnClickListener() {

									@Override
									public void onClick(DialogInterface arg0,
											int arg1) {
										// TODO Auto-generated method stub

									}
								}).create();
				dialog.show();
			}
		});

		// 對話框列表
		button4.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				Dialog dialog = new AlertDialog.Builder(MainActivity.this)
						.setTitle("請選擇您的就業城市")
						.setIcon(R.drawable.a2)
						.setNegativeButton("取消", null)
						.setItems(CityData,
								new DialogInterface.OnClickListener() {

									@Override
									public void onClick(
											DialogInterface dInterface,
											int whitch) {
										// TODO Auto-generated method stub
										Toast.makeText(MainActivity.this,
												"您選擇了:" + CityData[whitch], 2)
												.show();
									}
								}).create();
				dialog.show();
			}
		});

		// 帶單選按鈕的對話框
		button5.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				Dialog dialog = new AlertDialog.Builder(MainActivity.this)
						.setTitle("請選擇您的性別")
						.setSingleChoiceItems(SexData, 0,
								new DialogInterface.OnClickListener() {

									@Override
									public void onClick(
											DialogInterface dInterface,
											int whitch) {
										// TODO Auto-generated method stub
										Toast.makeText(MainActivity.this,
												"您選擇了:" + SexData[whitch], 2)
												.show();
									}
								}).setIcon(R.drawable.a2)
						.setNegativeButton("取消", null)
						.setPositiveButton("確定", null).create();
				dialog.show();
			}
		});
		// 帶多選框的對話框
		button6.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				Dialog dialog = new AlertDialog.Builder(MainActivity.this)
						.setTitle("請選擇您喜歡的顏色")
						.setMultiChoiceItems(
								ColorData,
								ColorChoiced,
								new DialogInterface.OnMultiChoiceClickListener() {

									@Override
									public void onClick(DialogInterface dialog,
											int whitch, boolean isChecked) {
										// TODO Auto-generated method stub
										Toast.makeText(MainActivity.this,
												"您選擇了" + ColorData[whitch], 2)
												.show();
										// 在這裡沒有做判斷,所以無論是選中還是去選都會觸發該事件,有興趣的讀者可以設置IsChecked判斷
									}
								}).setIcon(R.drawable.a2)
						.setNegativeButton("取消", null)
						.setPositiveButton("確定", null).create();
				dialog.show();
			}
		});
		button7.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				final ProgressDialog dialog = new ProgressDialog(
						MainActivity.this);
				dialog.setMessage("正在加載信息,請稍後!");
				dialog.setTitle("正在加載");
				dialog.setIcon(R.drawable.a2);
				dialog.onStart();
				new Thread() {

					@Override
					public void run() {
						// TODO Auto-generated method stub
						try {
							Thread.sleep(3 * 1000);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} finally {

							dialog.dismiss();
						}
					}
				}.start();
				dialog.show();
			}

		});

		// 日期選擇對話框
		button8.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				DatePickerDialog dialog = new DatePickerDialog(
						MainActivity.this, new OnDateSetListener() {

							@Override
							public void onDateSet(DatePicker datePicker,
									int year, int monthOfYear, int dayOfMonth) {
								// TODO Auto-generated method stub
								Toast.makeText(
										MainActivity.this,
										"設置的時間為:" + year + "年" + (monthOfYear+1)
	//此處month要加1,原始月份從零開始了
												+ "月" + dayOfMonth + "日", 2)
										.show();
							}
						}, 2014, 8, 17);
				dialog.show();
			}
		});
		
//	時間選擇對話框
		
		button9.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
			TimePickerDialog dialog =new TimePickerDialog(MainActivity.this, new OnTimeSetListener() {
				
				@Override
				public void onTimeSet(TimePicker arg0, int hourOfDay, int minute) {
					// TODO Auto-generated method stub
					Toast.makeText(MainActivity.this, "設置時間為:"+hourOfDay+"時"+minute+"分", 2).show();
				}
			}, 20, 55, true);
			dialog.show();
			}
		});
		
//	自定義對話框
		
		
		button10.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				View myView=LayoutInflater.from(getApplication()).inflate(R.layout.custom, null);//將layout對象轉換為VIew對象
				Dialog dialog = new AlertDialog.Builder(MainActivity.this)
						.setTitle("用戶登陸")
						.setIcon(R.drawable.a2)
						.setNegativeButton("取消", null)
						.setPositiveButton("登錄", null)
						.setView(myView)//設置要顯示的View組件
						.create();
				dialog.show();
			}
		});

		
	}
}

效果圖 依次為對應的button效果
\

\
\
\
\
\

\
\
\



通過單選、多選對話框,可以設計出很多的用戶交互,進度條與線程,異步操作的結合處理耗時操作 自定義對話框大大增加了UI的多樣性,為更好地反饋交互提供了可能

下節預報: ImageSwitcher圖片切換組件
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved