【问题标题】:Canvas clipOutRect compatibility in AndroidXAndroidX 中的 Canvas clipOutRect 兼容性
【发布时间】: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) 提供了兼容方法?

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 2019-04-22
      相关资源
      最近更新 更多