浅谈自定义不规则背景的对话框,透明背景的对话框dialog定义过程中的注意事项

开发中我们会遇到各种各样的布局,特别是漂亮的dialog,当然这些并不一定是规则的,那我们该怎么定义不规则的dialog呢?

先来看看效果图:

浅谈自定义不规则背景的对话框,透明背景的对话框dialog定义过程中的注意事项_第1张图片


图片分离:

浅谈自定义不规则背景的对话框,透明背景的对话框dialog定义过程中的注意事项_第2张图片

浅谈自定义不规则背景的对话框,透明背景的对话框dialog定义过程中的注意事项_第3张图片      

 

没错就是这三张图片。

现在我们来看看怎么实现这个dialog

需要注意的是:

1、必须是dialog这个类,其他子类无法实现,因为alertdialog之类的有默认的背景

2、不规则,其实是规则的,因为有些背景我们设置为了透明


布局:




    

        

        

        

布局预览:

浅谈自定义不规则背景的对话框,透明背景的对话框dialog定义过程中的注意事项_第4张图片


第二步:我们需要自定义一个dialog的样式:

    
自定义透明的背景:

    

第三步:实现dialog

 private void selectUpdate(final String url) {
        final Dialog builder = new Dialog(this, R.style.update_dialog);
        View view = UIUtil.inflateView(R.layout.alert_update_welcome);//加载自己的布局
        Button noUpdateBtn = (Button) view.findViewById(R.id.alert_no_update_btn);
        Button updateBtn = (Button) view.findViewById(R.id.alert_update_btn);
        noUpdateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //2、如果选择不更新,则直接判断是否是第一次进入
                builder.dismiss();
                isFirstIn();
            }
        });
        updateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //1、如果选择更新直接进行下载安装新版本软件
                downloadApk(url);
                //2、判断是否下载成功
                boolean downloadSuccess = isDownloadSuccess();
                if (isDownloadSuccess()) {
                    installApk();
                } else {
                    //下载失败
                    downloadError();
                }
            }
        });
        builder.setContentView(view);//这里还可以指定布局参数
        builder.setCancelable(false);// 不可以用“返回键”取消
        builder.show();
    }
当然你也直接可以继承 dialog这个类,具体自定义就不用多说了。


当然还可以指定对话框的透明度,这是针对整个dialog而言的。

        Window window = alertDialog.getWindow();
        WindowManager.LayoutParams lp = window.getAttributes();
        lp.alpha = 0.8f;
        window.setAttributes(lp);

学会这些你可以制定出各种各样的dialog。

你可能感兴趣的:(android,Android自定义View)