丰富多彩的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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值