自定义Dialog实现透明无遮罩

效果图

自定义Dialog实现透明无遮罩_第1张图片

1.自定义dialog


public static void showFormDialog(Context context, String flag, int y, FormPopEntity entity, FormPopAdapter.ItemClick sureClickListener) {
        Dialog mDialog = new Dialog(context, R.style.centerDialog);
        inflate = LayoutInflater.from(context).inflate(R.layout.form_dialog_layout, null);
        LinearLayout common_layout = inflate.findViewById(R.id.common_layout);
        TextView common_tv = inflate.findViewById(R.id.common_tv);
        TextView common_line = inflate.findViewById(R.id.common_line);
        TextView form_triangle = inflate.findViewById(R.id.form_triangle);
        TextView form_triangle2 = inflate.findViewById(R.id.form_triangle2);
        if (flag.equals("1")) {
            form_triangle.setVisibility(View.VISIBLE);
            form_triangle2.setVisibility(View.GONE);
        } else {
            form_triangle.setVisibility(View.GONE);
            form_triangle2.setVisibility(View.VISIBLE);
        }
        if (entity.elementTypeList.size() <= 0) {
            FormFieldModel formFieldModel = new FormFieldModel();
            formFieldModel.getFormField(new ApiBasicCompleteListener() {
                @Override
                public void onBeginConnect() {

                }

                @Override
                public void onDataError(ResultErrorEntity error) {

                }

                @Override
                public void onNetError(String errorMsg) {

                }

                @Override
                public void onComplete(FormPopEntity entity) {
                    formPopEntity = entity;
                }
            });
        }else {
            formPopEntity=entity;
        }
        LinearLayout contact_layout = inflate.findViewById(R.id.contact_layout);
        TextView contact_tv = inflate.findViewById(R.id.contact_tv);
        TextView contact_line = inflate.findViewById(R.id.contact_line);
        ScrollGridView field_grid = inflate.findViewById(R.id.field_grid);
        List list = new ArrayList<>();
        list.addAll(formPopEntity.elementTypeList);
        FormPopAdapter adapter = new FormPopAdapter(context, list);
        field_grid.setAdapter(adapter);
        adapter.notifyDataSetChanged();
        common_layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                common_line.setVisibility(View.VISIBLE);
                common_tv.setTextColor(Color.parseColor("#FF6C00"));
                contact_tv.setTextColor(Color.WHITE);
                contact_line.setVisibility(View.GONE);
                list.clear();
                list.addAll(formPopEntity.elementTypeList);
                adapter.notifyDataSetChanged();
            }
        });
        adapter.itemSetOnclick(sureClickListener);
        adapter.itemSetOnclick(new FormPopAdapter.ItemClick() {
            @Override
            public void onclick(View view, int position, List list) {
                mDialog.dismiss();
                if (sureClickListener != null)
                    sureClickListener.onclick(view, position, list);
            }
        });
        contact_layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                common_line.setVisibility(View.GONE);
                common_tv.setTextColor(Color.WHITE);
                contact_tv.setTextColor(Color.parseColor("#FF6C00"));
                contact_line.setVisibility(View.VISIBLE);
                list.clear();
                list.addAll(formPopEntity.commonElementList);
                adapter.notifyDataSetChanged();
            }
        });
        mDialog.setContentView(inflate);

        Window dialogWindow = mDialog.getWindow();
        dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);// 一句话搞定
        //重新设置
        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        dialogWindow.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);
        //无遮罩属性设置        
        lp.dimAmount = 0;
//        lp.x = 100; // 新位置X坐标
        lp.y = y; // 新位置Y坐标
        //(当Window的Attributes改变时系统会调用此函数)
        dialogWindow.setAttributes(lp);
        mDialog.show();
    }

参数可以根据自己需要自己改 切记这个 设置无遮罩  lp.dimAmount = 0;

布局form_dialog_layout




    


        

        

            

                

                    

                    
                

                

                    

                    
                
            

            
        

        
    
style

    
    

 

anim_fade_in进入动画




anim_fade_out退出动画



最后调用方法就可以了

你可能感兴趣的:(自定义Dialog实现透明无遮罩)