AndroidX中的Canvas clipOutRect兼容性

问题描述 投票:3回答:1

我最近遇到了clipRect(Rect,Region.Op)的弃用,我想和DIFFERENCE一起使用。这被clipOutRect(Rect)取代,因此我实施了:

@Suppress("DEPRECATION")
fun clipOutRect(canvas: Canvas, rect: Rect) =
    if (SDK_INT >= O) canvas.clipOutRect(rect)
    else canvas.clipRect(rect, DIFFERENCE)

现在看起来它可能是AndroidX中的兼容性方法,但出于某种原因我无法弄清楚,我在哪里可以找到它。

有没有一个类已经为clipOutRect(Rect)提供兼容性方法?

android kotlin android-canvas androidx android-compatibility
1个回答
2
投票

简短的回答是 - 不。 AndroidX中唯一与Canvas相关的是这个文件:https://github.com/aosp-mirror/platform_frameworks_support/blob/androidx-master-dev/core/core-ktx/src/main/java/androidx/core/graphics/Canvas.kt

答案很长。首先,Canvas通过本机代码传递给查看,因此在onDrawCompat(canvas: CanvasCompat)类中使用像ViewCompat这样的东西会很尴尬。我认为没有理由这样做。而且,你真的不应该担心这种类型的弃用。例如,WifiManager.startScan()被注意到

此方法在API级别28中已弃用。应用程序触发扫描请求的功能将在以后的版本中删除。

那说Change this code now, or it will be broken year later

clipRect不同的是,它将保留以便与多年甚至十年不会更新的应用程序向后兼容。对此的弃用警告就像Hey, we have new method with better functionality/name, if you target minimum is API 26 you can use that

© www.soinside.com 2019 - 2024. All rights reserved.