Android 对话框 Dialog

对话框 Dialog

什么是对话框

对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息,

或显示某种状态.如 :  显示进度条对话框, 退出提示.

对话框的特点:

1, 当前界面弹出的小窗口.

2, 用户要与它进行交互, 可以接收用户输入的信息, 也可以反馈信息给用户.

常用对话框:

1, 普通对话框
AlertDialog

2, 进度条对话框  ProgressDialog

3, 日期对话框    DatePickerDialog

4, 时间对话框    TimePickerDialog

5, 自定义对话框

常用普通对话框  AlertDialog

1, 普通列表对话框    setItems  -- onClickListener

2, 单选对话框
    setSingleChoiceItems -- onClickListener

3, 多选对话框
    setMultiChoiceItems  --- > onMultiChoiceClickListener

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

package com.qf.day11_dialog_01;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.Toast;

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();
    }
}

package com.qf.day11_dialog_02;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.TextView;

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();
    }
}

时间: 2024-10-03 22:54:54

Android 对话框 Dialog的相关文章

转 Android 对话框(Dialog)大全 建立你自己的对话框

Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个 Act

Android 对话框(Dialog)大全 建立你自己的对话框

Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Acti

Android 对话框(Dialog) 及 自定义Dialog

Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Acti

Android 对话框(Dialog)大全【转】

图1 图1效果:该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 代码: 1 // 创建对话框方法dialog() 2 3 protected void dialog() { 4 AlertDialog.Builder builder = new Builder(Main.this); 5 builder.setMessage("确认退出吗?"); 6 7 builder.setTitle("提示"); 8 9 builder.setPos

android对话框(Dialog)的使用方法

Activities提供了一种方便管理的创建.保存.回复的对话框机制.比如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,假设使用这些方法的话.Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). Android API支持下面类型的Dialog对象: 警告对话框 AlertDialog:  一个能够有

Android 对话框(Dialog)大全

转自: http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对

Android对话框Dialog 的一点小问题

为了在对话框中使用editText输入文字,别的自定义方法都没用,得这样: Dialog dialog = new Dialog(context); 但这样会有个讨厌的title,所以得去掉: dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 在自定义对话框时,有时候需要宽度全屏,但部分Activity的主题会有问题,所以需要加上: Window window = dialog.getWindow(); WindowManager.Lay

Android中Dialog对话框(未完待续)

布局文件xml: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5

[Android]关于对话框dialog的一些事

7种形式的Android Dialog使用举例 http://www.oschina.net/question/54100_32486 [Android]关于对话框dialog的一些事,布布扣,bubuko.com