豐富多彩的Dialog之AlertDialog.Builder

import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.content.DialogInterface;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.Toast;

public class DialogActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog);
		//效果
		overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
		loginDialog(); //登錄框
		itemDialog(); //選項框
		mutilDialog(); //多選框
		dateDialog(); //日期框
		sexDialog(); //性別選擇框
	}

	//login
	private void loginDialog(){
	Button loginBtn=(Button)findViewById(R.id.loginDialog);
	  loginBtn.setOnClickListener(new OnClickListener() {
		@Override
		public void onClick(View v) {
			Builder builder=new AlertDialog.Builder(DialogActivity.this);
			
			builder.setIcon(R.drawable.add);
			
			builder.setTitle("奮鬥吧");
			
			//加載layout,也可以用findViewById
			LayoutInflater inflater = LayoutInflater.from(DialogActivity.this);
		    View loginview=inflater.inflate(R.layout.login, null);
		    
			builder.setView(loginview);
			builder.setPositiveButton("開始", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
				}
			});
			builder.setNegativeButton("放棄", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
				 //關閉
					dialog.dismiss();
				}
			});
			//顯示對話框
			builder.show();
		}
	  });
	}
	
	
	  //item
		private void itemDialog(){	
		Button loginBtn=(Button)findViewById(R.id.itemDialog);
		//選項被單擊的時候
		  loginBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Builder builder=new AlertDialog.Builder(DialogActivity.this);
			   final String stulist[]=getResources().getStringArray(R.array.stulist);
				builder.setTitle("奮鬥吧"); 
				builder.setItems(stulist , new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						Toast.makeText(getApplicationContext(), "你選中了"+stulist[which], Toast.LENGTH_SHORT).show();
					}
				});
				//顯示對話框
				builder.show();
			}
		  });
		}
		
		 //多選框
		private void mutilDialog(){
		  Button loginBtn=(Button)findViewById(R.id.mutilDialog);
		  loginBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Builder builder=new AlertDialog.Builder(DialogActivity.this);
			    final String stulist[]=getResources().getStringArray(R.array.stulist); //資源數組
			    final boolean []checkedItems=new boolean[stulist.length];	 //選中狀態
			    for (int i = 0; i < stulist.length; i++) {
			    	checkedItems[i]=false; //默認全部不選
				}
				builder.setTitle("奮鬥吧"); 
				builder.setMultiChoiceItems(stulist, checkedItems, new OnMultiChoiceClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which, boolean isChecked) {
						checkedItems[which]=isChecked;  //記錄點擊的那個的狀態
					}
				});
				builder.setPositiveButton("開始", new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						StringBuffer items=new StringBuffer();
						for (int i = 0; i < checkedItems.length; i++) {
							if(checkedItems[i]){
								items.append(stulist[i]);
							}
						}
						Toast t=Toast.makeText(getApplicationContext(), "你選中了"+items, Toast.LENGTH_SHORT);
						t.setGravity(Gravity.BOTTOM | Gravity.CENTER, 0, 100);
						t.setMargin(0.0f, 0.0f);
						t.show();
					}
				});
				//顯示對話框
				builder.show();
			}
		  });
		}
	
		//日期框
		private void dateDialog(){
			Button dateDialogButton = (Button) findViewById(R.id.dateDialog);
			dateDialogButton.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View view) {
					Calendar calendar = Calendar.getInstance();
					
					DatePickerDialog datePicker = new DatePickerDialog(
							DialogActivity.this, new OnDateSetListener() {
								@Override
								public void onDateSet(DatePicker date, int y,
										int m, int d) {
									String sd = y + "年" + (m+1) + "月" + d + "日";
									Toast.makeText(getApplicationContext(),
											"你選擇的日期是:" + sd, Toast.LENGTH_SHORT)
											.show();
								}
							}, calendar.get(Calendar.YEAR), calendar
									.get(Calendar.MONTH), calendar
									.get(Calendar.DAY_OF_MONTH));
					//顯示
					datePicker.show();
				}
			});
		}
		
		
		//單選框
		private void sexDialog(){
			Button sexBtn = (Button) findViewById(R.id.sexDialog);
			sexBtn.setOnClickListener(new OnClickListener() {
				int selectIndex=0;
				@Override
				public void onClick(View view) {
					final String[] sexs = new String[] {"男","女"};
					Builder builder = new AlertDialog.Builder(DialogActivity.this);
					builder.setTitle("選擇性別");
					builder.setSingleChoiceItems(sexs, 1,
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int position) {
									selectIndex = position;
								}
							});
					builder.setPositiveButton("確定",
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int position) {
									Toast.makeText(getApplicationContext(),
											"你選擇了" + sexs[selectIndex],
											Toast.LENGTH_SHORT).show();
								}
							});
					builder.show();
				}
			});
		}
}

自定義的登錄佈局 : login.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/loginLayout">

    <LinearLayout android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal">    
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="用戶名" 
        />
    <EditText android:layout_width="match_parent" android:layout_height="wrap_content"/>
    </LinearLayout>

      <LinearLayout android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal">    
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="密碼" 
        />
    <EditText android:layout_width="match_parent" android:layout_height="wrap_content"/>
    </LinearLayout>
</LinearLayout>

選項的資源文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="stulist">
        <item>黃曉明</item>
        <item>朱莉</item>
        <item>李菲菲</item>
        <item>李小名</item>
        <item>李雪</item>
    </string-array>
</resources>

總的配置文件:activity_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".DialogActivity"
    android:orientation="vertical" >

    
   <Button android:id="@+id/loginDialog"  style="@style/btnStyle" android:text="logindialog" />
   <Button android:id="@+id/itemDialog"  style="@style/btnStyle" android:text="itemdialog" />
   <Button android:id="@+id/mutilDialog"  style="@style/btnStyle" android:text="mutildialog" />
   <Button android:id="@+id/dateDialog"  style="@style/btnStyle" android:text="datedialog" />
   <Button android:id="@+id/sexDialog"  style="@style/btnStyle" android:text="sexdialog" />
   
   
 </LinearLayout>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章