android常用对话框封装
在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常用对话框封装的更多相关文章
- Android 常用对话框Dialog封装
Android 6种 常用对话框Dialog封装 包括: 消息对话框.警示(含确认.取消)对话框.单选对话框. 复选对话框.列表对话框.自定义视图(含确认.取消)对话框 分别如下图所示: ...
- (转载)Android常用的Dialog对话框用法
Android常用的Dialog对话框用法 Android的版本有很多通常开发的时候对话框大多数使用自定义或是 Google提供的V4, V7 兼容包来开发保持各个版本的对话框样式统一,所以这里使用的 ...
- Android常用酷炫控件(开源项目)github地址汇总
转载一个很牛逼的控件收集帖... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.Gri ...
- Android 常用炫酷控件(开源项目)git地址汇总
第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.P ...
- Android常用组件
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...
- Android常用组件【转】
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...
- android sqlite数据库封装 实现crud
android常用的数据保存方式有文件.sharepreferences.数据库.网络.contentprovider集中方式. 文件存储方式,经常使用在缓存整个页面数据,比如电子书内容.html数据 ...
- Android 常用 adb 命令总结
Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命 ...
- Android 常用代码大集合 [转]
[Android]调用字符串资源的几种方法 字符串资源的定义 文件路径:res/values/strings.xml 字符串资源定义示例: <?xml version="1.0&q ...
随机推荐
- 最简单粗暴的http文件列表
:]: port = ])else: port = 8000server_address = ('127.0.0.1', port)Handler.protocol_version = Protoco ...
- UVALive 4949 Risk(二分网络流、SAP)
n个区域,每个区域有我方军队a[i],a[i]==0的区域表示敌方区域,输入邻接矩阵.问经过一次调兵,使得我方边界处(与敌军区域邻接的区域)士兵的最小值最大.输出该最大值.调兵从i->j仅当a[ ...
- ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构
★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...
- 【processing】小代码
今天无意间发现的processing 很有兴趣 实现很简洁 void setup(){ } void draw(){ background(); && mouseY > heig ...
- linux 用户、用户组不能是全数字
今天封装命令行,需要创建用户.用户组,遇到下面问题,如图: 当时我和迷茫,为什么明明存在‘1111’这个用户组,但是却提示不存在呢??难道是linux的一个bug??? 接着我又试了几个: 发现规律了 ...
- 虚拟机中的centos在nat模式下连不上外网
这两天需要配置ftp服务器,可是虚拟机在nat模式下死活连不上外网,主机能够通过该ssh与虚拟机进行连接,虚拟机也能ping同一网段主机的IP地址,但就是ping不通外网, 开始我是这样配置的: 主机 ...
- Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
一.背景 最近在使用本地的tomcat进行运行项目的时候,发现出现了如题所述的问题.不知道什么原因,经过努力解决了该问题. 二.解决步骤 右击项目---选择属性---选择targeted runtim ...
- October 6th 2016 Week 41st Thursday
The outer world you see is a reflection of your inner self. 你拥有什么样的内心,你就会看到什么样的世界. And we eventually ...
- 矿场搭建(codevs 1996)
题目描述 Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使 ...
- PHP之MVC项目实战(二)
本文主要包括以下内容 GD库图片操作 利用GD库实现验证码 文件上传 缩略图 水印 GD库图片操作 <?php $img = imagecreatetruecolor(500, 300); // ...