对话框
在图形界面中,对话框也是人机交互的一种重要方式,程序可以通过对话框对用户进行一些信息的提示,而用户也可以通过对话框进行一些简单的交互操作。对话框主要通过Activity程序生成,用于对用户的操作进行提示;
对话框的显示组件也可以使用布局文件配置,但是需要通过LayoutInflater类完成转换。
在Android的开发中,所有的对话框都是从android.app.Dialog类继承而来的,此类继承结构如下:
java.lang.Object
android.app.Dialog
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dialog类定义的常用方法
1 public void setTitle(CharSequence title) 设置对话框的显示标题
2 public void setTitle(int titleId) 设置对话框的显示标题,内容由资源文件制定
3 public void show() 显示对话框
4 public void hide() 隐藏对话框
5 public boolean isShowing() 判断对话框是否显示
6 public void setContentView(View view) 设置View组件
7 public void setContentView(int layoutResId)设置View组件的ID
8 public void dismiss() 隐藏对话框
9 public void closeOptionsMenu() 关闭选项菜单
10 public void setDismissMessage(Message msg)设置隐藏对话框时的消息
11 public void setCancelable(boolean flag) 设置是否可以取消
12 public void setCanaelMessage(Message msg) 设置取消对话框时的消息
13 public void cancel() 取消对话框与dismiss类似
14 public Window getWindow() 取得Window对象
15 public void setOnShowListener(DialogInterface.OnShowListener listener)
设置对话框打开时监听
16 public void setOnDismissListener(DialogInterface.OnDismissListener listener)
对话框隐藏时监听
17 public void setOnCancelListener(DialogInterface.OnCancelListener listener)
对话框取消时监听
18 AlertDialog create() 创建警告框对象
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AlertDialog和AlertDialog.Builder
Alert表示的是一个警告含义,所以AlertDialog表示的是一个警告框的概念
java.lang.Object
android.app.Dialog
android.app.AlertDialog
AlertDialog是Dialog的直接子类,所以可以使用Dialog类中的各个操作方法。但是这个类的构造方法全部使 用了protect关键字定义,所以这个关键字定义的权限特点:本类、同一包的类、不同包的子类可以访问,所以也就意味着AlertDialog类的构造方法被隐藏了
所以如果想要创建AlertDialog对话框,那么就必须要使用AlertDialog.Builder类完成,而通过这个类的名称可以发现,是一个专门用于对话框的创建类(因为类型是公共的)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AlertDialog.Builder类的常用方法
1 public AlertDialog.Builder(Context context) 创建AlertDialog对象
2 public AlertDialog.Builder setMessage(int MessageId) 设置显示信息的资源Id
3 public AlertDialog.Builder setMessage(CharSequence message)设置显示信息的字符串
4 public AlertDialog.Builder setView(View view) 设置显示的VIew组件
5 public AlertDialog.Builder setSingleChoiceItems(CharSequence[] items,int checkedItem,
DialogInterface.OnClickListener listener) 设置对话框显示一个单选的List,指定默认选 中项,同时设置监听处理操作
6 public AlertDialog.Builder setSingleChoiceItems(ListAdapter adapter,int checkedItem,
DialogInterface.OnClickListener listener) 设置对话框显示一个单选的List,指定默认选 中项,同时设置监听处理操作
7 public AlertDialog.Builder setMultiChoiceItems(CharSequence[] items,boolean[] checkedItems,
DialogInterface.OnMultiChoiceClickListener listener) 设置对话框是一个复选的List,指定默认选 中项,同时设置监听处理操作
8 public AlertDialog.Builder setPositiveButton 为对话框添加一个确认按钮,同时设置监听
(CharSequence text,DialogInterface.OnClickListener listener) 操作
9 public AlertDialog.Builder setNegativeButton 为对话框添加一个取消按钮,同时设置监听
(CharSequence text,DialogInterface.OnClickListener listener) 操作
10 public AlertDialog.Builder setPosiotiveButton(int textId,DialogInterface.OnClickListener listener) 为对话框添加一个确认按钮,显示的内容由资源文件指定,并设置监听操作
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
对话框事件处理接口
1 DialogInterface.OnClickListener 对话框单击事件处理接口
2 DialogInterface.OnCancelListener() 对话框取消事件处理接口
3 DialogInterface.OnDismissListener() 对话框隐藏事件处理接口
4 DialogInterface.OnKeyListener() 对话框键盘事件处理接口
5 DialogInterface.OnMultiChoiceClickListener() 对话框多选事件处理接口
6 DialogInterface.OnSingleChoiceClickListener() 对话框单选事件处理接口
7 DialogInterface.OnShowListener() 对话框显示事件处理接口
================================================================================================================================
创建一个简单的对话框代码如下:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package org.lxh.demo;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
public class MyDialogDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 调用布局管理器
Dialog dialog = new AlertDialog.Builder(this)
.setTitle("对话框")
// 创建标题
.setMessage("显示提示信息") // 表示对话框中的内容
.setIcon(R.drawable.pic_m) // 设置LOGO
.create(); // 创建了一个对话框
dialog.show() ;
// 显示对话框
}
}
---------------------------------------------------------------------------------------------- 程序退出提示的对话框
在许多应用程序中都可以实现程序的退出功能,而且所有的退出功能在退出的时候都会询问用户,是否真的要退出呢?
以后肯定要在图片按钮上设置操作事件,对退出操作进行监听的实现。
如果想要彻底结束一个Android程序,那么可以直接利用Activity类中提供的finish()方法完成。
但是大部分Android手机往往在退出程序的时候,是不会选择按钮完成的,只会通过屏幕上的返回键返回
如果想对此操作进行监听,那么一定要覆写一个操作方法,对按键进行监听。 一般用onKeyDown()方法
---------------------------------------------------------------------------------------------- 定制对话框和LayoutInflater
之前全部是Android之中所默认提供的对话框操作类型,实际上用户可以根据自己需要定义一个属于自己的对话框 如果现在希望在对话框中显示一些复杂的界面,例如:编写一个登录提示的对话框,这时候就需要通过布局文件定义显示组件,之后再将这些布局文件包含到对话框之中,但是如果想要包含,则需要LayoutInflater类的支持
布局————>LayoutInflater--------->布局管理器定义的组件
此类常用的方法如下:
1 public static LayoutInflater from(Context context) 从给定的容器中创建LayoutInflater对象
2 public View inflate(int resource,ViewGroup root) 从布局文件的定义转变为View对象
----------------------------------------------------------------------------------------------
日期对话框——>DatePickerDialog类的常用方法
1 public DatePickerDialog(Context context,
DatePickerDialog.OnDateSetListener callback, 创建DatePickerDialog对象,同时指定监听操作
int year,int monthOfYear,int dayOfMonth 要设置的年、月、日等信息
)
2 publicvoid updateDate(int year,int year,int dayOfMonth) 更新年、月、日组件上的信息
----------------------------------------------------------------------------------------------
时间对话框:TimePickerDialog
DatePickerDialog的功能是进行日期的显示,但是如果要想显示时间则需要依靠TimePickerDialog组件完成此类定义结构如下:
java.lang.Object
android.app.Dialog
android.app.AlertDialog
android.app.TimePickerDialog
TimePickerDialog类的常用方法如下:
1 public TimePickerDialog(Context context,
TimePickerDialog.OnTimeSetListener callBack, 创建时间对话框,同时设置时间改变事件的操作
int hourOfDay,int minute,boolean is24HourView 小时 分 以及是否是24小时制
)
2 public void updateTime(int HourOfDay,int minuteOfHour) 更新时 分
---------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------
进度处理对话框:ProgressDialog
在进行复杂操作的时候往往需要有一段操作时间,所以这个时候往往会为用户出现一个等待的对话框,而这个时候用户可以通过进度处理对话框显示进度的相关情况,此类的定义结构如下:
java.lang.Object
android.app.Dialog
android.app.AlertDialog
android.app.ProgressDialog
ProgressDialog类的常用方法及其设置
1 public static int STYLE_HORIZONTAL 水平进度显示风格
2 public static final int STYLE_SPINNER 环形进度显示风格
3 public ProgressDialog(Context context) 创建进度对话框
4 public void setMessage(CharSequence message) 设置显示信息
5 public void onStart() 启动进度框
6 public void setProgressStyle(int style) 设置进度条的显示风格
7 public static ProgressDialog show(Context context,
CharSequence title,
CharSequence message 直接创建进度对话框,指定对话框的标题及信息
)
8 public void incrementProgressBy(int diff) 设置进度每次增长的值
9 public void setMax(int max) 设置进度条的最大增长值
10 public void setProgress(int value) 设置当前进度
11 public void setButton(CharSequence text,DiologInterface.OnClickListener listener)
添加按钮并设置监听
进度的控制肯定是需要交给另外一个线程去运行的
匿名内部类要想访问方法中的参数,方法参数必须加上final
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1简单对话提示框
编辑.java文件如下
package org.lxh.demo;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
public class MyDialogDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 调用布局管理器
Dialog dialog = new AlertDialog.Builder(this)
.setTitle("对话框") // 创建标题
.setMessage("显示提示信息") // 表示对话框中的内容
.setIcon(R.drawable.pic_m) // 设置LOGO
.create(); // 创建了一个对话框
dialog.show() ; // 显示对话框
}
}
效果如下