`
百合不是茶
  • 浏览: 354092 次
社区版块
存档分类
最新评论
阅读更多

Activities提供了一种方便管理的创建、保存、回复的对话框机制,例如 onCreateDialog(int)onPrepareDialog(int, Dialog)showDialog(int)dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog).

 

 

1,提示框;

  <Button
        android:id="@+id/alert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="show"
        android:text="提示对话框" />

 

 

2,列表对话框

    <Button
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="show"
        android:text="列表对话框" />

  

 



 

3,单选对话框

    <Button
        android:id="@+id/radio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="show"
        android:text="单选对话框" />

 

 

 

4,多选对话框

    <Button
        android:id="@+id/multi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="show"
        android:text="多选对话框" />

 

 

提示框,列表框,单选框,多选框写在一个java类中实现其效果

 

public class MainActivity extends Activity {

	private AlertDialog dialog;
	int selected, temp = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

	}

	// 按钮的事件方法
	public void show(View v) {
		// 获得被点击的按钮的id
		int id = v.getId();
		switch (id) {
		case R.id.alert://提示框
			this.showDialog(10);
			break;
		case R.id.list://列表框
			this.showDialog(20);
			break;
		case R.id.radio://单选框
			this.showDialog(30);
			break;
		case R.id.multi://多选框
			this.showDialog(40);
			break;
		}

	}

	@Override
	protected Dialog onCreateDialog(int id, Bundle args) {
		switch (id) {
		case 10://提示框
			// 创建一个用来构建对话框的对象
			Builder build = new AlertDialog.Builder(this);
			build.setTitle("提示对话框");
			build.setIcon(android.R.drawable.btn_dialog);
			build.setMessage("这里是提示的消息内容");

			OnClickListener listener = new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					switch (which) {
					case DialogInterface.BUTTON_POSITIVE:
						Toast.makeText(MainActivity.this, "点击的是确定",
								Toast.LENGTH_SHORT).show();
						break;
					case DialogInterface.BUTTON_NEGATIVE:
	     Toast.makeText(MainActivity.this, "点击的取                         消",Toast.LENGTH_SHORT).show();
						break;

					case DialogInterface.BUTTON_NEUTRAL:
				Toast.makeText(MainActivity.this, "点击的是忽略",
							Toast.LENGTH_SHORT).show();
						break;

					}

				}

			};

			// 给对话框添加按钮
			build.setPositiveButton("确定", listener);
			build.setNegativeButton("取消", listener);
			build.setNeutralButton("忽略", listener);
			AlertDialog dialog = build.create();
			return dialog;

		case 20://列表框
			Builder build1 = new AlertDialog.Builder(this);
			build1.setTitle("列表对话框");
			build1.setIcon(android.R.drawable.btn_radio);
			final String[] items = { "打开", "关闭", "保存" };
			OnClickListener listener1 = new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {

	Toast.makeText(MainActivity.this, "选中的是:" + items[which],
							Toast.LENGTH_SHORT).show();
				}
			};

			// 添加选项列表
			build1.setItems(items, listener1);
			return build1.create();

		case 30://单选框

			Builder build2 = new AlertDialog.Builder(this);
			build2.setTitle("单选对话框");
			build2.setIcon(android.R.drawable.btn_radio);

			final String[] items2 = { "在线", "隐身", "忙碌", "离线" };

			OnClickListener listener2 = new OnClickListener() {
				@Override
			public void onClick(DialogInterface dialog, int which) {
					if (which >= 0) {
						temp = which;
					} else {
			if (which == DialogInterface.BUTTON_POSITIVE) {
							selected = temp;
	Toast.makeText(MainActivity.this,"选中的是:" +items2[selected],
							Toast.LENGTH_SHORT).show();
		} else if (which == DialogInterface.BUTTON_NEGATIVE) {
							dialog.cancel();
						}

					}

				}
			};
			build2.setSingleChoiceItems(items2, selected, listener2);

			build2.setPositiveButton("确定", listener2);
			build2.setNegativeButton("取消", listener2);
			build2.setCancelable(false);
			return build2.create();

		case 40://多选框
			Builder build3 = new AlertDialog.Builder(this);
			build3.setTitle("多选对话框");
			build3.setIcon(android.R.drawable.btn_radio);

			final String[] items3 = { "Java", "C++", "C#", "Swift" };
			final boolean[] checkedItems = { true, true, false, false };

			// 多选按钮的监听器
OnMultiChoiceClickListener listener33= new OnMultiChoiceClickListener() {

				@Override
				public void onClick(DialogInterface dialog, int which,
						boolean isChecked) {
					checkedItems[which] = isChecked;
				}

			};

	build3.setMultiChoiceItems(items3, checkedItems, listener33);

			OnClickListener listener3 = new OnClickListener() {
				@Override
			public void onClick(DialogInterface dialog, int which) {

			if (which == DialogInterface.BUTTON_POSITIVE) {
						String str = "";
						for (int i = 0; i < items3.length; i++) {
							if (checkedItems[i]) {
								str += items3[i] + ",";
							}
						}

	             Toast.makeText(MainActivity.this, "选中的是:" + str,
								Toast.LENGTH_SHORT).show();
					}

				}
			};
			build3.setPositiveButton("确定", listener3);
			build3.setCancelable(false);
			return build3.create();
		}

		return null;
	}
}

 

 

 

5,日期对话框

      <Button  
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="日期对话框"
        android:onClick="show"
        />

 

 

 

 

6,时间对话框

        <Button  
        android:id="@+id/times"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="时间对话框"
        android:onClick="show"
        />

 



 

7,进度条对话框

    <Button  
        android:id="@+id/progressbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="进度条对话框"
        android:onClick="show"
        />

 

 

 

8,进度条对话框

    <Button  
        android:id="@+id/progress2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="模糊对话框"
        android:onClick="show"
        />

 

 

 

 

 

日期,时间,进度条对话框的代码实现;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.dialog);

	}

	// 按钮的方法
	public void show(View v) {
		int id = v.getId();
		switch (id) {
		case R.id.progressbtn:
			this.showDialog(10);
			break;
		case R.id.progress2:
			this.showDialog(20);
			break;

		case R.id.date:
			this.showDialog(30);
			break;
		case R.id.times:
			this.showDialog(40);
			break;
		}
	}

	// 对话框的方法
	@Override
	protected Dialog onCreateDialog(int id, Bundle args) {
		switch (id) {
		case 10:
			// 进度条
			ProgressDialog pdialog = new ProgressDialog(this);
			pdialog.setCancelable(false);
			pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
			pdialog.setMax(100);
			pdialog.setSecondaryProgress(30);
			return pdialog;
		case 20:
			ProgressDialog pdialog2 = new ProgressDialog(this);
			pdialog2.setTitle("对话框");
			pdialog2.setMessage("正在下载..");
			pdialog2.setCancelable(false);
			pdialog2.setProgressStyle(ProgressDialog.STYLE_SPINNER);
			return pdialog2;

		case 30:
			// 日期的监听器
			OnDateSetListener callBack = new OnDateSetListener() {

				@Override
				public void onDateSet(DatePicker view, int year,
						int monthOfYear, int dayOfMonth) {
					Toast.makeText(MainActivity.this,
							year + "" + monthOfYear + "" + dayOfMonth,
							Toast.LENGTH_SHORT).show();

				}
			};
			Calendar calender = Calendar.getInstance();// 获得系统的日期 可以将该方法申明在最外边
			int year = calender.get(Calendar.YEAR);
			int month = calender.get(Calendar.MONTH);
			int day = calender.get(Calendar.DAY_OF_MONTH);
			DatePickerDialog dateDialog = new DatePickerDialog(this, callBack,
					year, month, day);
			return dateDialog;

		case 40:
			OnTimeSetListener callBacks = new OnTimeSetListener() {
				@Override
				public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
					Toast.makeText(MainActivity.this, hourOfDay + "" + minute,
							Toast.LENGTH_SHORT).show();
				}
			};
			Calendar calendertime = Calendar.getInstance();// 获得时间
			int hour = calendertime.get(Calendar.HOUR_OF_DAY);
			int minute = calendertime.get(Calendar.MINUTE);
			TimePickerDialog timeDialog = new TimePickerDialog(this, callBacks,
					hour, minute, true);
			return timeDialog;

		}

		return null;
	}

	// 条用已经创建的对话框的方法
	@Override
	protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
		switch (id) {
		case 10:
			ProgressDialog dialog2 = (ProgressDialog) dialog;
			new ProThread(dialog2).start();
			break;

		case 20:
			ProgressDialog dialog3 = (ProgressDialog) dialog;
			new ProThread2(dialog3).start();
			break;
		case 30:
			// 将对话框转成时间对话框
			DatePickerDialog dialogdate = (DatePickerDialog) dialog;
			// 获得系统的日期时间
			Calendar calender = Calendar.getInstance();// 获得系统的日期
			// 获得日期
			int year = calender.get(Calendar.YEAR);
			int month = calender.get(Calendar.MONTH);
			int day = calender.get(Calendar.DAY_OF_MONTH);
			// 还原系统的日期
			dialogdate.getDatePicker().init(year, month, day, dialogdate);
			break;
		}

	}
	
	//系统默认的进度条
	class ProThread2 extends Thread{
		private ProgressDialog dialog;
		public ProThread2(ProgressDialog dialog) {
			this.dialog =dialog;
		}

		public void run(){
			int num=0;
			while(num<20){
				try {
					++num;
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			dialog.dismiss();//消失;
		}
		
	}

	// 进度条的线程
	class ProThread extends Thread {
		ProgressDialog dialog2;

		public ProThread(ProgressDialog dialog2) {
			this.dialog2 = dialog2;
		}

		public void run() {
			dialog2.incrementProgressBy(-dialog2.getProgress());
			int max = dialog2.getMax();
			while (dialog2.getProgress() < max) {
				try {
					dialog2.incrementProgressBy(1);
					Thread.sleep(100);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
			dialog2.dismiss();// 关闭对话框
		}
	}
}

 

 

 

 

 

 

 

 


 

  • 大小: 29.3 KB
  • 大小: 25.2 KB
  • 大小: 27.6 KB
  • 大小: 27.1 KB
  • 大小: 26.6 KB
  • 大小: 28.3 KB
  • 大小: 21.8 KB
  • 大小: 24.5 KB
0
3
分享到:
评论

相关推荐

    Android常用对话框源码对话框大全

    以上是"Android常用对话框源码--对话框大全"中的主要知识点,通过学习和实践这些,开发者可以熟练掌握Android应用中对话框的使用,提高用户体验。在实际开发中,可以根据需求灵活组合和定制,创造出符合应用特性的...

    Android Studio 常用对话框

    在这个特定的案例中,我们关注的是Android Studio中的"常用对话框",包括普通对话框、单选对话框和多选对话框。这些对话框在用户交互中扮演着重要角色,用于提示信息、获取用户输入或进行选择操作。 首先,普通...

    Android中五种常用对话框的使用示例代码.zip

    在Android应用开发中,...以上就是Android中五种常用对话框的使用方法。在实际开发中,开发者可以根据需求灵活运用这些对话框,以提升用户体验。通过深入理解和实践,开发者可以创建更加丰富和定制化的对话框功能。

    excel内置对话框使用方法

    ### Excel VBA内置对话框使用方法详解 #### 一、引言 在Excel VBA编程中,使用内置对话框能够极大地提高工作效率,并为用户提供更加友好的交互体验。这些内置对话框包括但不限于打开文件对话框、保存文件对话框、...

    【Android】常用对话框大全Demo

    讲解了Dialog的样式,使用可参考: 1、https://binyouwei-comeon.blog.csdn.net/article/details/125182197 2、https://binyouwei-comeon.blog.csdn.net/article/details/125192455 3、...

    vc++.net中常用对话框 详解和源码

    在VC++.NET中,我们通常使用`CColorDialog`类来创建和管理颜色对话框。使用`DoModal`方法显示对话框,用户选择的颜色可以通过`GetColor`方法获取。源码中可能包含一个简单的例子,展示如何在按钮点击事件中打开颜色...

    Android常用对话框的封装

    本文将详细讲解如何封装Android中的九种常用对话框,并提供实际应用的指导。 首先,我们来看看这九种常见的Android对话框类型: 1. **普通对话框(AlertDialog)**:基础对话框,可以包含标题、内容和按钮,通常...

    QtCreator开发的常用对话框

    通过对这个例子的分析和学习,你可以加深对Qt Creator对话框使用的理解,并将其应用到自己的项目中。记得实践是掌握技能的关键,所以动手尝试和修改示例代码,看看不同的效果,是学习的好方法。 总之,Qt Creator为...

    Android常用对话框源码

    本文将深入探讨Android中的几种常用对话框及其源码实现,旨在帮助开发者更好地理解和应用这些组件。 1. 简单对话框(AlertDialog) 简单对话框是最基础的对话框类型,通常包含一个标题、一个消息文本和一到两个按钮...

    GUI11常用对话框5.avi

    GUI11常用对话框5.avi

    android常用的对话框的使用

    在给定的代码片段中,展示了8种常用的对话框使用方式,我们将逐一解析这些对话框的构建和功能。 1. **两个按钮的对话框** 这是最基本的对话框形式,包含一个标题、一个图标和两个按钮:确定和取消。通过`...

    php开发常用对话框

    此外,我们还可以使用第三方库,如jQuery UI或SweetAlert2,它们提供了丰富的对话框样式和功能,使得对话框更加美观且易于定制。jQuery UI的`dialog`插件可以方便地创建可配置的对话框,而SweetAlert2则提供了现代感...

    VB 多种使用通用对话框的方法演示.rar

     通用对话框使用方法全解:  名称-----------------作用-------------  CmdTest 通用对话框  CmdOpen “打开”对话框按钮  CmdSave “另存为”对话框按钮  CmdFont “字体”对话框按钮  CmdColor “颜色”...

    常用对话框

    本主题将深入探讨“常用对话框”这一核心概念,包括它们的功能、类型以及如何在各种编程环境中实现。 1. **消息对话框(Message Dialogs)**:最简单的对话框形式,用于向用户显示警告、错误或确认信息。例如,`...

    Android开发基础 几种常用对话框的使用

    Android开发基础 几种常用对话框的使用 开发步骤如下:(1)布局界面(2)获取按钮,添加事件监听器,实现对话框 。 我采用的是RelativeLayout布局和LinearLayout两个布局,自定义对话框用的是用的是在Layout下创建...

    android 常用对话框

    以上就是关于Android中几种常用对话框的介绍及其使用方法。通过这些示例,我们不仅可以了解到如何快速构建出各种类型的对话框,还可以进一步理解如何根据不同的需求灵活地定制对话框的样式和功能。希望本文能帮助到...

Global site tag (gtag.js) - Google Analytics