Canvas clipOutRect在AndroidX中的兼容性

Canvas clipOutRect在AndroidX中的兼容性,android,kotlin,android-canvas,androidx,android-compatibility,Android,Kotlin,Android Canvas,Androidx,Android Compatibility,我最近遇到了对clipRect(Rect,Region.Op)的反对,我想将其与差异一起使用。这被clipOutRect(Rect)取代,因此我实现了: @Suppress("DEPRECATION") fun clipOutRect(canvas: Canvas, rect: Rect) = if (SDK_INT >= O) canvas.clipOutRect(rect) else canvas.clipRect(rect, DIFFERENCE) 现在看来,这可能

我最近遇到了对
clipRect(Rect,Region.Op)
的反对,我想将其与
差异一起使用。这被
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)
提供了兼容方法?

简短的回答是-否。在AndroidX中,与画布相关的唯一内容是此文件:

答案很长。 首先,
Canvas
是通过本机代码传递给view的,因此在
ViewCompat
类中使用类似于
onDrawCompat(Canvas:CanvasCompat)
的东西会很尴尬。我认为根本没有理由这么做。 而且,这并不是你应该担心的那种类型的反对。 例如,
WifiManager.startScan()

此方法在API级别28中被弃用。应用程序能够 触发器扫描请求将在将来的版本中删除

也就是说,
立即更改此代码,否则它将在一年后被破坏

clipRect
不同的是,它将保持向后兼容性,以便与多年甚至十年内都不会更新的应用程序兼容。对此的弃用警告就像
嘿,我们有一个功能更好的新方法/名称,如果你的目标最小值是API 26,你可以使用它