一、消息对话框

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

代码:

  1. //消息提示框
  2. public void testOne(View view){
  3. //构建AlertDialog.Builder对象
  4. AlertDialog.Builder bulider=new AlertDialog.Builder(this);
  5. //设置相关的参数
  6. bulider.setTitle("消息");
  7. bulider.setIcon(R.drawable.ic_launcher);
  8. bulider.setMessage("Hello,Android");
  9. bulider.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  10. @Override
  11. public void onClick(DialogInterface dialog, int which) {
  12. Toast.makeText(getApplication(), "你选择了确定", ).show();
  13. }
  14. }).setNegativeButton("取消", null).setNeutralButton("其他", null);
  15. //构建Dialog
  16. final AlertDialog dialog=bulider.create();
  17. dialog.show();
  18. //点击按钮不关闭
  19. dialog.getButton(Dialog.BUTTON_NEUTRAL).setOnClickListener(new View.OnClickListener() {
  20. @Override
  21. public void onClick(View v) {
  22. Toast.makeText(getApplicationContext(), "你选择了其他的按钮", ).show();
  23. dialog.dismiss();//手动关闭
  24. }
  25. });
  26. }

效果:

二、列表框

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

代码:

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

效果:

三、单选按钮

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

代码:

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

效果:

四、复选按钮

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

代码:

  1. //复选框
  2. boolean[] isSelected=null;
  3. public void testFour(View view){
  4. isSelected=new boolean[citys.length];
  5. AlertDialog.Builder builder=new AlertDialog.Builder(this);
  6. builder.setIcon(R.drawable.ic_launcher);
  7. builder.setTitle("请选择城市");
  8. builder.setMultiChoiceItems(citys, null, new DialogInterface.OnMultiChoiceClickListener() {
  9. @Override
  10. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  11. isSelected[which]=isChecked;
  12. }
  13. }).setPositiveButton("确认",new DialogInterface.OnClickListener() {
  14. @Override
  15. public void onClick(DialogInterface dialog, int which) {
  16. String str="";
  17. for (int i = ; i < citys.length; i++) {
  18. if(isSelected[i]){
  19. str+=citys[i]+",";
  20. }
  21. }
  22. Toast.makeText(getApplicationContext(), str, ).show();
  23. showText.setText(str);
  24. }
  25. }).create().show();
  26. }

效果:

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

五、日期对话框

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

代码:

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

效果:

六、时间对话

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

效果:

七、进度条

第一种:

  1. //简单进度条对话框
  2. boolean isRun=true;
  3. public void testSeven(View view){
  4. isRun=true;
  5. final ProgressDialog dialog=new ProgressDialog(this);
  6. dialog.setIcon(R.drawable.ic_launcher);
  7. dialog.setTitle("正在下载");
  8. dialog.setMessage("内容正在加载中......");
  9. dialog.setButton(Dialog.BUTTON_NEGATIVE, "取消", new OnClickListener() {
  10. @Override
  11. public void onClick(DialogInterface dialog, int which) {
  12. isRun=false;
  13. }
  14. });
  15. dialog.show();
  16. //开启一个线程执行下载
  17. new Thread(new Runnable() {
  18. @Override
  19. public void run() {
  20. while(isRun){
  21. for (int i = ; i < ; i++) {
  22. try {
  23. Thread.sleep();
  24. } catch (InterruptedException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. isRun=false;
  29. runOnUiThread(new Runnable() {
  30. public void run() {
  31. dialog.dismiss();
  32. }
  33. });
  34. }
  35. }
  36. }).start();
  37. }

效果:

第二种:

  1. //进度条二
  2. ProgressDialog dialog=null;
  3. boolean isRun2;
  4. public void testEight(View view){
  5. dialog=new ProgressDialog(this);
  6. dialog.setTitle("正在下载");
  7. dialog.setProgress();
  8. dialog.setMax();
  9. dialog.setIcon(R.drawable.ic_launcher);
  10. dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
  11. dialog.setButton(Dialog.BUTTON_POSITIVE, "取消", new OnClickListener() {
  12.  
  13. @Override
  14. public void onClick(DialogInterface dialog, int which) {
  15. isRun2=false;
  16. }
  17. });
  18. dialog.show();
  19. isRun2=true;
  20. //开始更新进度条
  21. new Thread(new Runnable() {
  22. @Override
  23. public void run() {
  24. while(isRun2){
  25. if(dialog.getProgress()<){
  26. //每一次更新+1
  27. dialog.setProgress(dialog.getProgress()+);
  28. try {
  29. Thread.sleep();
  30. } catch (InterruptedException e) {
  31. e.printStackTrace();
  32. }
  33. }else{
  34. isRun2=false;
  35. runOnUiThread(new Runnable() {
  36. @Override
  37. public void run() {
  38. Toast.makeText(MainActivity.this, "文件下载完毕", ).show();
  39. dialog.dismiss();
  40. }
  41. });
  42. }
  43. }
  44. }
  45. }).start();
  46. }

效果:

八、自定义对话框

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

代码:

mydialog_login.xml代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6.  
  7. <TextView
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:text="用户名:"
  11. android:textSize="25sp" />
  12.  
  13. <EditText
  14. android:id="@+id/uname"
  15. android:layout_width="match_parent"
  16. android:layout_height="wrap_content" />
  17.  
  18. <TextView
  19. android:layout_width="match_parent"
  20. android:layout_height="wrap_content"
  21. android:text="密 码:"
  22. android:textSize="25sp" />
  23.  
  24. <EditText
  25. android:id="@+id/upwd"
  26. android:layout_width="match_parent"
  27. android:layout_height="wrap_content"
  28. android:password="true" />
  29.  
  30. </LinearLayout>

MainActivity.java中的代码:

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

效果:

九、总结

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

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. 使用kettle工具将文本文件的内容插入Linux虚拟机下的mysql表中

    一.      解压kettle包 1.把包拷到Linux系统下 还有mysql的驱动包 2.解压zip后缀的包 输入命令:unzip /software/pdi-ce-7.0.0.0-25.zip ...

  2. mybatis 入门优化

    在上一节<mybatis快速入门>的基础上对IWebUserDao的实现类进行了优化,暂时命名为WebUserDaoMybatis2.java package com.mozi.dao.i ...

  3. base关键字

    base关键字      专门用来在子类访问父类成员 base.标识符:“.”调用父类同名属性.同名函数.构造函数 ()父类person public class Person { public Pe ...

  4. orchard相关网址

    1.官网文档  http://docs.orchardproject.net/ 2.github  https://github.com/OrchardCMS/Orchard 3.stackoverf ...

  5. appium+robotframework的简单实例

    在上篇文章中,我们搭建好了appium+robotframework的环境,这篇文章中主要是一个简单实例. 一.测试用例编写前提 1.模拟器(或手机)连接电脑 adb devices         ...

  6. Docker集群实验环境布署--swarm【1 架构说明】

    在读完<Docker技术入门与实践>这本书后,基本上已对Docker了有一些入门的理解,以及我们为什么要使用Docker 答:我们发现在实际工作中,通过openstack一旦把一个VM创建 ...

  7. 一步步优化JVM五:优化延迟或者响应时间

    本节的目标是做一些优化以满足对应用对延迟的需求.这次需要几个步骤,包括完善Java堆大小的配置,评估垃圾回收占用的时间和频率,也许还要尝试切换到不同的垃圾回收器,以及由于使用了不同的垃圾回收器,需要重 ...

  8. button 自动刷新当前页面

    button请始终为按钮规定 type 属性.Internet Explorer 的默认类型是 "button",而其他浏览器中(包括 W3C 规范)的默认值是 "sub ...

  9. MVC-Area

    ASP.NET MVC中,是依靠某些文件夹以及类的固定命名规则去组织model实体层,views视图层和控制层的.如果是大规模的应用程序,经常会由不同功能的模块组成,而每个功能模块都由MVC中的三层所 ...

  10. UVA11549 计算机谜题(Floyd判圈算法)

    #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ...