Android软件开发之盘点所有Dialog对话框大合集


此处代码可运行,自己做7个按钮接入ID,即可运行
public class MainActivity extends Activity {
	private int mSingleChoice = -1; // 用于记录单选中的id
	private List<Integer> checkItems = new ArrayList<Integer>();

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Button button1 = (Button) findViewById(R.id.button1);
		Button button2 = (Button) findViewById(R.id.button2);
		Button button3 = (Button) findViewById(R.id.button3);
		Button button4 = (Button) findViewById(R.id.button4);
		Button button5 = (Button) findViewById(R.id.button5);
		Button button6 = (Button) findViewById(R.id.button6);
		Button button7 = (Button) findViewById(R.id.button7);
		

		// 设置监听事件
		button1.setOnClickListener(new ButtonOne());
		button2.setOnClickListener(new ButtonTwo());
		button3.setOnClickListener(new ButtonThree());
		button4.setOnClickListener(new ButtonFour());
		button5.setOnClickListener(new ButtonFive());
		button6.setOnClickListener(new ButtonSix());
		button7.setOnClickListener(new ButtonSeven());
		
	}

	/**
	 * 确定取消对话框
	 * 
	 * @author Administrator
	 * 
	 */
	private final class ButtonOne implements View.OnClickListener {

		@Override
		public void onClick(View v) {
			// 使用AlerDialog.Builder创建对话框
			Builder builder = new Builder(MainActivity.this);
			// 使用builder设置对话框的title button icon
			builder.setIcon(R.drawable.icon);
			builder.setTitle(R.string.dialog_button1_title);
			builder.setMessage("萨达萨达大胆");

			// 对话框中有2个按钮 通过调用 setPositiveButton 方法
			// 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件
			builder.setPositiveButton(R.string.dialog_button1_button1,
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							/*
							 * new Builder(MainActivity.this).setMessage(
							 * "你已经退出!!").show();
							 */
							// 用吐司的方式显示信息
							Toast.makeText(MainActivity.this, "你没有退出!!",
									Toast.LENGTH_LONG).show();
						}
					});
			builder.setNegativeButton(R.string.dialog_button1_button2,
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							/*
							 * new Builder(MainActivity.this).setMessage(
							 * "你没有退出!!").show();
							 */
							// 用吐司的方式显示信息
							Toast.makeText(MainActivity.this, "你没有退出!!",
									Toast.LENGTH_LONG).show();

						}
					});
			builder.create().show();
		}

	}

	/**
	 * 多个按钮信息框
	 * 
	 * @author Administrator
	 * 
	 */
	private final class ButtonTwo implements View.OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Builder builder = new Builder(MainActivity.this);
			builder.setIcon(R.drawable.icon);
			builder.setTitle("投票");
			builder.setMessage("你认为什么样的内容能吸引您?");
			builder.setPositiveButton("有趣味的",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							toastModel("有趣味的!!");
						}
					});
			builder.setNeutralButton("有思想的",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							toastModel("有思想的!!");
						}
					});
			builder.setNegativeButton("主题强的",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							toastModel("主题强的!!");
						}
					});
			builder.create().show();
		}
	}

	/**
	 * 列表框
	 * 
	 * @author Administrator
	 * 
	 */
	private final class ButtonThree implements View.OnClickListener {

		@Override
		public void onClick(View v) {
			// 这个数组用于列表选择
			final String items[] = { "item0", "item1", "item2", "item3",
					"item4", "item5" };
			Builder builder = new Builder(MainActivity.this);
			builder.setTitle("列表选着框");
			builder.setItems(items, new DialogInterface.OnClickListener() {

				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					toastModel("你选择的id为" + which + "," + items[which]);
				}
			});
			builder.create().show();
		}
	}

	/**
	 * 进度条
	 * 
	 * @author Administrator
	 * 
	 */
	private final class ButtonFour implements View.OnClickListener {

		@Override
		public void onClick(View v) {
			/**
			 * 点击进度条框按钮后 开启一个线程计算读取的进度 假设读取结束为 100 Progress在小于100的时候一直在线程中做循环++
			 * 只到读取结束后,停止线程。
			 */
			final ProgressDialog mProgressDialog = new ProgressDialog(
					MainActivity.this);
			mProgressDialog.setIcon(R.drawable.icon);
			mProgressDialog.setTitle("进度条窗口");
			mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置进度条显示类型
			mProgressDialog.setMax(100);// 设置进度条大小
			mProgressDialog.setButton("确定",
					new DialogInterface.OnClickListener() {

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

						}
					});
			mProgressDialog.setButton2("取消",
					new DialogInterface.OnClickListener() {

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

						}
					});
			mProgressDialog.show();

			new Thread() {
				public void run() {
					int progress = 0;
					while (progress < 100) {
						try {
							Thread.sleep(500);
							progress++;
							mProgressDialog.incrementProgressBy(1);// 设置进度条每次走的长度
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}

					}
				}
			}.start();

		}

	}

	/**
	 * 单项选择列表框
	 * 
	 * @author Administrator
	 * 
	 */
	private final class ButtonFive implements View.OnClickListener {

		@Override
		public void onClick(View v) {
			final String items[] = { "item0", "item1", "item2", "item3",
					"item4", "item5" };
			mSingleChoice = -1;
			// 使用AlerDialog.Builder创建对话框
			Builder builder = new Builder(MainActivity.this);
			// 使用builder设置对话框的title button icon
			builder.setIcon(R.drawable.icon);
			builder.setTitle("单项选择");
			// 第二个参数用于设置默认选项
			builder.setSingleChoiceItems(items, 0,
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							mSingleChoice = which;
							toastModel("你选择的id为" + which + "," + items[which]);
						}
					});

			builder.setPositiveButton("确定",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							/*
							 * new Builder(MainActivity.this).setMessage(
							 * "你已经退出!!").show();
							 */
							// 用吐司的方式显示信息
							Toast.makeText(MainActivity.this,
									"你选择的是" + mSingleChoice, Toast.LENGTH_LONG)
									.show();
						}
					});
			builder.setNegativeButton("取消",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							/*
							 * new Builder(MainActivity.this).setMessage(
							 * "你没有退出!!").show();
							 */
							// 用吐司的方式显示信息

						}
					});
			builder.create().show();
		}
	}

	/**
	 * 多像选择列表框
	 * 
	 * @author Administrator
	 * 
	 */
	private final class ButtonSix implements View.OnClickListener {

		@Override
		public void onClick(View v) {

			// 这个数组用于列表选择
			final String items[] = { "item0", "item1", "item2", "item3",
					"item4", "item5" };
			/**
			 * checkItems 用于记录多选选中的id号 存在ArrayList中 选中后 add 进ArrayList 取消选中后
			 * remove 出ArrayList。
			 * 数组最好用Map存取,在这里为了方便我采用了list.如果你采用list在项目中就会出现bug,比如你先选择0和2
			 * 再选择1,然后取消1,你就会发现提示你的结果是你选中的0和1
			 */
			checkItems.clear(); // 清空数组
			Builder builder = new Builder(MainActivity.this);
			builder.setIcon(R.drawable.icon);
			builder.setTitle("多项选择");
			builder.setMultiChoiceItems(items, new boolean[] { false, false,
					false, false, false, false },
					new DialogInterface.OnMultiChoiceClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which,
								boolean isChecked) {
							// TODO Auto-generated method stub
							if (isChecked) {
								checkItems.add(which);
								toastModel("你选择的id为" + which + ","
										+ items[which]);
							} else {
								checkItems.remove(which);
							}
						}
					});
			builder.setPositiveButton("确定",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							String str = "";
							int size = checkItems.size();
							for (int i = 0; i < size; i++) {
								str += items[checkItems.get(i)] + "";
							}
							toastModel("你选择的是" + str);
						}
					});
			builder.setNegativeButton("取消",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {

						}
					});
			builder.create().show();
		}
	}
	
	
	/**
	 * 读取进度框 
	 * 
	 * @author Administrator
	 * 
	 */
	private final class ButtonSeven implements View.OnClickListener {

		@Override
		public void onClick(View v) {
			ProgressDialog mProgressDialog = new ProgressDialog(MainActivity.this);
			mProgressDialog.setTitle("读取ing");
			mProgressDialog.setMessage("正在读取中请稍后");
			mProgressDialog.setIndeterminate(true);
			mProgressDialog.setCancelable(true);
			mProgressDialog.show();
		}
	}
	
	/**
	 * 设置吐司方法
	 * 
	 * @param title
	 *            传入要显示的字符窜
	 */
	private final void toastModel(String title) {
		Toast.makeText(MainActivity.this, title, Toast.LENGTH_LONG).show();
	}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值