android – 当显示Bottomsheet时,如何减轻背景,而不使用Dialog?

前端之家收集整理的这篇文章主要介绍了android – 当显示Bottomsheet时,如何减轻背景,而不使用Dialog?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道BottomSheetDialog已经这样做了,但是我需要使用从BottomSheetBehavior.from()生成的常规BottomSheet和行为.这个BottomSheet并不暗淡背景,而且触摸外面也不会关闭它.当显示BottomSheet时,是否有办法淡化背景?当外面触摸时可能会被解雇.基本上,行为就像BottomSheetDialog,但我必须直接使用BottomSheet BottomSheetBehavior.

谢谢!

解决方法

你可以使用我的概念,如果你想要我在 AlertDialog with Blur background in possition center使用

我的做法

>拍摄屏幕
>程式上动画模糊/模糊屏幕截图
>使用对话框获取currant窗口没有任何内容
>附加屏幕截图有效
>显示我想显示的真实视图

在这里,我有一个类将背景的图像作为位图

public class AppUtils {

    public static Bitmap takeScreenShot(Activity activity) {
        View view = activity.getWindow().getDecorView();
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache();


        Bitmap b1 = view.getDrawingCache();
        Rect frame = new Rect();
        activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
        int statusBarHeight = frame.top;

        Display display = activity.getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;
        int height = size.y;


        Bitmap b = Bitmap.createBitmap(b1,statusBarHeight,width,height - statusBarHeight);
        view.destroyDrawingCache();
        return b;
    }
}

恭喜现在你有一个与你的背景相同的暗/暗的图像

那么你的要求就是像我这样不那么模糊,所以你可以把这个位图传给下面的方法,

public static Bitmap changeBitmapContrastBrightness(Bitmap bmp,float contrast,float brightness) {
        ColorMatrix cm = new ColorMatrix(new float[]
                {
                        contrast,brightness,contrast,1,0
                });

        Bitmap ret = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(),bmp.getConfig());

        Canvas canvas = new Canvas(ret);

        Paint paint = new Paint();
        paint.setColorFilter(new ColorMatrixColorFilter(cm));
        canvas.drawBitmap(bmp,paint);

        return ret;
    }

现在使用一个假的对话框/对话框,只有一个背景/内容才能获得窗口(检查我的问题实现,你可以理解)

Window window = fakeDialogUseToGetWindowForBlurEffect.getWindow();
window.setBackgroundDrawable(draw);  // draw is bitmap that you created

在此之后,您可以显示您的真实视图.在我的情况下,我显示一个警报,您可以显示任何您的视图,并记住删除/去那个警报,当你的真实视图从屏幕出来!

快出来:(可以根据需要定制背景,不光暗)

猜你在找的Android相关文章