Custom screen dim with Dialog
This solution did not work for me. There is another option, you can cancel the flag that control dimming. This code worked for me:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Yes, it is. You can control it.
After creating dialog:
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.dimAmount = 0.0f; // Dim level. 0.0 - no dim, 1.0 - completely opaque
dialog.getWindow().setAttributes(lp);
Upd: you can even add blur behind the dialog:
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Upd2: Blurring is deprecated since API14:
This constant was deprecated in API level 14.
Blurring is no longer supported.
Answering it quite late but I am sure things get deprecated with time so my answer would definitely help someone. First of all create a dialog:
dialog = new Dialog(ActivityName.this);
dialog .setCancelable(false);
dialog .setContentView(R.layout.dialog_layout);
Then get the window of that dialog and add a flag called FLAG_DIM_BEHIND and finally set the dim amount on the screen.
Window window = dialog.getWindow();
if(window != null){
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); // This flag is required to set otherwise the setDimAmount method will not show any effect
window.setDimAmount(0.5f); //0 for no dim to 1 for full dim
}
Then show your dialog,
dialog.show();
And before you dismiss your dialog, clear the flags:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
And then dismiss:
dialog.dismiss();
Or you can do:
dialog.getWindow().setDimAmount(0.5f);