Android 6种 常用对话框Dialog封装

包括:

消息对话框、警示(含确认、取消)对话框、单选对话框、

复选对话框、列表对话框、自定义视图(含确认、取消)对话框

分别如下图所示:

  

  

封装后代码:

package dialog;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.view.View; /**
* 对话框封装类
*
* @author Z
*
*/
public class DialogTool
{ public static final int NO_ICON = -1; //无图标 /**
* 创建消息对话框
*
* @param context 上下文 必填
* @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填
* @param title 标题 必填
* @param message 显示内容 必填
* @param btnName 按钮名称 必填
* @param listener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @return
*/
public static Dialog createMessageDialog(Context context, String title, String message,
String btnName, OnClickListener listener, int iconId)
{
Dialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(context); if (iconId != NO_ICON)
{
//设置对话框图标
builder.setIcon(iconId);
}
//设置对话框标题
builder.setTitle(title);
//设置对话框消息
builder.setMessage(message);
//设置按钮
builder.setPositiveButton(btnName, listener);
//创建一个消息对话框
dialog = builder.create(); return dialog;
} /**
* 创建警示(确认、取消)对话框
*
* @param context 上下文 必填
* @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填
* @param title 标题 必填
* @param message 显示内容 必填
* @param positiveBtnName 确定按钮名称 必填
* @param negativeBtnName 取消按钮名称 必填
* @param positiveBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @return
*/
public static Dialog createConfirmDialog(Context context, String title, String message,
String positiveBtnName, String negativeBtnName, OnClickListener positiveBtnListener,
OnClickListener negativeBtnListener, int iconId)
{
Dialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(context); if (iconId != NO_ICON)
{
//设置对话框图标
builder.setIcon(iconId);
}
//设置对话框标题
builder.setTitle(title);
//设置对话框消息
builder.setMessage(message);
//设置确定按钮
builder.setPositiveButton(positiveBtnName, positiveBtnListener);
//设置取消按钮
builder.setNegativeButton(negativeBtnName, negativeBtnListener);
//创建一个消息对话框
dialog = builder.create(); return dialog;
} /**
* 创建单选对话框
*
* @param context 上下文 必填
* @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填
* @param title 标题 必填
* @param itemsString 选择项 必填
* @param positiveBtnName 确定按钮名称 必填
* @param negativeBtnName 取消按钮名称 必填
* @param positiveBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @param itemClickListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @return
*/
public static Dialog createSingleChoiceDialog(Context context, String title, String[] itemsString,
String positiveBtnName, String negativeBtnName, OnClickListener positiveBtnListener,
OnClickListener negativeBtnListener, OnClickListener itemClickListener, int iconId)
{
Dialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(context); if (iconId != NO_ICON)
{
//设置对话框图标
builder.setIcon(iconId);
}
//设置对话框标题
builder.setTitle(title);
//设置单选选项, 参数0: 默认第一个单选按钮被选中
builder.setSingleChoiceItems(itemsString, 0, itemClickListener);
//设置确定按钮
builder.setPositiveButton(positiveBtnName, positiveBtnListener);
//设置确定按钮
builder.setNegativeButton(negativeBtnName, negativeBtnListener);
//创建一个消息对话框
dialog = builder.create(); return dialog;
} /**
* 创建复选对话框
*
* @param context 上下文 必填
* @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填
* @param title 标题 必填
* @param itemsString 选择项 必填
* @param positiveBtnName 确定按钮名称 必填
* @param negativeBtnName 取消按钮名称 必填
* @param positiveBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @param itemClickListener 监听器,需实现android.content.DialogInterface.OnMultiChoiceClickListener;接口 必填
* @return
*/
public static Dialog createMultiChoiceDialog(Context context, String title, String[] itemsString,
String positiveBtnName, String negativeBtnName, OnClickListener positiveBtnListener,
OnClickListener negativeBtnListener, OnMultiChoiceClickListener itemClickListener, int iconId)
{
Dialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(context); if (iconId != NO_ICON)
{
//设置对话框图标
builder.setIcon(iconId);
}
//设置对话框标题
builder.setTitle(title);
//设置选项
builder.setMultiChoiceItems(itemsString, null, itemClickListener);
//设置确定按钮
builder.setPositiveButton(positiveBtnName, positiveBtnListener);
//设置确定按钮
builder.setNegativeButton(negativeBtnName, negativeBtnListener);
//创建一个消息对话框
dialog = builder.create(); return dialog;
} /**
* 创建列表对话框
*
* @param context 上下文 必填
* @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填
* @param title 标题 必填
* @param itemsString 列表项 必填
* @param negativeBtnName 取消按钮名称 必填
* @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @return
*/
public static Dialog createListDialog(Context context, String title, String[] itemsString,
String negativeBtnName, OnClickListener negativeBtnListener,
OnClickListener itemClickListener, int iconId)
{
Dialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(context); if (iconId != NO_ICON)
{
//设置对话框图标
builder.setIcon(iconId);
}
//设置对话框标题
builder.setTitle(title);
//设置列表选项
builder.setItems(itemsString, itemClickListener);
//设置确定按钮
builder.setNegativeButton(negativeBtnName, negativeBtnListener);
//创建一个消息对话框
dialog = builder.create(); return dialog;
} /**
* 创建自定义(含确认、取消)对话框
*
* @param context 上下文 必填
* @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填
* @param title 标题 必填
* @param positiveBtnName 确定按钮名称 必填
* @param negativeBtnName 取消按钮名称 必填
* @param positiveBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
* @param view 对话框中自定义视图 必填
* @return
*/
public static Dialog createRandomDialog(Context context, String title, String positiveBtnName,
String negativeBtnName, OnClickListener positiveBtnListener,
OnClickListener negativeBtnListener,View view, int iconId)
{
Dialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(context); if (iconId != NO_ICON)
{
//设置对话框图标
builder.setIcon(iconId);
}
//设置对话框标题
builder.setTitle(title);
builder.setView(view);
//设置确定按钮
builder.setPositiveButton(positiveBtnName, positiveBtnListener);
//设置确定按钮
builder.setNegativeButton(negativeBtnName, negativeBtnListener);
//创建一个消息对话框
dialog = builder.create(); return dialog;
} }

使用示例:

package com.example.encapsulation;

import java.util.ArrayList;

import dialog.DialogTool;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import application.CcsApplication; public class MainActivity extends Activity
{ Dialog dialog = null;
String[] contents = {"第一项", "第二项", "第三项", "第四项", "第五项"}; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setDialog(); CcsApplication ccsApplication = (CcsApplication)getApplicationContext();
Log.v("serverIp", ccsApplication.getServerIp());
} public void setDialog()
{ dialog = DialogTool.createMessageDialog(MainActivity.this, "标题", "内容",
"按钮", new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, DialogTool.NO_ICON);
dialog.show(); /*
dialog = DialogTool.createConfirmDialog(MainActivity.this, "标题", "内容", "确定按钮", "取消按钮",
new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, DialogTool.NO_ICON);
dialog.show();
*/ /*
dialog = DialogTool.createSingleChoiceDialog(MainActivity.this, "标题", contents, "确定按钮", "取消按钮",
new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, DialogTool.NO_ICON);
dialog.show();
*/ /*
dialog = DialogTool.createMultiChoiceDialog(MainActivity.this, "标题", contents, "确定按钮", "取消按钮",
new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, new OnMultiChoiceClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which, boolean isChecked)
{
// TODO Auto-generated method stub }
}, DialogTool.NO_ICON);
dialog.show();
*/ /*
dialog = DialogTool.createListDialog(MainActivity.this, "标题", contents, "取消按钮",
new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, DialogTool.NO_ICON);
dialog.show();
*/ /*
EditText editText = new EditText(MainActivity.this);
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(R.drawable.ic_launcher);
// View view = new View(MainActivity.this);
// ArrayList<View> childViews = new ArrayList<View>();
// childViews.add(imageView);
// childViews.add(editText);
// view.addChildrenForAccessibility(childViews); dialog = DialogTool.createRandomDialog(MainActivity.this, "标题", "确定按钮", "取消按钮",
new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub }
}, imageView, DialogTool.NO_ICON);
dialog.show();
*/
}
}

THE END


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

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

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

  2. android常用对话框封装

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

  3. Android自定义对话框(Dialog)位置,大小

    代码: package angel.devil; import android.app.Activity;import android.app.Dialog;import android.os.Bun ...

  4. Android 自定义对话框(Dialog)位置,大小

    代码: package angel.devil; import android.app.Activity; import android.app.Dialog; import android.os.B ...

  5. Android常用的Dialog对话框用法

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

  6. android 开发 对话框Dialog详解

    转载请注明出处:红亮的专栏:http://blog.csdn.net/liang5630/article/details/44098899 Android中的对话框形式大致可分为五种:分别是一般对话框 ...

  7. Android之对话框Dialog

    首先是确认对话框 //确认对话框 private void showLog1() { AlertDialog.Builder dialog = new AlertDialog.Builder(this ...

  8. Android 开发 对话框Dialog dismiss和hide方法的区别

    http://ningtukun.blog.163.com/blog/static/186541445201310151539697/ dismiss和hide方法都可以隐藏对话框,在需要的时候也可以 ...

  9. Android常用工具类封装---SharedPreferencesUtil

    SharedPreferences常用于保存一些简单的数据,如记录用户操作的配置等,使用简单. public class SharedPreferencesUtil {              // ...

随机推荐

  1. 怎么都没人提 google 加密搜索呢? google如何稳定打开

    1. 使用smarthosts提供的hosts文件 https://smarthosts.googlecode.com/svn/trunk/hosts2. 修改浏览器默认搜索引擎为 https://e ...

  2. linux关闭防火墙及selinux

    RHEL6.5 查看linux防护墙状态: service iptables status 关闭linux防火墙: 1)永久关闭,重启后生效 开启: chkconfig iptables on 关闭: ...

  3. python_Opencv_绘图

    opencv中也可以用一些函数来绘图 直接上源码,例子: # -*- coding: utf-8 -*- import numpy as np import cv2 # 黑色的图片 img=np.ze ...

  4. Demon_打砖块(建造一面墙,发射子弹打砖块)

    using UnityEngine; using System.Collections; public class CubeInit : MonoBehaviour { //砖块预设体 public ...

  5. 通过linux ssh远程登录另一台Linux,无需密码,用证书验证

    1.首先登入一台linux服务器,此台做为母机(即登入其他linux系统用这台做为入口):执行一行命令生成key文件:ssh-keygen -t rsa 2.在母机上,进入/roo/.ssh目录,找到 ...

  6. HDU H204 阿牛的EOF牛肉串

    阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  7. Install Oracle 10g on Red Hat Linux 5.3 Step by Step

    一.虚拟机配置 1. 虚拟机(VBox 4.3.12) 2. 配置虚拟机网卡网络.选择host-only.VirtualBox Host-Only Network网卡IP为设置为192.168.1.1 ...

  8. 关于BT下载的一点事儿

    之前一直对BT下载很的好奇,今天迅雷出现了一些问题,于是上网了解了一下BT下载的原理,果然还是有所收获的. 1.为什么BT下载用户越多下载,速度越快? 答:BT全名为BitTorrent. 在传统下载 ...

  9. VSS Get Latest Version 没有提示recursive的对话框解决

    今天按照VSS使用时,当“Get Latest version”时,不小心勾选了 “Only show this dialog when the Shift key is down”,因此当我再“Ge ...

  10. JDK动态代理实现简单AOP--转

    JDK 动态代理是 java 反射的一个重要特性.它在某种方面为 java 提供了动态性的特性,给应用带来了无限的空间.大名鼎鼎的 Hessian . Spring AOP 基于动态代理实现.本文将简 ...