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