在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. 我的HTML笔记

    HTML(Hypertext Marked Language)"超文本标记语言". 1.HTML的声明 <!DOCTYPE html> 2.HTML的基本结构 < ...

  2. (旧)子数涵数·UI设计——扁平化设计

    一.基本资料 1.由来 扁平化设计这个概念,是由Google(谷歌)在2008年提出的:它的首个实践者是microsoft(微软),microsoft在2012年发行了win8系统,这个系统的外观主题 ...

  3. Laravel Predis Error while reading line from the server.

    问题 Laravel说明文档中的 Redis 发布与订阅案例,命令行运行php artisan redis:subscribe 到60s自动断开并报错 [Predis\Connection\Conne ...

  4. Eclipse下Android开发的问题:Installation error: INSTALL_FAILED_NO_MATCHING_ABIS 解决办法

    在Android模拟器上安装apk的时候出现   INSTALL_FAILED_NO_MATCHING_ABIS 这个错误提示的解决办法. 是由于使用了native libraries .该nativ ...

  5. 阿里前CEO卫哲用自己10余年经历,倾诉B2B的三差、四率、两大坑

    今日(12 月 28 日),嘉御基金创始人.阿里巴巴(B2B)前 CEO 卫哲在第三届中国 B2B 电子商务大会上进行了"B2B 冬天里的春天"的主题分享.他提出中国 B2B 行业 ...

  6. JS中标准对象

    JS中标准对象1:不要使用new Number().new Boolean().new String()创建包装对象:2:用parseInt()或parseFloat()来转换任意类型到number: ...

  7. all things are difficult before they are easy

    刚开始接触一项新知识时,总是感觉很难,只要你用心钻研下去,它会慢慢变简单的.

  8. Fresco 使用笔记(一):加载gif图片并播放

    项目总结 --------------------------------------------------------------------- 前言: 项目中图文混合使用的太多太多了,但是绝大部 ...

  9. [leetcode] Contains Duplicate II

    Contains Duplicate II Given an array of integers and an integer k, find out whether there there are ...

  10. C中的一些经常会用到的函数

    1.sscanf 函数原型: int sscanf(const char *,const char *,...); int sscanf(const char *buffer,const char * ...