在Android应用开发中,Dialog(对话框)创建简单且易于管理因而经常用到,对话框默认样式类似创建样式的Activity。
首先介绍android.app.AlertDialog下的Builder这个类。Builder是AlertDialog类的子类,而且还是它的内部类。正如其名所示,Builder相当于一个具体的构造者,通过Builder设置对话框属性,然后将Builder(对话框)显示出来。

本人做了个Dialog显示效果集合的小Demo,效果如下(GIF图片较大,需要点加载时间):

主要代码:

package yc.example.dialogshow;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;public class MainActivity extends Activity {private static AlertDialog.Builder builder;private static Dialog dialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void Btn1_Onclick(View view) {// 实例化Builderbuilder = new AlertDialog.Builder(MainActivity.this);// 设置对话框的图标// builder.setIcon(R.drawable.ic_launcher);
        builder.setIcon(android.R.drawable.ic_dialog_info);// 设置对话框的图标builder.setTitle("对话框标题");// 设置对话框的提示文本builder.setMessage("对话框的提示文本");builder.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {Toast.makeText(MainActivity.this, "这是一个简单的对话框",Toast.LENGTH_SHORT).show();}});// 调用show()方法显示对话框
        builder.show();}public void Btn2_Onclick(View view) {dialog = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher).setTitle("提示").setMessage("确认退出吗?").setPositiveButton("确定", null).setNegativeButton("取消", null).show();}public void Btn3_Onclick(View view) {dialog = new AlertDialog.Builder(this).setIcon(android.R.drawable.btn_star).setTitle("喜好调查").setMessage("您喜欢玩LOL吗?").setPositiveButton("很喜欢", null)// 监听P型按钮,正极性;.setNegativeButton("不喜欢", null)// 监听N型按钮,负极性;.setNeutralButton("一般", null)// 监听中性按钮,一般位于中间
                .show();}public void Btn4_Onclick(View view) {dialog = new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_info).setTitle("请输入")/** setView()方法是往对话框中添加系统组件,但只能设置一个组件,如果多次使用,先设置的组件会被后设置的组件替换掉* setView()添加一个系统组件的布局,默认都放在对话框的最下方(按钮上面)*/.setView(new EditText(this)).setPositiveButton("确定", null).setNegativeButton("取消", null).show();}public void Btn5_Onclick(View view) {final String[] WuJiang = new String[] { "关羽", "张飞", "吕布", "赵云", "马超" };dialog = new AlertDialog.Builder(this).setTitle("请选择你的初始武将").setIcon(android.R.drawable.ic_dialog_info)/** 添加单选框的方法: setSingleChoiceItems(CharSequence[] items, int* checkedItem, OnClickListener listener) items:表示单选的各项文本* checkedItem:表示单选中默认选中的下标 listener:单击监听器*/.setSingleChoiceItems(WuJiang, 0, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"你选择的武将是:" + WuJiang[which], Toast.LENGTH_SHORT).show();dialog.dismiss();}}).show();}public void Btn6_Onclick(View view) {dialog = new AlertDialog.Builder(this).setTitle("请选择你喜欢的运动")/** 添加复选框的方法: setMultiChoiceItems(CharSequence[] items, boolean[]* checkedItems, OnMultiChoiceClickListener listener)* items:表示复选文本的各项文本; checkedItems:表示复选的各项选中状态; listener:多选单击监听器*/.setMultiChoiceItems(new String[] { "篮球", "足球", "游泳", "赛车", "跑步" }, null,null).setPositiveButton("确定", null).setNegativeButton("取消", null).show();}public void Btn7_Onclick(View view) {dialog = new AlertDialog.Builder(this).setTitle("武将列表").setItems(new String[] { "吕奉先", "赵子龙", "恶来典韦", "关云长", "张翼德" },null).setPositiveButton("确定", null).setNegativeButton("取消", null).show();}public void Btn8_Onclick(View view) {ImageView img = new ImageView(this);img.setImageResource(R.drawable.goodby_times);dialog = new AlertDialog.Builder(this).setTitle("再见,时光!").setView(img).setPositiveButton("确定", null).show();}public void Btn9_Onclick(View view) {// 实例化Layout布局LayoutInflater inflater = getLayoutInflater();View layout = inflater.inflate(R.layout.dialog1,(ViewGroup) findViewById(R.id.dialog_layout));Button btn_Login = (Button) layout.findViewById(R.id.btn_Login);final EditText uname = (EditText) layout.findViewById(R.id.uname);final EditText pwd = (EditText) layout.findViewById(R.id.pwd);btn_Login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, "用户名:"+uname.getText()+"\n密码:"+pwd.getText(),Toast.LENGTH_SHORT).show();dialog.dismiss();}});dialog = new AlertDialog.Builder(this).setTitle("用户登录").setView(layout).show();}// 进度读取框需要模拟读取private ProgressDialog progressDialog = null;private final static int MAX_READPROCESS = 100;public void Btn10_Onclick(View view) {progressDialog = new ProgressDialog(MainActivity.this);progressDialog.setIcon(android.R.drawable.ic_dialog_info);progressDialog.setProgress(0);progressDialog.setTitle("程序下载中...");progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setMax(MAX_READPROCESS);progressDialog.show();new Thread(progress).start();}// 新开启一个线程,循环的累加,一直到100然后在停止Runnable progress = new Runnable() {@Overridepublic void run() {int Progress = 0;while (Progress < MAX_READPROCESS) {try {Thread.sleep(50);progressDialog.setProgress(++Progress);} catch (InterruptedException e) {e.printStackTrace();}}//读取完了以后窗口自消失
            progressDialog.cancel();}};public void Btn11_Onclick(View view) {progressDialog= new ProgressDialog(MainActivity.this); progressDialog.setMessage("正在为你努力加载数据..."); progressDialog.setIndeterminate(true); progressDialog.setCancelable(true); progressDialog.show(); }
}

源代码:DialogShow.zip

【读书笔记《Android游戏编程之从零开始》】7.Android 游戏开发常用的系统控件(Dialog)相关推荐

  1. 【读书笔记《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)...

    3.9 TabSpec与TabHost TabHost类官方文档地址:http://developer.android.com/reference/android/widget/TabHost.htm ...

  2. Android游戏开发系统控件-Dialog

    Android游戏开发系统控件-Dialog Dialog(对话框)在Android应用开发中经常用到,下面是学习<Android游戏编程从零开始>一书,关于Dialog的初步学习. 创建 ...

  3. 【通知】▁▂▃ Himi 著作《Android游戏编程之从零开始》★书籍源码+第4/6/7样章★博客系列源码整理打包-免费下载★ ▃▂▁

    2011年9月22日(Himi的22岁生日当天),Himi的著作:<Android游戏编程之从零开始>一书正式发售: (大家可以到新华书店.淘宝.拍拍.当当.亚马逊等进行购买): 感谢一直 ...

  4. [转] Himi 著作《Android游戏编程之从零开始》★书籍源码+第4/6/7样章—免费下载★...

    本文转自:http://blog.csdn.net/xiaominghimi/article/details/6802444 Himi 原创, 转载请注明出处,谢谢! 原文地址:http://blog ...

  5. [置顶]▁▂▃ Himi 著作《Android游戏编程之从零开始》★书籍源码免费下载★ ▃▂▁...

    Himi 原创, 转载请注明出处,谢谢! 原文地址:http://blog.csdn.net/xiaominghimi/article/details/6802444 2011年9月22日(Himi的 ...

  6. ★书籍源码免费下载★Himi 著作《Android游戏编程之从零开始》

    2011年9月22日(Himi的22岁生日当天),Himi的著作:<Android游戏编程之从零开始>一书正式发售:(请到书店.淘宝.当当网等进行购买) 感谢一直以来关注Himi的童鞋们. ...

  7. 《Android游戏编程之从零开始》书评之基础的魅力

    拜读完<Android游戏编程之从零开始>的试读章节之后,感受颇深,对于游戏开发过程中用到的知识,有了初步的了解,此书就一些基本图形为例,展开对游戏开发的基本原理的阐述.本人感觉,介绍一种 ...

  8. 【Android】Android游戏编程之从零开始

    <Android游戏编程之从零开始>主要系统地讲解了Android游戏开发,从最基础部分开始,让零基础的Android初学者也能快速学习和掌握Android游戏开发.<Android ...

  9. Windows游戏编程之从零开始d

    Windows游戏编程之从零开始d I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来 ...

  10. 【通知】▁▂▃ Himi 最新著作《iOS游戏编程之从零开始—Cocos2d-x与cocos2d引擎游戏开发》★书籍源码+第4/5/6样章★-免费下载★ ▃▂▁

    2013年新年,Himi的第二本著作:<iOS游戏编程之从零开始-Cocos2d-x与cocos2d引擎游戏开发>一书正式发售: (大家可以到新华书店.淘宝.拍拍.当当.亚马逊等进行购买) ...

最新文章

  1. 使用ISA2004发布多个Web站点之二
  2. Spring 整合 CXF
  3. websocket与socket.io
  4. springsecurity 认证之授权码模式
  5. 8月20日全球六大国际域名解析量变化情况统计报告
  6. oracle vm传输,XML 传输 - Oracle VM Server for SPARC 2.0 管理指南
  7. 双十一清醒指南,送3本Python书
  8. PHP数组的使用方法小结
  9. Bailian2747 Bailian4146 数字方格【暴力】
  10. php 上传图片并生成缩略图,php 上传图片并生成缩略图
  11. Android解压/重新打包system.img
  12. python_datetime
  13. 听8位淘宝工程师聊聊他们眼中的元宇宙 | 1024特辑
  14. C++STL常用算法adjacent_find
  15. 计算机显示器分辨率,现在电脑的主流显示器的分辨率一般是多大?
  16. 高德地图 删除marker(指定marker)
  17. c语言数码管中断器,数码管动态显示 定时器中断 数码管动态显示不正常
  18. ACL-BioNLP 2020 | 耶鲁大学实践成果:生物医药知识图谱嵌入模型基准测试
  19. Linux源代码下载
  20. 随手查——Multisim

热门文章

  1. 计算机二级-C语言-程序设计题-190118记录-通过数组和指针两种方式对字符串进行处理。...
  2. 02-监督学习应用.梯度下降
  3. 书中的银行,我们一起奋斗的C#,只因乐在其中~
  4. unity, 判断可见性
  5. js事件冒泡和事件捕获的区别
  6. 用程序关闭、注销、重启计算机
  7. The Beauty of DirectX 11 (3) --- constant buffer, buffered/structure buffer
  8. mac install torch0.4.1
  9. CE6870 添加ipv6 策略路由失败问题解决
  10. 工作中线程池使用不当的问题记录(get是阻塞式的)