先上图,不上图的程序员不是好程序员:









看了效果下面该看代码了

1、MainActivity的xml内代码

<?xml version="1.0" encoding="utf-8"?>    

2、MainActivity的java文件内代码即逻辑代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private AlertDialog.Builder builder;    private ProgressDialog progressDialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button btnTwo = findViewById(R.id.btn_two);        Button btnThree = findViewById(R.id.btn_three);        Button btnList = findViewById(R.id.btn_list);        Button btnMultiSelect = findViewById(R.id.btn_multi_select);        Button btnSingleSelect = findViewById(R.id.btn_single_select);        Button btnWaiting = findViewById(R.id.btn_waiting);        Button btnLoading = findViewById(R.id.btn_loading);        Button btnInput = findViewById(R.id.btn_input);        Button btnMyStyle = findViewById(R.id.btn_my_style);        btnTwo.setOnClickListener(this);        btnThree.setOnClickListener(this);        btnList.setOnClickListener(this);        btnMultiSelect.setOnClickListener(this);        btnSingleSelect.setOnClickListener(this);        btnWaiting.setOnClickListener(this);        btnLoading.setOnClickListener(this);        btnInput.setOnClickListener(this);        btnMyStyle.setOnClickListener(this);    }    @Override    public void onClick(View view) {        int id = view.getId();        switch (id) {            case R.id.btn_two://最普通dialog                showTwo();                break;            case R.id.btn_three://三个按钮dialog                showThree();                break;            case R.id.btn_list://列表样式dialog                showList();                break;            case R.id.btn_multi_select://多选dialog                showMultiSelect();                break;            case R.id.btn_single_select://单选dialog                showSingSelect();                break;            case R.id.btn_waiting://等待dialog                showWaiting();                break;            case R.id.btn_loading://加载进度dialog                showLoading();                break;            case R.id.btn_input://输入框dialog                showInput();                break;            case R.id.btn_my_style://自定义dialog                showMyStyle();                break;            default:        }    }    /**     * 两个按钮的 dialog     */    private void showTwo() {        builder = new AlertDialog.Builder(this).setIcon(R.mipmap.ic_launcher).setTitle("最普通dialog")                .setMessage("我是最简单的dialog").setPositiveButton("确定(积极)", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        //ToDo: 你想做的事情                        Toast.makeText(MainActivity.this, "确定按钮", Toast.LENGTH_LONG).show();                    }                }).setNegativeButton("取消(消极)", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        //ToDo: 你想做的事情                        Toast.makeText(MainActivity.this, "关闭按钮", Toast.LENGTH_LONG).show();                        dialogInterface.dismiss();                    }                });        builder.create().show();    }    /**     * 三个按钮的 dialog     */    private void showThree() {        builder = new AlertDialog.Builder(this).setIcon(R.mipmap.ic_launcher).setTitle("三个按钮dialog")                .setMessage("三个按钮dialog").setPositiveButton("确定(积极)", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        //ToDo: 你想做的事情                        Toast.makeText(MainActivity.this, "确定按钮", Toast.LENGTH_LONG).show();                    }                }).setNeutralButton("你猜(中立)", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        Toast.makeText(MainActivity.this, "你猜按钮", Toast.LENGTH_LONG).show();                    }                }).setNegativeButton("取消(消极)", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        //ToDo: 你想做的事情                        Toast.makeText(MainActivity.this, "关闭按钮", Toast.LENGTH_LONG).show();                        dialogInterface.dismiss();                    }                });        builder.create().show();    }    /**     * 列表 dialog     */    private void showList() {        final String[] items = {"item 1", "item 2", "item 3", "item 4", "item 5", "item 6"};        builder = new AlertDialog.Builder(this).setIcon(R.mipmap.ic_launcher)                .setTitle("列表dialog")                .setItems(items, new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        Toast.makeText(MainActivity.this, "你点击的内容为: " + items[i], Toast.LENGTH_LONG).show();                    }                });        builder.create().show();    }    /**     * 多选 dialog     */    private void showMultiSelect() {        final List choice = new ArrayList<>();        final String[] items = {"多选1", "多选2", "多选3", "多选4", "多选5", "多选6"};        //默认都未选中        boolean[] isSelect = {false, false, false, false, false, false};        builder = new AlertDialog.Builder(this).setIcon(R.mipmap.ic_launcher)                .setTitle("多选dialog")                .setMultiChoiceItems(items, isSelect, new DialogInterface.OnMultiChoiceClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i, boolean b) {                        if (b) {                            choice.add(i);                        } else {                            choice.remove(i);                        }                    }                }).setPositiveButton("确定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        StringBuilder str = new StringBuilder();                        for (int j = 0; j < choice.size(); j++) {                            str.append(items[choice.get(j)]);                        }                        Toast.makeText(MainActivity.this, "你选择了" + str, Toast.LENGTH_LONG).show();                    }                });        builder.create().show();    }    private int choice;    /**     * 单选 dialog     */    private void showSingSelect() {        //默认选中第一个        final String[] items = {"单选1", "单选2", "单选3", "单选4", "单选5", "单选6"};        choice = -1;        builder = new AlertDialog.Builder(this).setIcon(R.mipmap.ic_launcher).setTitle("单选列表")                .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        choice = i;                    }                }).setPositiveButton("确定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        if (choice != -1) {                            Toast.makeText(MainActivity.this, "你选择了" + items[choice], Toast.LENGTH_LONG).show();                        }                    }                });        builder.create().show();    }    /**     * 圆圈加载进度的 dialog     */    private void showWaiting() {        progressDialog = new ProgressDialog(this);        progressDialog.setIcon(R.mipmap.ic_launcher);        progressDialog.setTitle("加载dialog");        progressDialog.setMessage("加载中...");        progressDialog.setIndeterminate(true);// 是否形成一个加载动画  true表示不明确加载进度形成转圈动画  false 表示明确加载进度        progressDialog.setCancelable(false);//点击返回键或者dialog四周是否关闭dialog  true表示可以关闭 false表示不可关闭        progressDialog.show();    }    /**     * 带有进度的 dialog     */    private void showLoading() {        final int MAX_VALUE = 100;        progressDialog = new ProgressDialog(this);        progressDialog.setProgress(0);        progressDialog.setTitle("带有加载进度dialog");        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        progressDialog.setMax(MAX_VALUE);        progressDialog.show();        new Thread(new Runnable() {            @Override            public void run() {                int progress = 0;                while (progress < MAX_VALUE) {                    try {                        Thread.sleep(100);                        progress++;                        progressDialog.setProgress(progress);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }                //加载完毕自动关闭dialog                progressDialog.cancel();            }        }).start();    }    /**     * 一个输入框的 dialog     */    private void showInput() {        final EditText editText = new EditText(this);        builder = new AlertDialog.Builder(this).setTitle("输入框dialog").setView(editText)                .setPositiveButton("读取输入框内容", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        Toast.makeText(MainActivity.this, "输入内容为:" + editText.getText().toString()                                , Toast.LENGTH_LONG).show();                    }                });        builder.create().show();    }    /**     * 原生自定义 dialog     */    private void showMyStyle() {        @SuppressLint("InflateParams") View view = LayoutInflater.from(this).inflate(R.layout.layout_test, null);        final EditText etUsername = view.findViewById(R.id.et_username);        final EditText etPassword = view.findViewById(R.id.et_password);        builder = new AlertDialog.Builder(this).setView(view).setTitle("自定义dialog——登录").setIcon(R.mipmap.ic_launcher)                .setPositiveButton("登录", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        Toast.makeText(MainActivity.this, "账号: " + etUsername.getText().toString() + "  密码: " + etPassword.getText().toString()                                , Toast.LENGTH_LONG).show();                    }                });        builder.create().show();    }}

3、介绍一些好用的第三方dialog库

1、material-dialogs
2、FlycoDialog_Master

更多相关文章

  1. Android(安卓)AlertDialog对话框详解及实例
  2. Android(安卓)APP 引导页实现-第一次应用进入时加载
  3. Android(安卓)Webview加载www.youtube.com的问题
  4. Android(安卓)各控件的使用 - 按钮(Button)
  5. cordova 常用监听事件
  6. Android——公共XML资源的使用
  7. 添加并客制化Statusbar中图标显示顺序
  8. android对话框之AlertDialog.Builder类的setSingleChoiceItems
  9. 2015最新的 导航条《actionbar》给大家分享。

随机推荐

  1. android启动:app_process实现恢复出厂设置
  2. Android自定义对话框
  3. Android Log Analysis bugreport
  4. Android sqlite3 数据库批量操作
  5. Android跟踪NDK崩溃信息
  6. Android注解框架 AndroidAnnotations
  7. android view获取焦点且有黄色高亮效果
  8. android 播放铃声
  9. android 线程睡几秒
  10. android之软键盘管理