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

以上所述是小编给大家介绍的Android 对话框 Dialog使用实例讲解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android Dialog 对话框详解及示例代码

    Android Dialog 对话框 1.Dialog介绍 2.AlertDialog的基本使用 3.自定义对话框 Custom Dialog 一.Dialog介绍 Dialog也是Android中常用的用户界面元素,他同Menu一样也不是View的子类.让我们看一下它的继承关系: 这里要留意一下他的直接子类 AlertDialog,和间接子类 DatePickerDialog,ProgressDialog,TimePickerDialog,其中后三个我们在前面的章节已经讲过,今天我们把重点放在

  • Android Dialog对话框用法实例详解

    本文实例讲述了Android Dialog对话框用法.分享给大家供大家参考,具体如下: Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int),dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). 1. onCreat

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

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

  • 属于自己的Android对话框(Dialog)自定义集合

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

  • Android中制作自定义dialog对话框的实例分享

    自定义dialog基础版 很多时候,我们在使用android sdk提供的alerdialog的时候,会因为你的系统的不同而产生不同的效果,就好比如你刷的是MIUI的系统,弹出框都会在顶部显示!这里简单的介绍自定义弹出框的应用. 首先创建布局文件dialog: 代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.and

  • Android中自定义对话框(Dialog)的实例代码

    1.修改系统默认的Dialog样式(风格.主题) 2.自定义Dialog布局文件 3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类 第一步: 我们知道Android定义个控件或View的样式都是通过定义其style来实现的,查看Android框架中的主题文件,在源码中的路径:/frameworks/base/core/res/res/values/themes.xml,我们可以看到,Android为Dialog定义了

  • Android 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_paren

  • 8种android 对话框(Dialog)使用方法详解

    本文汇总了android 8种对话框(Dialog)使用方法,分享给大家供大家参考,具体内容如下 1.写在前面 Android提供了丰富的Dialog函数,本文介绍最常用的8种对话框的使用方法,包括普通(包含提示消息和按钮).列表.单选.多选.等待.进度条.编辑.自定义等多种形式,将在第2部分介绍. 有时,我们希望在对话框创建或关闭时完成一些特定的功能,这需要复写Dialog的create().show().dismiss()等方法,将在第3部分介绍. 2.代码示例 2.1 普通Dialog(图

  • Android中Dialog对话框的使用小结

    前言 最近有些空时间,所以花了一个小时对Dialog对话框使用小结一下,比较基础,希望对你学习有帮助,大牛请直接关闭网页.如果你是新手,建议你亲自敲一遍代码. 先看一下效果: Dialog对话框使用小结 一.普通对话框 AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle("温馨提示");//标题 builder.setMessage("天气冷,注意保暖")

  • Android 对话框 Dialog使用实例讲解

    对话框 Dialog 什么是对话框 对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息,或显示某种状态.如 : 显示进度条对话框, 退出提示. 对话框的特点: 1, 当前界面弹出的小窗口. 2, 用户要与它进行交互, 可以接收用户输入的信息, 也可以反馈信息给用户. 常用对话框: 1, 普通对话框 AlertDialog 2, 进度条对话框 ProgressDialog 3, 日期对话框 DatePickerDialog 4, 时间对话框 TimePi

  • Android 对话框(Dialog)大全详解及示例代码

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

  • Android自定义Dialog原理实例解析

    Android开发过程中,常常会遇到一些需求场景--在界面上弹出一个弹框,对用户进行提醒并让用户进行某些选择性的操作, 如退出登录时的弹窗,让用户选择"退出"还是"取消"等操作. Android系统提供了Dialog类,以及Dialog的子类,常见如AlertDialog来实现此类功能. 一般情况下,利用Android提供的Dialog及其子类能够满足多数此类需求,然而,其不足之处体现在: 1. 基于Android提供的Dialog及其子类样式单一,风格上与App本

  • Android手势操作简单实例讲解

    上一篇介绍的onTouch提供的事件还是相对较简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦,因为我们要根据用户触摸的轨迹去判断是什么手势.幸好Android SDK给我们提供了GestureDetector类,通过这个类我们可以识别很多的手势,主要是通过他的onTouchEvent(event)方法完成了不同手势的识别. GestureDetector这个类对外提供了两个接口和一个外部类:  •接口:OnGestureListener,OnDoubleTapListener  •外部类

  • Android计时器chronometer使用实例讲解

    在Android中,可以使用计时器来实现对时间的监测,这个类所实现的功能有开始计时,停止计时,重新计时,设置计 时模式,下面列出计时器方法的原型: long getBase();//返回基地的时间,由setBase(long)设置的 String getFormat(); //返回当前字符串格式,此格式是通过setFormat()实现的 void setBase(long base); //设置时间,计数定时器指定的值 void setFormat(String format); //设置显示的

  • Android中SharedPreference使用实例讲解

    SharedPreference方面的内容还算是比较简单易懂的,在此还是主要贴上效果与代码,最后也是附上源码. 首先是输入账号admin,密码123,选择记住密码登陆. 登陆后就直接跳转页面. 随后再次打开app可以发现已经记住了密码. 如果输错了密码,或者在登陆的时候没有选择记住密码,那么会将SharedPreference的文件清空,再次登陆后又会是空的EditText. MainActivity: import android.app.Activity; import android.co

  • Android 全局Dialog的简单实现方法

    前言: 这里所说的全局Dialog是指无论当前应用是处于哪一个页面上,都能够及时弹出Dialog来提示用户一些信息,用户体验不会很好,一般应用于优先级非常高的通知. 分析 : 想要实现无论当前应用是处于哪一个页面上,都能够及时弹出Dialog功能其实很简单,只要能获取到当前显示的Activity就行了,也就是栈顶的Activity. 实现过程 : 一般项目中我们都会通过一个类来管理我们的Activity,即AppManager /** * Activity管理类 * @author Donkor

随机推荐