Android系统总结之---AlertDialog笔记

来源:互联网 发布:owncloud config.php 编辑:程序博客网 时间:2024/05/16 06:47

系统的八大对话框

对话框使用注意事项:

  • 修改对话框宽高的时候,要在dialog对话框show方法之后使用
  • 修改dialog样式的方法
    1. 在style中写dialog的样式,一般如下:通过下面属性来改变dialog的背景色等
 <style name="dialog" parent="@android:style/Theme.Dialog">        <item name="android:windowFrame">@null</item><!--边框-->        <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->        <item name="android:windowIsTranslucent">true</item><!--半透明-->        <item name="android:windowNoTitle">true</item><!--无标题-->        <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->        <item name="android:backgroundDimEnabled">true</item><!--模糊-->        <item name="android:windowFullscreen">true</item>    </style>
  1. 在创建对话框的时候引用该样式。
   final AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog);

1. 一般对话框

效果图

这里写图片描述

  /**     * 一般对话框     */    private void showNormalDialog() {    /* @setIcon 设置对话框图标     * @setTitle 设置对话框标题     * @setMessage 设置对话框消息提示     * setXXX方法返回Dialog对象,因此可以链式设置属性     */        final AlertDialog.Builder normalDialog =                new AlertDialog.Builder(MainActivity.this);        normalDialog.setIcon(R.mipmap.ic_launcher);        normalDialog.setTitle("我是一个普通Dialog");        normalDialog.setMessage("你要点击哪一个按钮呢?");        normalDialog.setPositiveButton("确定",                new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        Toast.makeText(getApplicationContext(), "确定", Toast.LENGTH_SHORT).show();                    }                });        normalDialog.setNegativeButton("关闭",                new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        Toast.makeText(getApplicationContext(), "关闭", Toast.LENGTH_SHORT).show();                    }                });        // 显示        normalDialog.show();    }

2. 带有三个按钮对话框

效果图
这里写图片描述

 /**     * 三个按钮对话框     * setNeutralButton     */    public void showMultiBtnDialog() {        AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setTitle("我是一个普通Dialog").setMessage("你要点击哪一个按钮呢?");        builder.setIcon(R.mipmap.ic_launcher);        builder.setNegativeButton("按钮1", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Toast.makeText(getApplicationContext(), "按钮1", Toast.LENGTH_SHORT).show();            }        });        builder.setPositiveButton("按钮2", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Toast.makeText(getApplicationContext(), "按钮2", Toast.LENGTH_SHORT).show();            }        });        builder.setNeutralButton("按钮3", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Toast.makeText(getApplicationContext(), "按钮3", Toast.LENGTH_SHORT).show();            }        });        builder.create().show();    }

3. 列表对话框

效果图
这里写图片描述

 /**     * 列表对话框     */    private void showListDialog() {        final String[] items = {"我是1", "我是2", "我是3", "我是4", "我是1", "我是2", "我是3", "我是4", "我是1", "我是2", "我是3", "我是4"};        AlertDialog.Builder listDialog =                new AlertDialog.Builder(MainActivity.this);        listDialog.setTitle("我是一个列表Dialog");        listDialog.setItems(items, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                // which 下标从0开始                // ...To-do                Toast.makeText(MainActivity.this,                        "你点击了" + items[which],                        Toast.LENGTH_SHORT).show();            }        });        AlertDialog dialog = listDialog.create();        dialog.show();        //以下这些代码时用来设置dialog的高度,一定要放在show方法之后。        WindowManager.LayoutParams attributes =                dialog.getWindow().getAttributes();        attributes.height = 400;        dialog.getWindow().setAttributes(attributes);    }

4. 单选对话框

这里写图片描述

 /**     * 单选对话框     */    int yourChoice;    private void showSingleChoiceDialog() {        final String[] items = {"我是1", "我是2", "我是3", "我是4"};        yourChoice = -1;        AlertDialog.Builder singleDialog = new AlertDialog.Builder(this);        singleDialog.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                yourChoice = which;            }        });        singleDialog.setNegativeButton("确认", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                if (yourChoice != -1) {                    Toast.makeText(MainActivity.this,                            "你选择了" + items[yourChoice],                            Toast.LENGTH_SHORT).show();                }            }        });        singleDialog.show();    }

5. 多选对话框

这里写图片描述

 /**     * 多选对话框     */    ArrayList<Integer> yourChoices = new ArrayList<>();    private void showMultiChoiceDialog() {        yourChoices.clear();        final String[] items = {"我是1", "我是2", "我是3", "我是4"};        AlertDialog.Builder multiChoiceDialog = new AlertDialog.Builder(this);        // 设置默认选中的选项,全为false默认均未选中        final boolean initChoiceSets[] = {false, false, false, false};        multiChoiceDialog.setTitle("我是一个多选Dialog");        multiChoiceDialog.setMultiChoiceItems(items, initChoiceSets, new DialogInterface.OnMultiChoiceClickListener() {            @Override            public void onClick(DialogInterface dialog, int which, boolean isChecked) {                if (isChecked) {                    yourChoices.add(which);                } else {                    yourChoices.remove(which);                }            }        });        multiChoiceDialog.setPositiveButton("确定",                new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        int size = yourChoices.size();                        String str = "";                        for (int i = 0; i < size; i++) {                            str += items[yourChoices.get(i)] + " ";                        }                        Toast.makeText(MainActivity.this,                                "你选中了" + str,                                Toast.LENGTH_SHORT).show();                    }                });        multiChoiceDialog.show();    }

6. 等待对话框

这里写图片描述

 /**     * 等待对话框     */    private void showWaitingDialog() {         /* 等待Dialog具有屏蔽其他控件的交互能力   * @setCancelable 为使屏幕不可点击,设置为不可取消(false)   * 下载等事件完成后,主动调用函数关闭该Dialog   */        final ProgressDialog waitingDialog =                new ProgressDialog(MainActivity.this);        waitingDialog.setTitle("我是一个等待Dialog");        waitingDialog.setMessage("等待中...");        waitingDialog.setIndeterminate(true);        waitingDialog.setCancelable(false);        waitingDialog.show();        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                waitingDialog.dismiss();                Toast.makeText(MainActivity.this,                        "加载数据完成",                        Toast.LENGTH_SHORT).show();            }        }, 2000);    }

7. 进度条对话框

这里写图片描述

    /**     * 进度条对话框     */    private void showProgressDialog() {  /* @setProgress 设置初始进度   * @setProgressStyle 设置样式(水平进度条)   * @setMax 设置进度最大值   */        final int MAX_PROGRESS = 100;        final ProgressDialog progressDialog =                new ProgressDialog(MainActivity.this);        progressDialog.setProgress(0);        progressDialog.setTitle("我是一个进度条Dialog");        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        progressDialog.setMax(MAX_PROGRESS);        progressDialog.show();  /* 模拟进度增加的过程   * 新开一个线程,每个100ms,进度增加1   */        new Thread(new Runnable() {            @Override            public void run() {                int progress = 0;                while (progress < MAX_PROGRESS) {                    try {                        Thread.sleep(50);                        progress++;                        progressDialog.setProgress(progress);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }                // 进度达到最大值后,窗口消失                progressDialog.cancel();            }        }).start();    }

8. 编辑对话框

这里写图片描述

/**     * 编辑对话框     *     * @setView 装入一个EditView     */    private void showInputDialog() {        final EditText et = new EditText(this);        AlertDialog.Builder inputDialog = new AlertDialog.Builder(this);        inputDialog.setTitle("我是可以输入的对话框");        inputDialog.setView(et);        inputDialog.setNegativeButton("确认", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Toast.makeText(getApplicationContext(), et.getText().toString(), Toast.LENGTH_LONG).show();            }        });        inputDialog.show();    }

9. 常用自定义对话框

这里写图片描述

 /**     * 常用自定义对话框1     */    private void myDialogStyle1() {        final AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog);        View view = View.inflate(this, R.layout.dialog_my1, null);        builder.setView(view);        view.findViewById(R.id.dialog_twobtn_btn_left).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this,                        "左边",                        Toast.LENGTH_SHORT).show();            }        });        view.findViewById(R.id.dialog_twobtn_btn_right).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this,                        "右边",                        Toast.LENGTH_SHORT).show();            }        });        builder.show();    }

style样式:

    <style name="dialog" parent="@android:style/Theme.Dialog">        <item name="android:windowFrame">@null</item><!--边框-->        <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->        <item name="android:windowIsTranslucent">true</item><!--半透明-->        <item name="android:windowNoTitle">true</item><!--无标题-->        <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->        <item name="android:backgroundDimEnabled">true</item><!--模糊-->        <item name="android:windowFullscreen">true</item>    </style>

10. 底部的对话框

这里写图片描述

 /**     * 常用自定义对话框2 居于底部的对话框     */    private void myDialogStyle2() {        final AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog);        View view = View.inflate(this, R.layout.dialog_my2, null);        builder.setView(view);        AlertDialog dialog = builder.create();        dialog.show();        Window window = dialog.getWindow();        WindowManager.LayoutParams lp = window.getAttributes();//         lp.width = 1080;        lp.width = WindowManager.LayoutParams.MATCH_PARENT;        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;        lp.gravity = Gravity.BOTTOM;        window.setAttributes(lp);//        window.setBackgroundDrawableResource(android.R.color.transparent);      }

11. 全屏对话框

这里写图片描述

  /**     * 全屏对话框     */    private void myDialogStyle3() {        final AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog2);        View view = View.inflate(this, R.layout.dialog_my3, null);        builder.setView(view);        AlertDialog dialog = builder.create();        dialog.show();        Window window = dialog.getWindow();        WindowManager.LayoutParams lp = window.getAttributes();        lp.width = WindowManager.LayoutParams.MATCH_PARENT;        lp.height = WindowManager.LayoutParams.MATCH_PARENT;        window.setAttributes(lp);    }

style样式:

 <style name="dialog2" parent="@android:style/Theme.Dialog">        <item name="android:windowFrame">@null</item><!--边框-->        <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->        <item name="android:windowIsTranslucent">false</item><!--半透明-->        <item name="android:windowNoTitle">true</item><!--无标题-->        <item name="android:windowBackground">@android:color/white</item><!--背景透明-->        <item name="android:backgroundDimEnabled">false</item><!--模糊-->        <item name="android:windowFullscreen">true</item>

源码地址:

链接:http://pan.baidu.com/s/1jI0Qfqu 密码:7y94

0 0
原创粉丝点击