我最近遇到了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)
提供兼容性方法?
简短的回答是 - 不。 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