AndroidX 中的 Canvas clipOutRect 兼容性
Posted
技术标签:
【中文标题】AndroidX 中的 Canvas clipOutRect 兼容性【英文标题】:Canvas clipOutRect compatibility in AndroidX 【发布时间】:2019-07-17 12:03:23 【问题描述】:我最近遇到了 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】:简短的回答是 - 不。 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
是通过原生代码传递给视图的,所以在 ViewCompat
类中出现 onDrawCompat(canvas: CanvasCompat)
这样的东西会很尴尬。我认为根本没有理由这样做。
此外,这真的不是您应该担心的那种弃用类型。
例如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
【讨论】:
以上是关于AndroidX 中的 Canvas clipOutRect 兼容性的主要内容,如果未能解决你的问题,请参考以下文章
如何用 Android 数据绑定替换 androidx.fragment.app.FragmentContainerView 中的片段
是否可以使用 AndroidX 导航将片段中的操作栏标题居中?
这个 Flutter 应用程序中的 Gradle 失败 AndroidX 不兼容
错误 - 构建失败可能是由于插件中的 AndroidX 不兼容。该工具即将尝试使用
使用 AndroidX 时,proguard-android-optimize.txt 中的“@Keep 支持注释”规则是不是仍然适用?