在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. php中的字符串常用函数(一) strpos() 子字符首次出现的位置

    strpos($str, $needle); 1.返回$needle在$str首次出现的位置.(大小写敏感). 2.从php5开始$needle支持多字符.php4只能用单个字符. 3.能找到$nee ...

  2. Ahjesus Nodejs01 环境搭建及运行

    访问http://nodejs.org/,根据系统选择下载文件,我用的win7 64 安装一路下一步直到完成 运行cmd输入node -v查看是否安装成功 成功会显示版本号 到此环境搭建完毕 ==== ...

  3. NYOJ 1058 部分和问题

    部分和问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 给定整数a1.a2........an,判断是否可以从中选出若干数,使它们的和恰好为K.   输入 首先, ...

  4. Android图像处理之Bitmap类

      Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bitmap来实现 ...

  5. dubbo序列化的一点注意

    最近工作中遇见了一个小问题,在此记录一下,大致是这样的,有一父类,有一个属性traceId,主要是记录日志号,这样可以把所有日志串起来,利于排查问题,所有的pojo对象继承于此,但是其中一同事在子类p ...

  6. 【GOF23设计模式】中介者模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_中介者模式.同事协作类.内部类实现 package com.test.mediator; /** * 同事类的接口 */ ...

  7. AngularJS directive 指令相关记录

    .... .directive('scopeDemo',function(){ return{ template: "<div class='panel-body'>Name: ...

  8. 【转】Hadoop web页面的授权设定

    转载自过往记忆(http://www.iteblog.com/)本文链接地址: <Hadoop web页面的授权设定>(http://www.iteblog.com/archives/98 ...

  9. 记录一个调了半天的问题:java.lang.SecurityException: Permission denied (missing INTERNET permission?)

    Move the <uses-permission> elements outside of <application>. They need to be immediate ...

  10. 安装VVDocumenter-Xcode-master (Xcode 7.1)的过程

    下载地址: http://pan.baidu.com/s/1boxvewB 1.首先下载解压压缩包打开VVDocumenter工程,编译一遍(快捷键com+B) 2.在finder里面的应用程序,找到 ...