博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android常用对话框封装
阅读量:5958 次
发布时间:2019-06-19

本文共 9082 字,大约阅读时间需要 30 分钟。

在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

    
    
    
    
    

5、数组变量array.xml

 
  
游泳
  
打篮球
  
登山
 

6、清单文件

    
        
            
                
                
            
        
     
    
 

完毕!!!!!

转载地址:http://frkax.baihongyu.com/

你可能感兴趣的文章