各种Dialog,满足你的各种需求

来源:互联网 发布:雅思阅读书 知乎 编辑:程序博客网 时间:2024/04/29 13:47

在做项目中,dialog中是经常用的,今天介绍各种基本常用各种的dialog,基本满足你的需求。
dialog基本分为四种,但是今天只介绍AlertDialog和ProgressDialog:
1. 警告对话框 AlertDialog
2. 进度对话框 ProgressDialog
3. 日期选择对话框 DatePickerDialog
4. 时间选择对话框 TimePickerDialog
首先介绍下Dialog:
这里写图片描述

看完这个动态效果下面就是实现的方法:
MainActivity:

public class MainActivity extends Activity{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    /**第一个*/    private void button1Onclick(View view) {        new ActionSheetDialog(MainActivity.this)        .builder()        .setTitle("确定要清空消息列表?")        .setCancelable(false)//dialog弹出后会点击屏幕或物理返回键,dialog不消失        .setCanceledOnTouchOutside(false)//dialog弹出后会点击屏幕,dialog不消失;点击物理返回键dialog消失        .addSheetItem("清空消息列表", SheetItemColor.Red,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                    }                }).show();    }    /**第二个*/    private void button2Onclick(View view) {        new ActionSheetDialog(MainActivity.this)        .builder()        .setCancelable(false)        .setCanceledOnTouchOutside(false)        .addSheetItem("发送给好友", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                    }                })        .addSheetItem("转载到空间相册", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                    }                })        .addSheetItem("上传到群相册", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                    }                })        .addSheetItem("保存到手机", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                    }                })        .addSheetItem("收藏", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                    }                })        .addSheetItem("查看聊天图片", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                    }                }).show();    }    /**第三个*/    private void button3Onclick(View view) {        new ActionSheetDialog(MainActivity.this)        .builder()        .setTitle("请选择操作")        .setCancelable(false)        .setCanceledOnTouchOutside(false)        .addSheetItem("条目一", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目二", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目三", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目四", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目五", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目六", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目七", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目八", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目九", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                })        .addSheetItem("条目十", SheetItemColor.Blue,                new OnSheetItemClickListener() {                    @Override                    public void onClick(int which) {                        Toast.makeText(MainActivity.this,                                "item" + which, Toast.LENGTH_SHORT)                                .show();                    }                }).show();    }    /**第四个*/    private void button4Onclick(View view) {        new AlertDialogTest(MainActivity.this).builder().setTitle("退出当前账号")        .setMsg("再连续登陆15天,就可变身为QQ达人。退出QQ可能会使你现有记录归零,确定退出?")        .setPositiveButton("确认退出", new OnClickListener() {            @Override            public void onClick(View v) {            }        }).setNegativeButton("取消", new OnClickListener() {            @Override            public void onClick(View v) {            }        }).show();    }    /**第五个*/    private void button5Onclick(View view) {        new AlertDialogTest(MainActivity.this).builder()        .setMsg("你现在无法接收到新消息提醒。请到系统-设置-通知中开启消息提醒")        .setCancelable(false)        .setNegativeButton("确定", new OnClickListener() {            @Override            public void onClick(View v) {            }        }).show();    }}

ActionSheetDialog:

public class ActionSheetDialog {    private Context context;    private Dialog dialog;    private TextView txt_title;    private TextView txt_cancel;    private LinearLayout lLayout_content;    private ScrollView sLayout_content;    private boolean showTitle = false;    private List<SheetItem> sheetItemList;    private Display display;    public ActionSheetDialog(Context context) {        this.context = context;        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);        display = windowManager.getDefaultDisplay();    }    public ActionSheetDialog builder() {        // 得到Dialog布局        View view = LayoutInflater.from(context).inflate(R.layout.view_actionsheet, null);        //设置Dialog最小宽度为屏幕宽度        view.setMinimumWidth(display.getWidth());        //得到自定义Dialog布局中的控件        sLayout_content = (ScrollView) view.findViewById(R.id.sLayout_content);        lLayout_content = (LinearLayout) view.findViewById(R.id.lLayout_content);        txt_title = (TextView) view.findViewById(R.id.txt_title);        txt_cancel = (TextView) view.findViewById(R.id.txt_cancel);        txt_cancel.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                dialog.dismiss();            }        });        //定义Dialog布局和参数        dialog = new Dialog(context, R.style.ActionSheetDialogStyle); //引用dialog的style样式        dialog.setContentView(view); //为dialog加载布局        Window dialogWindow = dialog.getWindow();        dialogWindow.setGravity(Gravity.LEFT | Gravity.BOTTOM); //设置dialog的显示位置在屏幕底部        WindowManager.LayoutParams lp = dialogWindow.getAttributes();        lp.x = 50;        lp.y = 0;        dialogWindow.setAttributes(lp);        return this;    }    public ActionSheetDialog setTitle(String title) {        showTitle = true;        txt_title.setVisibility(View.VISIBLE);        txt_title.setText(title);        return this;    }    public ActionSheetDialog setCancelable(boolean cancel) {        dialog.setCancelable(cancel);        return this;    }    public ActionSheetDialog setCanceledOnTouchOutside(boolean cancel) {        dialog.setCanceledOnTouchOutside(cancel);        return this;    }    /**     *      * @param strItem     *            条目名称     * @param color     *            条目字体颜色,设置null则默认蓝色     * @param listener     * @return     */    public ActionSheetDialog addSheetItem(String strItem, SheetItemColor color, OnSheetItemClickListener listener) {        if (sheetItemList == null) {            sheetItemList = new ArrayList<SheetItem>();        }        sheetItemList.add(new SheetItem(strItem, color, listener));        return this;    }    public void show() {        setSheetItems();        dialog.show();    }    /** 设置条目布局 */    private void setSheetItems() {        if (sheetItemList == null || sheetItemList.size() <= 0) {            return;        }        int size = sheetItemList.size();        // TODO 高度控制,非最佳解决办法        // 添加条目过多的时候控制高度        if (size >= 7) {            LinearLayout.LayoutParams params = (LayoutParams) sLayout_content.getLayoutParams();            params.height = display.getHeight() / 2;            sLayout_content.setLayoutParams(params);        }        // 循环添加条目        for (int i = 1; i <= size; i++) {            final int index = i;            SheetItem sheetItem = sheetItemList.get(i - 1);            String strItem = sheetItem.name;            SheetItemColor color = sheetItem.color;            final OnSheetItemClickListener listener = (OnSheetItemClickListener) sheetItem.itemClickListener;            TextView textView = new TextView(context);            textView.setText(strItem);            textView.setTextSize(18);            textView.setGravity(Gravity.CENTER);            // 背景图片            if (size == 1) {                if (showTitle) {                    textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);                } else {                    textView.setBackgroundResource(R.drawable.actionsheet_single_selector);                }            } else {                if (showTitle) {                    if (i >= 1 && i < size) {                        textView.setBackgroundResource(R.drawable.actionsheet_middle_selector);                    } else {                        textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);                    }                } else {                    if (i == 1) {                        textView.setBackgroundResource(R.drawable.actionsheet_top_selector);                    } else if (i < size) {                        textView.setBackgroundResource(R.drawable.actionsheet_middle_selector);                    } else {                        textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);                    }                }            }            // 字体颜色            if (color == null) {                textView.setTextColor(Color.parseColor(SheetItemColor.Blue.getName()));            } else {                textView.setTextColor(Color.parseColor(color.getName()));            }            // 高度            float scale = context.getResources().getDisplayMetrics().density;            int height = (int) (45 * scale + 0.5f);            textView.setLayoutParams(new LinearLayout.LayoutParams(                    LayoutParams.MATCH_PARENT, height));            // 点击事件            textView.setOnClickListener(new OnClickListener() {                @Override                public void onClick(View v) {                    listener.onClick(index);                    dialog.dismiss();                }            });            lLayout_content.addView(textView);        }    }    public interface OnSheetItemClickListener {        void onClick(int which);    }    public class SheetItem {        String name;        OnSheetItemClickListener itemClickListener;        SheetItemColor color;        public SheetItem(String name, SheetItemColor color,                OnSheetItemClickListener itemClickListener) {            this.name = name;            this.color = color;            this.itemClickListener = itemClickListener;        }    }    public enum SheetItemColor {        Blue("#037BFF"), Red("#FD4A2E");        private String name;        private SheetItemColor(String name) {            this.name = name;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }    }}

AlertDialogTest:

public class AlertDialogTest {    private Context context;    private Dialog dialog;    private LinearLayout lLayout_bg;    private TextView txt_title;    private TextView txt_msg;    private Button btn_neg;    private Button btn_pos;    private ImageView img_line;    private Display display;    private boolean showTitle = false;    private boolean showMsg = false;    private boolean showPosBtn = false;    private boolean showNegBtn = false;    public AlertDialogTest(Context context) {        this.context = context;        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);        display = windowManager.getDefaultDisplay();    }    public AlertDialogTest builder() {        // 获取Dialog布局        View view = LayoutInflater.from(context).inflate(R.layout.view_alertdialog, null);        // 获取自定义Dialog布局中的控件        lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);        txt_title = (TextView) view.findViewById(R.id.txt_title);        txt_title.setVisibility(View.GONE);        txt_msg = (TextView) view.findViewById(R.id.txt_msg);        txt_msg.setVisibility(View.GONE);        btn_neg = (Button) view.findViewById(R.id.btn_neg);        btn_neg.setVisibility(View.GONE);        btn_pos = (Button) view.findViewById(R.id.btn_pos);        btn_pos.setVisibility(View.GONE);        img_line = (ImageView) view.findViewById(R.id.img_line);        img_line.setVisibility(View.GONE);        // 定义Dialog布局和参数        dialog = new Dialog(context, R.style.AlertDialogStyle);        dialog.setContentView(view);        // 调整dialog背景大小        lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display.getWidth() * 0.85), LayoutParams.WRAP_CONTENT));        return this;    }    public AlertDialogTest setTitle(String title) {        showTitle = true;        if ("".equals(title)) {            txt_title.setText("标题");        } else {            txt_title.setText(title);        }        return this;    }    public AlertDialogTest setMsg(String msg) {        showMsg = true;        if ("".equals(msg)) {            txt_msg.setText("内容");        } else {            txt_msg.setText(msg);        }        return this;    }    public AlertDialogTest setCancelable(boolean cancel) {        dialog.setCancelable(cancel);        return this;    }    public AlertDialogTest setPositiveButton(String text,            final OnClickListener listener) {        showPosBtn = true;        if ("".equals(text)) {            btn_pos.setText("确定");        } else {            btn_pos.setText(text);        }        btn_pos.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                listener.onClick(v);                dialog.dismiss();            }        });        return this;    }    public AlertDialogTest setNegativeButton(String text,            final OnClickListener listener) {        showNegBtn = true;        if ("".equals(text)) {            btn_neg.setText("取消");        } else {            btn_neg.setText(text);        }        btn_neg.setOnClickListener(new OnClickListener() {            @Override            public void %2                                             
0 0
原创粉丝点击