zoukankan      html  css  js  c++  java
  • 对话框封装

    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
     *
     */publicclass DialogTool {
      
        /**
         * 创建普通对话框
         * 
         * @param ctx 上下文 必填
         * @param iconId 图标,如:R.drawable.icon 必填
         * @param title 标题 必填
         * @param message 显示内容 必填
         * @param btnName 按钮名称 必填
         * @param listener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
         * @return
         */
     publicstatic 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
         */
     publicstatic 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
         */
     publicstatic 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
         */
     publicstatic 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
     *
     */publicclass DialogActivity extends Activity {
     privateboolean[] flags=newboolean[]{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;
         
        privatestaticfinalint DIALOG_NORMAL=0; //普通对话框常量
        privatestaticfinalint DIALOG_LIST=1; //列表对话框常量
        privatestaticfinalint DIALOG_RADIO=2; //单选按钮对话框常量
        privatestaticfinalint DIALOG_CHECKBOX=3; //复选对话框常量     
        @Override
        publicvoid 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
          publicvoid 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
          publicvoid 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
          publicvoid onClick(DialogInterface dialog, int which) {
           String hoddy = getResources().getStringArray(
             R.array.hobby)[which];
           etText.setText("您选择了: " + hoddy);
           return;
          }
         },
            " 确 定 ",
               new android.content.DialogInterface.OnClickListener() {
          @Override
          publicvoid 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() {
          publicvoid 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
          publicvoid onClick(DialogInterface dialog, int which) {
           Toast.makeText(DialogActivity.this, "您按了确定按钮!", Toast.LENGTH_LONG).show();
           return;
          }
         }
           
       );
       break;
      }
         return dialog;
        }
         
        //按钮监听
        View.OnClickListener l = new View.OnClickListener() {
      @Override
      publicvoid 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>
  • 相关阅读:
    Yarn
    easyui
    eclipse-android
    js-小技能 そうですか
    sql server 时间处理
    上传文件
    时间 & 时间戳 之间 转换
    JDIC
    Spring 定时器
    映射
  • 原文地址:https://www.cnblogs.com/huangjialin/p/5706843.html
Copyright © 2011-2022 走看看