一、消息对话框

  所谓的消息对话框,就是说当你点击按钮弹框,它会弹出一个消息提示你,消息对话框有相应的确定、取消、其他按钮,比如下方:

代码:

   //消息提示框
public void testOne(View view){
//构建AlertDialog.Builder对象
AlertDialog.Builder bulider=new AlertDialog.Builder(this);
//设置相关的参数
bulider.setTitle("消息");
bulider.setIcon(R.drawable.ic_launcher);
bulider.setMessage("Hello,Android");
bulider.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplication(), "你选择了确定", ).show();
}
}).setNegativeButton("取消", null).setNeutralButton("其他", null);
//构建Dialog
final AlertDialog dialog=bulider.create();
dialog.show();
//点击按钮不关闭
dialog.getButton(Dialog.BUTTON_NEUTRAL).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "你选择了其他的按钮", ).show();
dialog.dismiss();//手动关闭
}
});
}

效果:

二、列表框

  弹出的对话框,内容是以列表的形式排版

代码:

    //定义内容显示
private EditText showText;
private String[] citys={"北京","上海","南京","广州","深圳","珠海"};
//列表框
public void testTwo(View view){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请选择城市");
builder.setItems(citys,new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showText.setText(citys[which]);
}
}).create().show();
}

效果:

三、单选按钮

  只能选择一个,如下所示:

代码:

  //单选按钮
public void testThree(View view){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请选择城市");
builder.setSingleChoiceItems(citys, -,new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
showText.setText(citys[which]);
}
}).setPositiveButton("确实",null).create().show();
}

效果:

四、复选按钮

  可以多选几个,如下所示:

代码:

    //复选框
boolean[] isSelected=null;
public void testFour(View view){
isSelected=new boolean[citys.length];
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请选择城市");
builder.setMultiChoiceItems(citys, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
isSelected[which]=isChecked;
}
}).setPositiveButton("确认",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String str="";
for (int i = ; i < citys.length; i++) {
if(isSelected[i]){
str+=citys[i]+",";
}
}
Toast.makeText(getApplicationContext(), str, ).show();
showText.setText(str);
}
}).create().show();
}

效果:

和前面一样,也是取到值,显示在TextView

五、日期对话框

  日期的对话框,自动定位到当前的日期,如下所示:

代码:

    //日期对话框
public void testFive(View view){
Calendar cal=Calendar.getInstance();
DatePickerDialog dialog=new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
showText.setText(year+"-"+(monthOfYear+)+"-"+dayOfMonth);
}
}, cal.get(cal.YEAR), cal.get(cal.MONTH), cal.get(cal.DATE));
dialog.setIcon(R.drawable.ic_launcher);
dialog.setTitle("请选择日期");
dialog.show();
}

效果:

六、时间对话

    //时间对话框
public void testSix(View view){
Calendar cal=Calendar.getInstance();
TimePickerDialog dialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
showText.setText(hourOfDay+":"+minute);
}
},cal.get(cal.HOUR_OF_DAY),cal.get(cal.MINUTE),true);
dialog.setIcon(R.drawable.ic_launcher);
dialog.setTitle("请选择时间");
dialog.show();
}

效果:

七、进度条

第一种:

    //简单进度条对话框
boolean isRun=true;
public void testSeven(View view){
isRun=true;
final ProgressDialog dialog=new ProgressDialog(this);
dialog.setIcon(R.drawable.ic_launcher);
dialog.setTitle("正在下载");
dialog.setMessage("内容正在加载中......");
dialog.setButton(Dialog.BUTTON_NEGATIVE, "取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
isRun=false;
}
});
dialog.show();
//开启一个线程执行下载
new Thread(new Runnable() {
@Override
public void run() {
while(isRun){
for (int i = ; i < ; i++) {
try {
Thread.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
isRun=false;
runOnUiThread(new Runnable() {
public void run() {
dialog.dismiss();
}
});
}
}
}).start();
}

效果:

第二种:

    //进度条二
ProgressDialog dialog=null;
boolean isRun2;
public void testEight(View view){
dialog=new ProgressDialog(this);
dialog.setTitle("正在下载");
dialog.setProgress();
dialog.setMax();
dialog.setIcon(R.drawable.ic_launcher);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setButton(Dialog.BUTTON_POSITIVE, "取消", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
isRun2=false;
}
});
dialog.show();
isRun2=true;
//开始更新进度条
new Thread(new Runnable() {
@Override
public void run() {
while(isRun2){
if(dialog.getProgress()<){
//每一次更新+1
dialog.setProgress(dialog.getProgress()+);
try {
Thread.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
isRun2=false;
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "文件下载完毕", ).show();
dialog.dismiss();
}
});
}
}
}
}).start();
}

效果:

八、自定义对话框

  自定义对话框,可根据自己的想法去实现,在这里我就举个例子,就做一个登录:

代码:

mydialog_login.xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="用户名:"
android:textSize="25sp" /> <EditText
android:id="@+id/uname"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="密 码:"
android:textSize="25sp" /> <EditText
android:id="@+id/upwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:password="true" /> </LinearLayout>

MainActivity.java中的代码:

    //自定义对话框
public void testNine(View view){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("用户登录");
//通过投影将布局文件加载进来生成View
View v=LayoutInflater.from(this).inflate(R.layout.mydialog_login, null);
final EditText uname=(EditText)v.findViewById(R.id.uname);
final EditText upwd=(EditText)v.findViewById(R.id.upwd);
builder.setView(v);
builder.setPositiveButton("登录", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String name=uname.getText().toString();
String pwd=upwd.getText().toString();
Toast.makeText(getApplicationContext(), name+"_"+pwd, ).show();
}
}).setNegativeButton("取消", null);
builder.create().show();
}

效果:

九、总结

  这些会话框代码都是直接复制到自己的编辑器上就可以使用了,也是简单易用的。至于难点也是有的,进度条和自定义相对难一点。

Android(对话框)的更多相关文章

  1. Android 对话框(Dialog)大全 建立你自己的对话框

    Android 对话框(Dialog)大全 建立你自己的对话框 原文地址: http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html A ...

  2. Android对话框

    这周过的实在是艰辛,自打这周二起我的本本就开始闹"罢工",最后还是重装系统了事. . .   只是可怜了我的那些被格了的软件(悲伤辣么大)!  往事不要再提,人生几度风雨... 简 ...

  3. Android对话框和帧动画

    Android对话框 在一个例子中展示四种对话框. 设置四个按钮 <LinearLayout xmlns:android="http://schemas.android.com/apk ...

  4. Android对话框(Dialog)

    Android对话框 前几天出差没有进行更新,今天写一下安卓中用的比较多的对话框——AlertDialog. dialog就是一个在屏幕上弹出一个可以让用户做出一个选择,或者输入额外的信息的对话框,一 ...

  5. Android对话框自定义标题

    Android自带的对话框标题不好看,如果我们需要给弹出的对话框设置一个自己定义的标题,可以使用AlertDialog.Builder的setCustomTitle()方法. 定义一个对话框标题的ti ...

  6. Android对话框之dismiss和cancel和hide区别

    在我们看来两者效果都是一样的,其实看下源码就知道cancel肯定会去调dismiss的,如果调用的cancel的话就可以监听DialogInterface.OnCancelListener. /** ...

  7. 转 Android 对话框(Dialog)大全 建立你自己的对话框

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...

  8. Android—对话框

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  9. Android 对话框弹出位置和透明度的设置

    在Android中 我们经常会用AlertDialog来显示对话框.通过这个对话框是显示在屏幕中心的.但在某些程序中,要求对话框可以显示在不同的位置.例如,屏幕的上 方或下方.要实现这种效果.就需要获 ...

  10. Android 对话框用法

    来自:http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html Activities提供了一种方便管理的创建.保存.回复的对话框机制,例 ...

随机推荐

  1. sort()方法理解

    转作者:SMTNinja来源:知乎 下面这个排序函数展示了任何基于比较的排序算法 (comparison-based sorting algorithm) 都有的一段代码: 从大到小排序(一列东西, ...

  2. 如何编译Apache Hadoop2.2.0源代码

    转自(原文图片已丢失,本文修复图片,重新排版,并更正部分原文错误):http://www.superwu.cn/2013/12/26/913 欢迎和大家交流技术相关问题: 邮箱: jiangxinnj ...

  3. hibernate-部分字段查询方案

    hibernate的延迟加载与本列记录不一样,延迟加载正常一般用于关联字段,或者大型字段使用. 本列的情况主要用于,某一张表有几十甚至上百个字段,例如财务报表等.但是在使用某些场景是却大多只是用其10 ...

  4. bzoj1298题解

    [题意分析] 要求设计一组n个m面的骰子,使每一个骰子i对骰子a[i]的胜率都大于50%. [算法分析] 对于每个i,连一条从i指向a[i]的边,那么题目给出的关系构成了一个有向基环树森林. 对于树上 ...

  5. Singleton Pattern(单例模式)

    1.简介 单例模式,顾名思义,即在整个系统中,类的实例对象只有一个. 单例模式具有以下特点: 单例类只能有一个实例 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 2.实现 其 ...

  6. OpenGL的状态机理解

    OpenGL是一种状态机模式,比如你用glEnable打开一个状态,在以后的绘图中将一直保留并应用这个状态,除非你调用glDisable及同类函数来改变该状态或程序退出.例如当前颜色是一个状态变量,可 ...

  7. 微信小程序前置课程:Flex 布局教程(一):语法篇

    原文:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 网页布局(layout)是CSS的一个重点 ...

  8. gamma

    图:显卡(驱动程序)上的Gamma设置 图:ACDSEE中的曝光调节 二. 什么是Gamma? 2.1. 显示器Gamma曲线 Gamma可能源于CRT(显示器/电视机)的响应曲线,即其亮度与输入电压 ...

  9. HTML5学习总结——本地存储

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

  10. asp.net MVC漏油配置总结

    URL构造 命名参数规范+匿名对象 routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}&qu ...