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 ...
随机推荐
- 密码加SALT原理
原来这个技术叫SALT,以前我们经常这么用 ============================================================================== ...
- [转] This Android SDK requires Android Developer Toolkit version 23.0.0 or above
问题描述: This Android SDK requires Android Developer Toolkit version 23.0.0 or above. Current version ...
- iOS MD5加密实现方法
使用方法 先导入头文件 #import "MD5.h" //md5测试 NSString * md1= [MD5 md5:" ]; NSLog(@"32bit= ...
- php数据访问(修改)
修改:跟添加相似,需要显示默认值 先嵌入php代码 查询数据库 $code = $_GET["c"]; $db = new MySQLi("localhost" ...
- The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
出现这样的错误: error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your C ...
- 用 MyEclipse 开发 Spring 入门操作
何为Spring Spring框架是一个轻量级的控制反转(IOC)技术和面向切面编程(AOP)技术的容器框架,利用Spring框架可以实现对象的生命周期管理和分离应用系统中的业务逻辑组件和通用的技术服 ...
- September 12th 2016 Week 38th Monday
After all, tomorrow is another day. 不管怎样,明天又是全新的一天. Another day? Maybe. Remember when you reach for ...
- Linq查询
//Linq查询 List<A1> a1 = new List<A1>(); a1.Add(, Name = , Gender = true }); a1.Add(, Name ...
- 剑指Offer——网易笔试之解救小易
知识要点 首先介绍一下曼哈顿,曼哈顿是一个极为繁华的街区,高楼林立,街道纵横,从A地点到达B地点没有直线路径,必须绕道,而且至少要经C地点,走AC和 CB才能到达,由于街道很规则,ACB就像一个直角3 ...
- ios框架
iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设备的操作系统. 1,Core OS: 是用FreeBSD和Mach所改写的Darwin, 是开源 ...