Android 三种对话框的实现

先简单介绍一下三种对话框的区别:

AlertDialog : Dialog继承Object,异步调用,不会阻塞UI线程。

Popupwindow:popupwindow是阻塞式对话框,dialog弹出时 后台还可以进行很多的操 作,而popupwindow弹出是 后台进程是阻塞的,要一直等待popupwindow 消失 才会进行操作。

BottomSheetDialog:一个自定义的从底部滑入的对话框。

一、AlertDialog 的使用:

setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setSingleChoiceItems :用来设置对话框显示一系列的单选框
setNeutralButton :普通按钮
setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框

  • 有多个按钮
    setPositiveButton 设置一个确定按钮
    setNegativeButton 设置一个取消按钮
    setNeutralButton 设置一个普通按钮
 AlertDialog alertDialog2 = new AlertDialog.Builder(this)
    .setTitle("这是标题")
    .setMessage("有多个按钮")
    .setIcon(R.mipmap.ic_launcher)
    .setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            Toast.makeText(AlertDialogActivity.this, "这是确定按钮", Toast.LENGTH_SHORT).show();
        }
    })

    .setNegativeButton("取消", new DialogInterface.OnClickListener() {//添加取消
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            Toast.makeText(AlertDialogActivity.this, "这是取消按钮", Toast.LENGTH_SHORT).show();
        }
    })
    .setNeutralButton("普通按钮", new DialogInterface.OnClickListener() {//添加普通按钮
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            Toast.makeText(AlertDialogActivity.this, "这是普通按钮按钮", Toast.LENGTH_SHORT).show();
        }

    })
   . create();
    alertDialog2.show();
image.png
  • 自定义View

    View view_dialog= View.inflate(this, R.layout.activity_alter_dialog_setview, null);
    AlertDialog dialog = new AlertDialog.Builder(this, R.style.TransparentDialog).create();
     dialog.show();
     // 设置点击可取消
     dialog.setCancelable(true);
     // 获取Window对象
      Window window = dialog.getWindow();
      // 设置对话框的大小
      android.view.WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
      DisplayMetrics dm = getResources().getDisplayMetrics(); //获取该弹窗的参数值
      int displayWidth = dm.widthPixels;
      int displayHeight = dm.heightPixels;
      layoutParams.width = (int) (displayWidth * 0.8);    //宽度设置为屏幕的0.8
      dialog.getWindow().setAttributes(layoutParams);
      window.setContentView(view_dialog);
    

    定义AlertDialog透明样式

    
    

    colors.xml

    #00000000
    
image.png
二、Popupwindow的使用:
    View inflate = LayoutInflater.from(context).inflate(R.layout.house_share_popupwindow, null);
    popupWindow = new PopupWindow(inflate, LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
    //设置点击弹窗外隐藏自身
    popupWindow.setFocusable(true);
    popupWindow.setOutsideTouchable(true);
    //设置位置
    popupWindow.showAtLocation(inflate, Gravity.BOTTOM, 0, 0);
    //设置PopupWindow的View点击事件
    TextView mTvWx = inflate.findViewById(R.id.tv_wx);
    TextView mTvPyq = inflate.findViewById(R.id.tv_pyq);

布局





    
    
    

image.png
三、BottomSheetDialog的使用

BottomSheetDialog的使用非常简单,几行代码就搞定!

 BottomSheetDialog bottomSheet = new BottomSheetDialog(this);//实例化
 bottomSheet.setCancelable(true);//设置点击外部是否可以取消
 bottomSheet.setContentView(R.layout.activity_layout_1);//设置对框框中的布局
 bottomSheet.show();//显示弹窗 }

带圆角的弹窗,首先要设置透明背景

BottomSheetDialog bottomSheet = new BottomSheetDialog(this,R.style.BottomSheetDialog);



colors.xml

  #00000000

在根布局的view上设置background

android:background="@drawable/shape_sheet_dialog_bg"

shape_sheet_dialog_bg





< /shape>

好了,三种对话框的简单使用就已经结束了,底部弹窗的方式我还是推荐第三种,毕竟简单方便。

你可能感兴趣的:(Android 三种对话框的实现)