sla*_*boy 5 android android-jetpack-compose
我有一个可组合的,即使用 NativeCanvas 与 BlurMaskFilter 一起应用一些自定义模糊效果。这对于 API > 23 的设备工作正常,问题是由旧设备的硬件加速引起的。
在这里,您可以看到模糊在 API 30(左)上有效,而在 API 22(右)上则不太有效。
我知道我可以使用 .manifest 从清单文件中手动禁用整个应用程序或活动android:hardwareAccelerated="false"。
对于视图,我们可以对特定视图而不是整个活动禁用它view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
有没有一种方法可以禁用特定可组合项的硬件加速,而不是整个应用程序/活动的硬件加速?
使用互操作性 API ,您可以将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,
)
}
Run Code Online (Sandbox Code Playgroud)
用法:
SoftwareLayerComposable(Modifier) {
// your view
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1369 次 |
| 最近记录: |