AndroidX中的canvas clipOutRect兼容性

时间:2019-02-23 15:45:08

标签: android kotlin android-canvas androidx android-compatibility

我最近遇到了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)提供了兼容方法?

1 个答案:

答案 0 :(得分:1)

最简单的答案是-不。与AndroidX中的Canvas相关的唯一内容是以下文件:https://github.com/aosp-mirror/platform_frameworks_support/blob/androidx-master-dev/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