Android--对话框详解

 常用对话框:

1, 普通对话框 AlertDialog
2, 进度条对话框     ProgressDialog
3, 日期对话框        DatePickerDialog
4, 时间对话框        TimePickerDialog

5, 自定义对话框  

实例:

public class MainActivity extends Activity {
	private EditText name;
	private EditText pwd;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	public void showAlertDialog(View v) {
		// 1, 定义普通对话框的构建者
		AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		// 2, 构建对话框
		builder.setIcon(R.drawable.img_23);// 设置图标
		builder.setTitle("提示");// 设置标题
		builder.setMessage("是否确认退出?");// 设置内容
		// 设置取消按钮
		/**
		 * text 按钮显示的文字 listener 按钮对应的监听器
		 */
		builder.setNegativeButton("取消", null);
		// 设置确定按钮
		builder.setPositiveButton("确定", new OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				finish();
			}
		});
		// 3, 显示对话框
		builder.show();
	}
	public void showProgressDialog(View v) {
		// 1, 得到ProgressDialog的对象
		ProgressDialog pDialog = new ProgressDialog(this);
		// 2, 构建对话框
		pDialog.setIcon(R.drawable.img_14);
		pDialog.setTitle("提示");
		pDialog.setMessage("正在加载, 请稍后....");
    	pDialog.setCancelable(true);// 是否可撤销 true 可以 false 不可以
		// 设置进度条对话框的样式
		// ProgressDialog.STYLE_HORIZONTAL 水平的
		// ProgressDialog.STYLE_SPINNER 转圈的
		pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
		// 3, 显示对话框
		pDialog.show();
		// pDialog.dismiss();//对话框消失
		pDialog.setProgress(50);// 设置进度值, 在显示对话后,才可以设置
	}
	public void showDatePickerDialog(View v) {
		// 获取系统的当前日期
		Calendar calendar = Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		int monthOfYear = calendar.get(Calendar.MONTH);
		int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
		// 1, 创建带有日期选择器的对话框
		/**
		 * context 上下文对象 callBack onDateSetListener(日期选择器上的"确定"按钮监听器) year 默认的年
		 * monthOfYear 默认的月份 dayOfMonth 默认的日期
		 */
		DatePickerDialog dPDialog = new DatePickerDialog(this,
				new OnDateSetListener() {
					/**
					 * DatePicker view 日期选择器
					 */
					@Override
					public void onDateSet(DatePicker view, int year,
							int monthOfYear, int dayOfMonth) {
						// 选择后的日期监听
						Toast.makeText(
								MainActivity.this,
								year + "-" + (monthOfYear + 1) + "-"
										+ dayOfMonth, Toast.LENGTH_SHORT)
								.show();
					}
				}, year, monthOfYear, dayOfMonth);
		// 2, 显示对话框
		dPDialog.show();
	}
	public void showTimePickerDialog(View v) {
		// 1, 创建带有时间选择器的对话框
		/**
		 * context 上下文对象 callBack onTimeSetListener hourOfDay 默认的小时 minute
		 * 默认的分钟数 is24HourView 是否24小时制
		 */
		TimePickerDialog tpDialog = new TimePickerDialog(this,
				new OnTimeSetListener() {

					@Override
					public void onTimeSet(TimePicker view, int hourOfDay,
							int minute) {

						Toast.makeText(MainActivity.this,
								hourOfDay + " :" + minute, Toast.LENGTH_SHORT)
								.show();
					}
				}, 15, 17, true);

		// 2, 显示对话框
		tpDialog.show();
	}
	// 自定义对话框(在普通对话框基础上实现)
	public void showCustomDialog(View v) {
		// 1, 得到普通对话框的构建者
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		// 2, 构建对话框
		builder.setIcon(R.drawable.img_23);
		builder.setTitle("用户登陆");
		// 3, 为对话框设置自定义的视图
		View view = getLayoutInflater().inflate(R.layout.login, null);
		name = (EditText) view.findViewById(R.id.name);
		pwd = (EditText) view.findViewById(R.id.pwd);
		builder.setView(view);
		// 为对话框添加 按钮
		builder.setNegativeButton("取消", null);
		builder.setPositiveButton("登陆", new OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				String info = name.getText().toString() + ",   "
						+ pwd.getText().toString();
				Toast.makeText(MainActivity.this, info, Toast.LENGTH_SHORT)
						.show();
			}
		});

		// 4, 显示对话框
		builder.show();
	}
}

 常用普通对话框  AlertDialog
1, 普通列表对话框    setItems  -- onClickListener
2, 单选对话框     setSingleChoiceItems -- onClickListener
3, 多选对话框     setMultiChoiceItems  --- > onMultiChoiceClickListener 

4, 适配器对话框      setAdapter -- onClickListener

实例:

public class MainActivity extends Activity {
	private TextView tv;
	private int position;//单选列表的 中间转接
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        tv = (TextView) findViewById(R.id.tv);
    }
    //普通列表对话框
    public void showCommon(View v)
    {
    	//1, 得到普通对话框的构建者
    	AlertDialog.Builder builder = new AlertDialog.Builder(this);   	
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("选择颜色");	
    	//2, 设置列表
    	//getResources().getStringArray(id)
    	builder.setItems(R.array.colors, new OnClickListener() {		
    		/**
    		 * DialogInterface dialog   对话框
    		 * int which				当前选中的item 从0开始
    		 */
			@Override
			public void onClick(DialogInterface dialog, int which) {		
				switch (which) {
				case 0:			
					tv.setTextColor(Color.RED);				
					break;
				case 1:
					tv.setTextColor(Color.GREEN);
					break;					
				case 2:
					tv.setTextColor(Color.BLUE);
					break;
				}
			}
		});   	
    	//3, 显示对话框
    	builder.show();
    }   
    //单选列表
    public void showSingle(View v)
    {
    	//1, 得到普通对话框的构建者
    	AlertDialog.Builder builder = new AlertDialog.Builder(this);	
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("设置文字大小");	
    	//2, 设置单选列表
    	/**
    	 * items		选项资源的ID   R.array.sizes
    	 * checkedItem  默认选中的item的下标, 如果没有默认选中, 那么设置为-1
    	 * listener		监听器
    	 */
    	builder.setSingleChoiceItems(R.array.sizes, -1, new OnClickListener() {			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// 把当前选中的Item的下标 赋值给全局的变量  position
				position = which;
			}
		});  	
    	builder.setPositiveButton("确定", new OnClickListener() {		
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO 根据全局的position  判断该执行什么样的操作			
				switch (position) {
				case 0:
					tv.setTextSize(20);
					break;
				case 1:
					tv.setTextSize(30);
					break;				
				case 2:
					tv.setTextSize(40);
					break;
				}
			}
		}); 	  	
    	//3, 显示对话框
    	builder.show();
    }
    //多选列表
    public void showMulti(View v)
    {
    	//1, 得到普通对话框的构建者
    	AlertDialog.Builder builder = new AlertDialog.Builder(this);    	
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("设置内容");    	
    	//2, 设置多选列表
    	/**
    	 * items		资源的ID
    	 * checkedItems 当前选中的Item
    	 * listener		监听器
    	 */
    	//得到所有的数据
    	final String[] hobbys = getResources().getStringArray(R.array.hobbys);
    	//选中的Item
    	final boolean[] checkedItems =  new boolean[hobbys.length];
    	
    	builder.setMultiChoiceItems(R.array.hobbys, checkedItems, new OnMultiChoiceClickListener() {
    		/**
    		 * DialogInterface dialog	当前对话框
    		 * int which				当前选择的Item下标
    		 * boolean isChecked		当前选择Item的状态
    		 */
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {		
				//改变boolean[] 中状态
				checkedItems[which] = isChecked;
			}
		});	
    	builder.setPositiveButton("确定", new OnClickListener() {		
			@Override
			public void onClick(DialogInterface dialog, int which) {			
				StringBuilder sBuilder = new StringBuilder();			
				for(int i=0;i<checkedItems.length;i++)
				{
					if(checkedItems[i])
					{
						sBuilder.append(hobbys[i]).append("    ");
					}				
				}			
				tv.setText(sBuilder.toString());
			}
		}); 	
    	//3, 显示对话框
    	builder.show();
    }
    //适配器列表
    public void showAdapter(View v)
    {
    	//1, 得到普通对话框的构建者
    	AlertDialog.Builder builder = new AlertDialog.Builder(this);	
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("选择设置");
    	//2, 设置适配器
    	String[] data = getResources().getStringArray(R.array.settings);
    	ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    													android.R.layout.simple_list_item_1,
   													data);
    	builder.setAdapter(adapter, new OnClickListener() {		
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Intent intent = new Intent();
				switch (which) {
				case 0:
					intent.setAction("android.settings.WIFI_SETTINGS");
					break;
				case 1:
					intent.setAction("android.settings.SOUND_SETTINGS");
					break;
				case 2:
					intent.setAction("android.settings.SETTINGS");
					break;
				}
				startActivity(intent);
			}
		});
    	//3, 显示对话框
    	//builder.show();
    	builder.create().show();
    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值