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

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

概述我知道BottomSheetDialog已经这样做了,但是我需要使用从BottomSheetBehavior.from()生成的常规BottomSheet和行为.这个BottomSheet并不暗淡背景,而且触摸外面也不会关闭它.当显示BottomSheet时,是否有办法淡化背景?当外面触摸时可能会被解雇.基本上,行为就像BottomSheetDialog,但我必须直接使用BottomSheet B 我知道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 – 当显示Bottomsheet时,如何减轻背景,而不使用Dialog?全部内容,希望文章能够帮你解决android – 当显示Bottomsheet时,如何减轻背景,而不使用Dialog?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1132543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存