在android开发中,经常会用到对话框跟用户进行交互,方便用户可操作性;接下来就对常用对话框进行简单封装,避免在项目中出现冗余代码,加重后期项目的维护量;代码如有问题欢迎大家拍砖指正一起进步。

先贴出演示结果,在晒出演示代码。
1、运行成功后,原始界面如下:

2、点击“显示普通对话框”,效果界面如下:

3、点击“显示列表对话框”,效果界面如下:

4、点击“显示单选按钮对话框”,效果界面如下:

5、点击“显示复选对话框”,效果界面如下:

代码:
1、项目目录结构如下

2、对话框封装类DialogTool

package com.hrtx.util;
 
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface.OnClickListener;
 
/**
 * 对话框封装类
 *
 * @author jiqinlin
 *
 */
public class DialogTool {
  
    /**
     * 创建普通对话框
     *
     * @param ctx 上下文 必填
     * @param iconId 图标,如:R.drawable.icon 必填
     * @param title 标题 必填
     * @param message 显示内容 必填
     * @param btnName 按钮名称 必填
     * @param listener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @return
     */
 public static Dialog createNormalDialog(Context ctx,
   int iconId,
   String title,
   String message,
   String btnName,
   OnClickListener listener) {
  Dialog dialog=null;
  android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
  // 设置对话框的图标
  builder.setIcon(iconId);
  // 设置对话框的标题
  builder.setTitle(title);
  // 设置对话框的显示内容
  builder.setMessage(message);
  // 添加按钮,android.content.DialogInterface.OnClickListener.OnClickListener
  builder.setPositiveButton(btnName, listener);
  // 创建一个普通对话框
  dialog = builder.create();
  return dialog;
 }
  
  
    /**
     * 创建列表对话框
     *
     * @param ctx 上下文 必填
     * @param iconId 图标,如:R.drawable.icon 必填
     * @param title 标题 必填
     * @param itemsId 字符串数组资源id 必填
     * @param listener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @return
     */
 public static Dialog createListDialog(Context ctx,
   int iconId,
   String title,
   int itemsId,
   OnClickListener listener) {
  Dialog dialog=null;
  android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
  // 设置对话框的图标
  builder.setIcon(iconId);
  // 设置对话框的标题
  builder.setTitle(title);
  // 添加按钮,android.content.DialogInterface.OnClickListener.OnClickListener
  builder.setItems(itemsId, listener);
  // 创建一个列表对话框
  dialog = builder.create();
  return dialog;
 }
  
    /**
     * 创建单选按钮对话框
     *
     * @param ctx 上下文 必填
     * @param iconId 图标,如:R.drawable.icon 必填
     * @param title 标题 必填
     * @param itemsId 字符串数组资源id 必填
     * @param listener 单选按钮项监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @param btnName 按钮名称 必填
     * @param listener2 按钮监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @return
     */
 public static Dialog createRadioDialog(Context ctx,
   int iconId,
   String title,
   int itemsId,
   OnClickListener listener,
   String btnName,
   OnClickListener listener2) {
  Dialog dialog=null;
  android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
  // 设置对话框的图标
  builder.setIcon(iconId);
  // 设置对话框的标题
  builder.setTitle(title);
  // 0: 默认第一个单选按钮被选中
  builder.setSingleChoiceItems(itemsId, 0, listener);
  // 添加一个按钮
  builder.setPositiveButton(btnName, listener2) ;
  // 创建一个单选按钮对话框
  dialog = builder.create();
  return dialog;
 }
  
  
    /**
     * 创建复选对话框
     *
     * @param ctx 上下文 必填
     * @param iconId 图标,如:R.drawable.icon 必填
     * @param title 标题 必填
     * @param itemsId 字符串数组资源id 必填
     * @param flags 初始复选情况 必填
     * @param listener 单选按钮项监听器,需实现android.content.DialogInterface.OnMultiChoiceClickListener接口 必填
     * @param btnName 按钮名称 必填
     * @param listener2 按钮监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @return
     */
 public static Dialog createCheckBoxDialog(Context ctx,
   int iconId,
   String title,
   int itemsId,
   boolean[] flags,
   android.content.DialogInterface.OnMultiChoiceClickListener listener,
   String btnName,
   OnClickListener listener2) {
  Dialog dialog=null;
  android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
  // 设置对话框的图标
  builder.setIcon(iconId);
  // 设置对话框的标题
  builder.setTitle(title);
  builder.setMultiChoiceItems(itemsId, flags, listener);
  // 添加一个按钮
  builder.setPositiveButton(btnName, listener2) ;
  // 创建一个复选对话框
  dialog = builder.create();
  return dialog;
 }
}

3、对话框Activity类DialogActivity

package com.ljq.activity;
 
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
/**
 * 对话框Activity类
 *
 * @author jiqinlin
 *
 */
public class DialogActivity extends Activity {
 private boolean[] flags=new boolean[]{false,true,false}; //初始复选情况
 private String[] items=null;
  
    private EditText etText=null;
    private Button btnNormal=null;
    private Button btnList=null;
    private Button btnRadio=null;
    private Button btnCheckBox=null;
     
    private static final int DIALOG_NORMAL=0; //普通对话框常量
    private static final int DIALOG_LIST=1; //列表对话框常量
    private static final int DIALOG_RADIO=2; //单选按钮对话框常量
    private static final int DIALOG_CHECKBOX=3; //复选对话框常量
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         
        items=getResources().getStringArray(R.array.hobby);
         
        etText=(EditText)findViewById(R.id.etText);
        btnNormal=(Button)findViewById(R.id.btnNormal);
        btnList=(Button)findViewById(R.id.btnList);
        btnRadio=(Button)findViewById(R.id.btnRadio);
        btnCheckBox=(Button)findViewById(R.id.btnCheckBox);
        btnNormal.setOnClickListener(l);
        btnList.setOnClickListener(l);
        btnRadio.setOnClickListener(l);
        btnCheckBox.setOnClickListener(l);
    }
     
    @Override
    protected Dialog onCreateDialog(int id) {
     Dialog dialog=null;
     switch (id) {
  case DIALOG_NORMAL: //创建普通对话框
   dialog = DialogTool.createNormalDialog(this,
     R.drawable.icon,
     "普通对话框",
     "这是普通对话框中的内容!",
     " 确 定 ",
        new android.content.DialogInterface.OnClickListener(){
      @Override
      public void onClick(DialogInterface dialog, int which) {
       etText.setText("这是普通对话框中的内容!");
       return;
      }
              }
            );
   break;
  case DIALOG_LIST: // 创建列表对话框
   dialog = DialogTool.createListDialog(this,
     R.drawable.icon,
     "列表对话框",
     R.array.hobby,
        new android.content.DialogInterface.OnClickListener(){
      @Override
      public void onClick(DialogInterface dialog, int which) {
       String hoddy=getResources().getStringArray(R.array.hobby)[which];    
       etText.setText("您选择了: "+hoddy);
       return;
      }
              }
            );
   break;
  case DIALOG_RADIO: // 创建单选按钮对话框
   dialog=DialogTool.createRadioDialog(this,
     R.drawable.icon,
     "单选按钮对话框",
     R.array.hobby,
        new android.content.DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
       String hoddy = getResources().getStringArray(
         R.array.hobby)[which];
       etText.setText("您选择了: " + hoddy);
       return;
      }
     },
        " 确 定 ",
           new android.content.DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
       Toast.makeText(DialogActivity.this,
         "您按了确定按钮!", Toast.LENGTH_LONG).show();
       return;
      }
     }
   );
   break;
  case DIALOG_CHECKBOX: // 创建复选框对话框
   dialog=DialogTool.createCheckBoxDialog(this,
     R.drawable.icon,
     "复选对话框",
     R.array.hobby,
     flags,
     new DialogInterface.OnMultiChoiceClickListener() {
      public void onClick(DialogInterface dialog, int which, boolean isChecked) {
       flags[which] = isChecked;
       String result = "您选择了:";
       for (int i = 0; i < flags.length; i++) {
        if (flags[i]) {
         result = result + items[i] + "、";
        }
       }
       etText.setText(result.substring(0, result.length() - 1));
      }
     },
     " 确 认 ",
           new android.content.DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
       Toast.makeText(DialogActivity.this, "您按了确定按钮!", Toast.LENGTH_LONG).show();
       return;
      }
     }
       
   );
   break;
  }
     return dialog;
    }
     
    //按钮监听
    View.OnClickListener l = new View.OnClickListener() {
  @Override
  public void onClick(View v) {
   Button btn = (Button) v;
   switch (btn.getId()) {
   case R.id.btnNormal: //普通对话框
                //显示对话框
    showDialog(DIALOG_NORMAL);
    break;
   case R.id.btnList: //列表对话框
                //显示对话框
    showDialog(DIALOG_LIST);
    break;
   case R.id.btnRadio: //单选按钮对话框
                //显示对话框
    showDialog(DIALOG_RADIO);
    break;
   case R.id.btnCheckBox: //复选对话框
                //显示对话框
    showDialog(DIALOG_CHECKBOX);
    break;
   }
  }
 };
}

4、布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <EditText android:text=""
        android:id="@+id/etText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <Button android:text="显示普通对话框"
        android:id="@+id/btnNormal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <Button android:text="显示列表话框"
        android:id="@+id/btnList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <Button android:text="显示单选按钮对话框"
        android:id="@+id/btnRadio"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <Button android:text="显示复选对话框"
        android:id="@+id/btnCheckBox"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

5、数组变量array.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
resources的使用
 
resoureces就是res目录下的那些目录和文件,常用的有:
res/drawable/ 用来存放图片文件
res/layout/ 用来存放布局定义文件
res/values/ 用来存放一些变量、参数等文件
-->
<resources>
 <string-array name="hobby">
  <item>游泳</item>
  <item>打篮球</item>
  <item>登山</item>
 </string-array>
</resources>

6、清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.ljq.activity"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".DialogActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
    </application>
    <uses-sdk android:minSdkVersion="4" />
 
</manifest>

完毕!!!!!

android常用对话框封装的更多相关文章

  1. Android 常用对话框Dialog封装

    Android 6种 常用对话框Dialog封装 包括: 消息对话框.警示(含确认.取消)对话框.单选对话框. 复选对话框.列表对话框.自定义视图(含确认.取消)对话框 分别如下图所示:       ...

  2. (转载)Android常用的Dialog对话框用法

    Android常用的Dialog对话框用法 Android的版本有很多通常开发的时候对话框大多数使用自定义或是 Google提供的V4, V7 兼容包来开发保持各个版本的对话框样式统一,所以这里使用的 ...

  3. Android常用酷炫控件(开源项目)github地址汇总

    转载一个很牛逼的控件收集帖... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.Gri ...

  4. Android 常用炫酷控件(开源项目)git地址汇总

    第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.P ...

  5. Android常用组件

    UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...

  6. Android常用组件【转】

    UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...

  7. android sqlite数据库封装 实现crud

    android常用的数据保存方式有文件.sharepreferences.数据库.网络.contentprovider集中方式. 文件存储方式,经常使用在缓存整个页面数据,比如电子书内容.html数据 ...

  8. Android 常用 adb 命令总结

    Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命 ...

  9. Android 常用代码大集合 [转]

    [Android]调用字符串资源的几种方法   字符串资源的定义 文件路径:res/values/strings.xml 字符串资源定义示例: <?xml version="1.0&q ...

随机推荐

  1. 数据结构——B树、B+树

    B树和B+树主要应用于外排序,对于外排序,从硬盘读取的时间要远远大于遍历树的时间,因此要想办法减少从硬盘读取的时间. B树(有时也叫B-树) M阶B树定义如下: 是一种多路搜索树(并不是二叉的):1. ...

  2. Java NIO 非阻塞Socket服务器构建

    推荐阅读IBM developerWorks中NIO的入门教程,尤其是对块I/O和流I/O不太清楚的开发者. 说到socket服务器,第一反应是java.net.Socket这个类.事实上在并发和响应 ...

  3. code vs1706 求合数和(数论 素数的判定)

    1706 求合数和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解  查看运行结果     题目描述 Description 用户输入一个数,然后输出 ...

  4. Struts2应用流程注解

    当Web容器收到请求(HttpServletReques   t)它将请求传递给一个标准的的过滤链包括(ActionContextCleanUp)过滤器. 经过Other filters(SiteMe ...

  5. Android 6.0的运行时权限

    原文  http://droidyue.com/blog/2016/01/17/understanding-marshmallow-runtime-permission/ 主题 安卓开发   Andr ...

  6. 【XLL API 函数】xlGetBinaryName

    用于返回由 xlDefineBinaryName 函数定义的名称数据句柄.定义的名称和工作簿一起保存,我们可以在任意时间访问这个名称. 原型 Excel12(xlGetBinaryName, LPXL ...

  7. 【XLL 文档翻译】【第1部分】 Add-in 管理器 和 XLL 接口函数

    xlAddInManagerInfo/xlAddInManagerInfo12 在 Excel 会话中,每一次调用 Add-In 管理器时,系统会调用这两个函数.此函数可以在 Add-In 管理器中提 ...

  8. php继承、多态

    继承: 概念:子类可以继承父类的一切 特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类 方法重写:在子类里面对父类的方法进行重写. 重写:override 重载,编译多态:overlo ...

  9. Ajax与Jquery题库

    一.    填空题 1.在JQuery中被誉为工厂函数的是 $() . 2.在jQuery中需要选取<div>元素里所有<a>元素的选择器是 $("div a&quo ...

  10. JSP题库

    一.    填空题 一个完整的JSP页面是由普通的HTML标记.JSP指令标记.JSP动作标记.  变量声明 与方法声明  .程序片  .表达式  .   注释   7种要素构成. JSP页面的基本构 ...