繁体   English   中英

Android Jetpack Compose(可组合)禁用特定组合的硬件加速

[英]Android Jetpack Compose (Composable) Disable Hardware Acceleration for particular composable

我有一个可组合的,即使用 NativeCanvas 和 BlurMaskFilter 来应用一些自定义模糊效果。 这适用于 API > 23 的设备,问题是由旧设备的硬件加速引起的。

在这里,您可以看到模糊在 API 30(左)上起作用,而在 API 22(右)上则没有那么多。

在此处输入图像描述

我知道我可以使用android:hardwareAccelerated="false"手动为清单文件中的整个应用程序或活动禁用它。

对于视图,我们可以使用view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)为特定视图而不是整个活动禁用它

有没有办法我们可以禁用特定可组合而不是整个应用程序/活动的硬件加速?

使用互操作性 API ,您可以在 Composable 中嵌入带有所需配置的ComposeView

@Composable
fun SoftwareLayerComposable(
    modifier: Modifier = Modifier,
    content: @Composable () -> Unit,
) {
    AndroidView(
        factory = { context ->
            ComposeView(context).apply {
                setLayerType(View.LAYER_TYPE_SOFTWARE, null)
            }
        },
        update = { composeView ->
            composeView.setContent(content)
        },
        modifier = modifier,
    )
}

用法:

SoftwareLayerComposable(Modifier) {
    // your view
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM