在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>
完毕!!!!!
来源:https://www.cnblogs.com/linjiqin/p/3147696.html