android 各种dialog

Android 各种dialog的使用

一、序言:

Android 开发中我们常常用到各种各样的dialog 在Android 中dialog 分为
在这里插入图片描述

普通对话框


列表对话框

 private void showDialog() {

        final String[] stars = new String[]{"笑着马力", "哟段东西", "无法无天"};
        new AlertDialog.Builder(this)
                .setTitle("请选择")
                .setItems(stars, new DialogInterface.OnClickListener() {  //setItems 是列表对话框的核心
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "" + stars[index], Toast.LENGTH_SHORT).show();
                    }
                }).show();
    }

单选对话框

这儿定义int index 的原因 在于 我们点击了某个具体的item 比如说点击了 “笑着马力”,它会自动选择 ,而我想要的效果是点击确定之后才进行选择 ,所以这儿通过索引赋值实现

	 int index = 0;

    private void showDialog() {

        final String[] stars = new String[]{"笑着马力", "哟段东西", "无法无天"};
        new AlertDialog.Builder(this)
                .setTitle("请选择")
                .setSingleChoiceItems(stars, 0, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        index = which;
                    }
                }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "" + stars[index], Toast.LENGTH_SHORT).show();
            }
        });
    }

多选对话框

private void showDialogDUo() {
        final String[] stars = new String[]{"笑着马力", "哟段东西", "无法无天"};
        final boolean[] checks = {true, false, true};
        new AlertDialog.Builder(this)
                .setTitle("请选择")
                .setMultiChoiceItems(stars, checks, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        checks[which] = isChecked;
                    }
                }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                for (int i = 0; i < checks.length; i++) {
                    String str = "您选择了...";
                    if (checks[i]) {
                        str += stars[i] + "";
                    }
                }
            }
        });
    }

等待对话框

private void showDialog() {

       //进度对话框,默认样式为转圈
       ProgressDialog dialog = new ProgressDialog(this);
       dialog.setTitle("加载中");
       dialog.setMessage("请等待");
       dialog.setCancelable(true); //默认回true 表示点击空白是否消失
       dialog.show();


   }

进度条对话框

这儿开启线程只是为了测试进度条的正常读条

private void showDialog() {

        //进度对话框,默认样式为转圈
        final ProgressDialog dialog = new ProgressDialog(this);
        dialog.setTitle("加载中");
        dialog.setMessage("请等待");
        //        设置进度模糊,就是人家看不到进度
        dialog.setIndeterminate(true);
        //        设置默认样式为水平
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setCancelable(true); //默认回true 表示点击空白是否消失
        dialog.show();
        new Thread(){
            @Override
            public void run() {
                super.run();
                for (int i = 0; i < 100; i++) {
                    dialog.setProgress(i);
                    try {
                        Thread.sleep(50);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                dialog.dismiss();
            }
        }.start();

    }

自定义dialog

稍微复杂一点
第一步、自定义MyDialog 继承自 Dialog 在构造方法中调用 setContentView(int layoutId)来设置自己想要的布局

public class MyDialog extends Dialog {


    public MyDialog(@NonNull final Context context) {
        super(context);
        //设置自己想要的布局
        setContentView(R.layout.my_dialog);
    }
}

第二步、实例化MyDialog 并显示

MyDialog myDialog = new MyDialog(this);
 myDialog.show();

这儿就已经显示出来了,但是显示出来的上面有一个白色的边框 那是 dialog 自带的主题样式,如果我们要使用自己的样式,就需要自己定义的样式,所以:

第三步、在资源文件styles 中定义自己的样式

<style name="myDialog">
		//设置dialog 没有白色的头部
        <item name="android:windowNoTitle">true</item>
        //设置dialog 自带的背景为透明
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

然后在MyDialog 的构造方法中引入风格

public class MyDialog extends Dialog {

    public MyDialog(@NonNull final Context context) {
        super(context,R.style.myDialog); //这儿引入主体
        setContentView(R.layout.my_dialog);
        Button mBtCancel=findViewById(R.id.bt_cancel);
        Button mBtSure=findViewById(R.id.bt_sure);
        mBtCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
        mBtSure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "确定", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

到这儿自定义dialog 就完成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值