Android 6种 常用对话框Dialog封装

包括:

消息对话框、警示(含确认、取消)对话框、单选对话框、

复选对话框、列表对话框、自定义视图(含确认、取消)对话框

分别如下图所示:

封装后代码:

package dialog;import android.app.AlertDialog;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface.OnClickListener;import android.content.DialogInterface.OnMultiChoiceClickListener;import android.view.View;/** * 对话框封装类 *  * @author Z * */public class DialogTool{        public static final int NO_ICON = -1;  //无图标                /**     * 创建消息对话框     *      * @param context 上下文 必填     * @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填     * @param title 标题 必填     * @param message 显示内容 必填     * @param btnName 按钮名称 必填     * @param listener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @return     */    public static Dialog createMessageDialog(Context context, String title, String message,            String btnName, OnClickListener listener, int iconId)    {        Dialog dialog = null;        AlertDialog.Builder builder = new AlertDialog.Builder(context);                if (iconId != NO_ICON)        {            //设置对话框图标            builder.setIcon(iconId);        }        //设置对话框标题        builder.setTitle(title);        //设置对话框消息        builder.setMessage(message);        //设置按钮        builder.setPositiveButton(btnName, listener);        //创建一个消息对话框        dialog = builder.create();                return dialog;    }                /**     * 创建警示(确认、取消)对话框     *      * @param context 上下文 必填     * @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填     * @param title 标题 必填     * @param message 显示内容 必填     * @param positiveBtnName 确定按钮名称 必填     * @param negativeBtnName 取消按钮名称 必填     * @param positiveBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @return     */    public static Dialog createConfirmDialog(Context context, String title, String message,            String positiveBtnName, String negativeBtnName, OnClickListener positiveBtnListener,             OnClickListener negativeBtnListener, int iconId)    {        Dialog dialog = null;        AlertDialog.Builder builder = new AlertDialog.Builder(context);                if (iconId != NO_ICON)        {            //设置对话框图标            builder.setIcon(iconId);        }        //设置对话框标题        builder.setTitle(title);        //设置对话框消息        builder.setMessage(message);        //设置确定按钮        builder.setPositiveButton(positiveBtnName, positiveBtnListener);        //设置取消按钮        builder.setNegativeButton(negativeBtnName, negativeBtnListener);        //创建一个消息对话框        dialog = builder.create();                return dialog;    }                /**     * 创建单选对话框     *      * @param context 上下文 必填     * @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填     * @param title 标题 必填     * @param itemsString 选择项 必填     * @param positiveBtnName 确定按钮名称 必填     * @param negativeBtnName 取消按钮名称 必填     * @param positiveBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @param itemClickListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @return     */    public static Dialog createSingleChoiceDialog(Context context, String title, String[] itemsString,            String positiveBtnName, String negativeBtnName, OnClickListener positiveBtnListener,             OnClickListener negativeBtnListener, OnClickListener itemClickListener, int iconId)    {        Dialog dialog = null;        AlertDialog.Builder builder = new AlertDialog.Builder(context);                if (iconId != NO_ICON)        {            //设置对话框图标            builder.setIcon(iconId);        }        //设置对话框标题        builder.setTitle(title);        //设置单选选项, 参数0: 默认第一个单选按钮被选中        builder.setSingleChoiceItems(itemsString, 0, itemClickListener);        //设置确定按钮        builder.setPositiveButton(positiveBtnName, positiveBtnListener);        //设置确定按钮        builder.setNegativeButton(negativeBtnName, negativeBtnListener);        //创建一个消息对话框        dialog = builder.create();                return dialog;    }                /**     * 创建复选对话框     *      * @param context 上下文 必填     * @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填     * @param title 标题 必填     * @param itemsString 选择项 必填     * @param positiveBtnName 确定按钮名称 必填     * @param negativeBtnName 取消按钮名称 必填     * @param positiveBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @param itemClickListener 监听器,需实现android.content.DialogInterface.OnMultiChoiceClickListener;接口 必填     * @return     */    public static Dialog createMultiChoiceDialog(Context context, String title, String[] itemsString,            String positiveBtnName, String negativeBtnName, OnClickListener positiveBtnListener,             OnClickListener negativeBtnListener, OnMultiChoiceClickListener itemClickListener, int iconId)    {        Dialog dialog = null;        AlertDialog.Builder builder = new AlertDialog.Builder(context);                if (iconId != NO_ICON)        {            //设置对话框图标            builder.setIcon(iconId);        }        //设置对话框标题        builder.setTitle(title);        //设置选项        builder.setMultiChoiceItems(itemsString, null, itemClickListener);        //设置确定按钮        builder.setPositiveButton(positiveBtnName, positiveBtnListener);        //设置确定按钮        builder.setNegativeButton(negativeBtnName, negativeBtnListener);        //创建一个消息对话框        dialog = builder.create();                return dialog;    }                /**     * 创建列表对话框     *      * @param context 上下文 必填     * @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填     * @param title 标题 必填     * @param itemsString 列表项 必填     * @param negativeBtnName 取消按钮名称 必填     * @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @return     */    public static Dialog createListDialog(Context context, String title, String[] itemsString,             String negativeBtnName, OnClickListener negativeBtnListener,            OnClickListener itemClickListener, int iconId)    {        Dialog dialog = null;        AlertDialog.Builder builder = new AlertDialog.Builder(context);                if (iconId != NO_ICON)        {            //设置对话框图标            builder.setIcon(iconId);        }        //设置对话框标题        builder.setTitle(title);        //设置列表选项        builder.setItems(itemsString, itemClickListener);        //设置确定按钮        builder.setNegativeButton(negativeBtnName, negativeBtnListener);        //创建一个消息对话框        dialog = builder.create();                return dialog;    }            /**     * 创建自定义(含确认、取消)对话框     *      * @param context 上下文 必填     * @param iconId 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填     * @param title 标题 必填     * @param positiveBtnName 确定按钮名称 必填     * @param negativeBtnName 取消按钮名称 必填     * @param positiveBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @param negativeBtnListener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填     * @param view 对话框中自定义视图 必填     * @return     */    public static Dialog createRandomDialog(Context context, String title, String positiveBtnName,            String negativeBtnName, OnClickListener positiveBtnListener,             OnClickListener negativeBtnListener,View view, int iconId)    {        Dialog dialog = null;        AlertDialog.Builder builder = new AlertDialog.Builder(context);                if (iconId != NO_ICON)        {            //设置对话框图标            builder.setIcon(iconId);        }        //设置对话框标题        builder.setTitle(title);        builder.setView(view);        //设置确定按钮        builder.setPositiveButton(positiveBtnName, positiveBtnListener);        //设置确定按钮        builder.setNegativeButton(negativeBtnName, negativeBtnListener);        //创建一个消息对话框        dialog = builder.create();                return dialog;    }    }


使用示例:

package com.example.encapsulation;import java.util.ArrayList;import dialog.DialogTool;import android.app.Activity;import android.app.Dialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.content.DialogInterface.OnMultiChoiceClickListener;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.EditText;import android.widget.ImageView;import application.CcsApplication;public class MainActivity extends Activity{    Dialog dialog = null;    String[] contents = {"第一项", "第二项", "第三项", "第四项", "第五项"};        @Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        setDialog();                CcsApplication ccsApplication = (CcsApplication)getApplicationContext();        Log.v("serverIp", ccsApplication.getServerIp());    }        public void setDialog()    {                dialog = DialogTool.createMessageDialog(MainActivity.this, "标题", "内容",                "按钮", new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, DialogTool.NO_ICON);        dialog.show();                /*                dialog = DialogTool.createConfirmDialog(MainActivity.this, "标题", "内容", "确定按钮", "取消按钮",                new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, DialogTool.NO_ICON);        dialog.show();*/                /*                dialog = DialogTool.createSingleChoiceDialog(MainActivity.this, "标题", contents, "确定按钮", "取消按钮",                new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, DialogTool.NO_ICON);        dialog.show();*/        /*                dialog = DialogTool.createMultiChoiceDialog(MainActivity.this, "标题", contents, "确定按钮", "取消按钮",                new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, new OnMultiChoiceClickListener()                {                                        @Override                    public void onClick(DialogInterface dialog, int which, boolean isChecked)                    {                        // TODO Auto-generated method stub                                            }                }, DialogTool.NO_ICON);        dialog.show();*/        /*                dialog = DialogTool.createListDialog(MainActivity.this, "标题", contents, "取消按钮",                new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, DialogTool.NO_ICON);        dialog.show();*/                /*                EditText editText = new EditText(MainActivity.this);        ImageView imageView = new ImageView(MainActivity.this);        imageView.setImageResource(R.drawable.ic_launcher);//        View view = new View(MainActivity.this);//        ArrayList<View> childViews = new ArrayList<View>();//        childViews.add(imageView);//        childViews.add(editText);//        view.addChildrenForAccessibility(childViews);                dialog = DialogTool.createRandomDialog(MainActivity.this, "标题", "确定按钮", "取消按钮",                new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, new OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        // TODO Auto-generated method stub                    }                }, imageView, DialogTool.NO_ICON);        dialog.show();*/    }}

THE END


更多相关文章

  1. 在Android中自定义IOS风格的按钮
  2. Androidの自定义对话框AlertDialog(一)
  3. 【ImageView】图片自适应及android:scaleType属性
  4. Android手机开发 控件 TextView文字居中
  5. Android(安卓)关闭/打开多点触控 (Android中设置不能同时点击2个v
  6. Android(安卓)属性总结
  7. Android(安卓)自定义TextView去除paddingTop和paddingBottom
  8. android ListView中添加ImageButton按钮并绑定事件
  9. android添加广告之--有米

随机推荐

  1. redis之Sentinel
  2. Java线程之线程的交互
  3. clone 方法是如何工作的
  4. redis之发布与订阅
  5. Java线程之线程的调度-休眠
  6. Java 的版本历史与特性
  7. Java线程之线程的调度-优先级
  8. Java 中关于 String 类型的 10 个问题
  9. 使用 ThreadLocal 变量的时机和方法
  10. JDK1.8 ConcurrentHashMap的size