当Activity需要临时显示一些信息或者提供一些功能,而创建一个activity又开销太大时,可以考虑一个Dialog
对话框和菜单一样 都是通过activity统一管理的,
1 @Override//回调方法
protected Dialog onCreateDialog (int id) {
switch (id) {
case DIALOG_WELCOME:
return new AlertDialog.Builder(ex10.this)
.setIcon(android.R.drawable.ic_dialog_info)
//内部图片类 android.R.drawable.*
.setTitle("欢迎")
.setMessage("欢迎使用本程序!")
.setPositiveButton("确定",new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
// 单击确定按钮做的事情。
}
})
.create();
default:
return null;
}
实现oncreateDialog方法,通过showDialog(int id)传进来的id进行对话框调用返回相应的对话框。
AlertDialog 是最简单的警告对话框。
2 日期选择和时间选择对话框 DatePickerDialog和TimePickerDialog
protected Dialog onCreateDialog (int id) {
switch (id) {
case DIALOG_DATEPICKER:
return new DatePickerDialog(this,
new OnDateSetListener() {
public void onDateSet(DatePicker v, int y,
int m, int d) {
/*
* 这是设置好日期后的回调函数,
* 可以根据设置的内容更新用户界面
* 或者系统时间。
*/
}
}, c.get(Calendar.YEAR),
c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH));
default:
return null;
}
}
通过showDialog调用。Calender 获取当前日期
3 ProgressDialog 进度框,当在后台进行比较耗时的操作时采用比较好,往往配合handler一起使用。handler就是这种作用
public class ex12 extends Activity {
ProgressDialog pd;
Message msg;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//显示Dialog对话框
showDialog(0);
//使用handler把线程加入到线程队列中,由于此队列当前为空,所以threadr立即执行
// 此处handler和runnable是对等的,handler里德handlermessage()和sendMessage()方法是对等的。
pHandler.post(threadr);
}
//匿名内部类
Handler pHandler = new Handler()
{
public void handleMessage(Message msg)
{
pd.incrementProgressBy(msg.arg1);
pHandler.post(threadr);
}
};
//匿名内部类
Runnable threadr =new Runnable(){
int i=0;
public void run()
{
i+=1;
msg=pHandler.obtainMessage();
//使用message的arg1和arg2参数传递消息,系统性能消耗小。
msg.arg1=i;
if (pd.getProgress() >= 100) {
/*进度条满了后取消对话框*/
pd.dismiss();
//剔除线程
pHandler.removeCallbacks(threadr);
} else {
/*进度条增加一格*/
try{
Thread.sleep(1000);
}
catch(Exception e)
{
e.printStackTrace();
}
pHandler.sendMessage(msg);
}
}
};
@Override
protected Dialog onCreateDialog (int id) {
pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
/*设置进度条格数*/
pd.setMax(MAXPROGRESS);
pd.setProgress(0);
return pd;
}
}
在新建的线程中发送消息
handler.sendMessage(handler.obtainMessage());
•作为发送消息的参数
handler.sendMessage(handler.obtainMessage());
很容易handler在此过程中,在管理着一切的消息——由他发送,由他接收,由他处理。倘若不叫他管家,如何又说的过去呢。的确,我暗服Android设计师的构思(这只是其强大之一瞥,例如其他在MVC上的封装等),然而从面向对象的角度理解,似乎一切都那么的顺理成章,正如上面所说的,Handler对象就是我们所听过了的对象——管家。
细细说来,handler与线程是分不开的,即handler必附着于一个线程,它正是此线程的管家,它负责处理该线程内所有的消息。
对事件和消息的理解
谈上文正到酣处,却已发现handler已经赤裸裸的呈现在了我的面前,它的神秘面纱已被掀开。正说到消息,顿觉有必要研究研究管家的管理对象,还有其余“事件”的那些事儿。
打个比方:管家正在主人院子里巡视,观察着所有到院里来的热光声电。这时,有人来敲门,这是“事件”,敲门声(信息)传到管家耳中,这是接受消息,去开门时处理消息。从计算机角度说,事件是用户发起的,消息是系统发起的,并由程序处理之。至于消息处理的具体细节,荐:了解回调函数
分享到:
相关推荐
FancyAlertDialog-Android,让你的原生android对话框更漂亮。一个库,它将标准的android对话框提升到一个新的级别,并提供多种样式选项。从代码中设置对话框的样式。.zip
Android 对话框(Dialog)样式大全以及简单实现
Android对话框源码,十几种动画的对话框
Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框...
NULL 博文链接:https://xqjay19910131-yahoo-cn.iteye.com/blog/1025973
Android 对话框(Dialog)大全 建立你自己的对话框 附源码 Android 对话框(Dialog)大全 建立你自己的对话框 附源码 Android 对话框(Dialog)大全 建立你自己的对话框 附源码
完全自定义Android对话框AlertDialog的实现,在Android2.1下编译通过
老罗android视频开发源码和ppt 这是视频配套的源码与PPT, 分了不同的小包 老罗写的, 听说叫罗升阳。
Android 对话框(Dialog)大全 建立你自己的对话框
Android dialog对话框用法实例,在dialog上显示一些按钮,并赋值,演示动作脚本的过程,教你android对话框的使用。
NULL 博文链接:https://wangronaldo.iteye.com/blog/1817691
NULL 博文链接:https://guocc.iteye.com/blog/1183014
android对话框大集合 各种你需要的android对话框 单选,多选,列表,进度条的对话框
Android对话框(Dialog)实例
Android 对话框动画实现各种对话框弹出动画特效
android对话框的两种用法,调用系统提供的对话框,以及自定义对话框的使用
介绍多个Android对话框的使用技巧。
本人总结了常用Android对话框(dialog)案列,借鉴网上的资源,总结出日常所用的经典对话框。适合日常开发借鉴使用,也适合初学者学习。