Canvas AndroidX 中的 clipOutRect 兼容性
Canvas clipOutRect compatibility in AndroidX
我最近发现 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 中的一种兼容方法,但出于某种原因我无法弄清楚,在哪里可以找到它。
是否有 class 已经为 clipOutRect(Rect)
提供了兼容方法?
简短的回答是 - 不。在 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
是通过native代码传递给view的,所以在ViewCompat
class里面有onDrawCompat(canvas: CanvasCompat)
这样的东西会很别扭。我认为根本没有理由这样做。
此外,这真的不是您应该担心的那种类型的弃用。
例如 WifiManager.startScan()
被标注为
This method was deprecated in API level 28. The ability for apps to
trigger scan requests will be removed in a future release.
也就是说 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
我最近发现 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 中的一种兼容方法,但出于某种原因我无法弄清楚,在哪里可以找到它。
是否有 class 已经为 clipOutRect(Rect)
提供了兼容方法?
简短的回答是 - 不。在 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
是通过native代码传递给view的,所以在ViewCompat
class里面有onDrawCompat(canvas: CanvasCompat)
这样的东西会很别扭。我认为根本没有理由这样做。
此外,这真的不是您应该担心的那种类型的弃用。
例如 WifiManager.startScan()
被标注为
This method was deprecated in API level 28. The ability for apps to trigger scan requests will be removed in a future release.
也就是说 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