一、消息对话框

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

代码:

   //消息提示框
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. Libevent核心原理

    Libevent 是一个事件驱动框架, 不能仅说他是一个网络库. notejs就是采用与libevent类似的libev来做核心驱动的.   Libevent支持三种事件:io事件.信号事件.时间事件 ...

  2. 用Canvas,画中国国旗(Canvas基本知识点)

    .getContext("2d")=======>获取绘图接口 //2d .beginPath()========>创建绘图路径开始点 .moveTo(x,y)==== ...

  3. USACO 4.1 Fence Loops(Floyd求最小环)

    Fence Loops The fences that surround Farmer Brown's collection of pastures have gotten out of contro ...

  4. InnoDB的Named File Formats

    随着InnoDB存储引擎的发展,新的页数据结构有时用来支持新的功能特性.比如前面提到的InnoDB Plugin,提供了新的页数据结构来支持表压缩功能,完全溢出的(Off page)大变长字符类型字段 ...

  5. 关于IIS强制配置启用IE8以上浏览器兼容打开系统

    关于兼容性问题,采用了IIS7自定义标头的方案,经测试,适用可行.(本人使用的是第二种方式) 指定自定义 HTTP 响应标头 1.使用 IIS Web  服务器为站点定义自定义标头即可为您的网站指定文 ...

  6. Rails 执行 rails server 报错 Could not find a JavaScript runtime

    gem install 'execj' gem install 'therubyrace' Ubuntu install Node.js(ubuntu) sudo apt-get install no ...

  7. C#程序基础

  8. python2 基础

    标识符 标识符是由字母,下划线和字母组成的字符序列标识符必须以字母,下划线开头,不能以数字开头标识符不能是关键字标识符可以为任意长度 算术运算符+-*///**% 科学记数法 aEb 或者aE+b例: ...

  9. 让IE的Button自适应文字宽度兼容

    width:auto; overflow:visible; 这样将可以去掉IE按钮文字两边多余的空格,并按照自己设置的padding 来显示

  10. Kostya the Sculptor

    Kostya the Sculptor 题目链接:http://codeforces.com/problemset/problem/733/D 贪心 以次小边为第一关键字,最大边为第二关键字,最小边为 ...