在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; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void Btn1_Onclick(View view) {
// 实例化Builder
builder = 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() {
@Override
public 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() {
@Override
public 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() {
@Override
public 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() { @Override
public 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();
}
}

MainActivity.class

源代码: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游戏编程之从零开始》】5.Android 游戏开发常用的系统控件(ProgressBar、Seekbar)

    3.7 ProgressBar ProgressBar类官方文档地址:http://developer.android.com/reference/android/widget/ProgressBar ...

  3. 【读书笔记《Android游戏编程之从零开始》】4.Android 游戏开发常用的系统控件(EditText、CheckBox、Radiobutton)

    3.4 EditText EditText类官方文档地址:http://developer.android.com/reference/android/widget/EditText.html Edi ...

  4. 【读书笔记《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)

    3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里 ...

  5. 【读书笔记《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)

    Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm ...

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

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

  7. Java并发编程的艺术读书笔记(2)-并发编程模型

    title: Java并发编程的艺术读书笔记(2)-并发编程模型 date: 2017-05-05 23:37:20 tags: ['多线程','并发'] categories: 读书笔记 --- 1 ...

  8. Java并发编程的艺术读书笔记(1)-并发编程的挑战

    title: Java并发编程的艺术读书笔记(1)-并发编程的挑战 date: 2017-05-03 23:28:45 tags: ['多线程','并发'] categories: 读书笔记 --- ...

  9. 《Essential C++》读书笔记 之 C++编程基础

    <Essential C++>读书笔记 之 C++编程基础 2014-07-03 1.1 如何撰写C++程序 头文件 命名空间 1.2 对象的定义与初始化 1.3 撰写表达式 运算符的优先 ...

随机推荐

  1. Wijmo金融图表系列之平均K线图&砖形图

    2015年7月16日将会发布有史以来最令人兴奋的控件-Wijmo 金融图表,它的一体化设计为单个自定义集合提供了所有主要的金融图表,这是市场上的其他控件都不具备的独一无二的好处.它像Wijmo其他任意 ...

  2. webservice 原理

    webservice 原理1.soap协议,其实就是用http协议来传输xml格式的数据,可以post,get.一般有post.2.服务端有:本地程序代码(也不是dll)和xml格式的文件用来描述dl ...

  3. ReactNative——生命周期

    1.创建阶段 getDefaultProps:处理props的默认值 在react.createClass调用 //在创建类的时候被调用 this.props该组件的默认属性 2.实例化阶段 Reac ...

  4. ahjesus 安装mongodb企业版for ubuntu

    导入共匙 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 创建源列表 echo 'deb http ...

  5. SQL 语句日期用法及函数

    SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天 ...

  6. JS-取出字符串中重复次数最多的字符并输出

    /** 取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa'; //创建字符串 var word, //单个字符 le ...

  7. [ javascript canvas toDataURL() clip() ] javascript canvas toDataURL() clip() 属性及方法演示

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...

  8. 转:NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因

    转:http://www.cnblogs.com/tider1999/p/4308440.html NLog的安装请百度,我安装的是3.2.NLog可以向文件,数据库,邮件等写日志,想了解请百度,这里 ...

  9. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q22-Q24)

    Question22You create a Feature.You need to remove the link to the Site Content Type page from the Si ...

  10. Git学习 --> 个人常用命令add,commit以及push

    Git命令行配置1 安装Github2 安装msysgit3 要配置用户名和油箱  git config --global user.name <用户名> 我的命令就是:git confi ...