Android BlurView issues with SKCanvasView



我试图为Android创建一个视图,其背景似乎模糊了视图的内容,它是在顶部。这不是什么新鲜事,以前就有人这么做过。我的实现基于这里所做的:Dimezis/BlurView。

该方法使用观察到的视图树中的预绘制事件将视图绘制到内部画布。画布由位图支持。在将位图绘制到传递给BlurView的draw方法的画布之前,对位图进行模糊处理。这种方法适用于所有标准视图/控件,是实现模糊视图效果的常用方法。但是,它不处理视图上可能被模糊的基于sky的绘图。

Skia,通过SKCanvasView,被大量用于应用程序内的控制,所以如果我找不到解决方案,这是一种交易破坏者。这个问题很奇怪。在画布视图上绘制的任何内容在绘制到内部画布时都会被缩放和转换。

屏幕截图- blur label v. blur SKCanvasView

屏幕截图显示了模糊带有文本的标签和模糊在SKCanvasView上绘制的红色圆圈的结果的差异。

作为参考,我在GitHub上发布了一个示例项目。可以在这里找到:jaredballen/BlurView

我非常感谢任何可以分享的意见。

当您调用_rootView?.Draw(_internalCanvas);时,圆圈SKCanvasView是内部渲染自己使用_internalCanvas大小(与_blurView大小相同)导致演示行为。我猜这可以通过使_internalCanvas_rootView大小相同来解决,将根视图渲染为模糊,然后在较小的_blurView内剪切和翻译结果。

最新更新