Совместимость Canvas clipOutRect в AndroidX
Я недавно сталкивался с унижением 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 ответ
Краткий ответ - нет. Единственное, что связано с Canvas в AndroidX - это файл: 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