Какой опыт работы с Canvas

«Какой опыт работы с Canvas» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Работал с Canvas для кастомной отрисовки UI. Основные задачи: создание сложных анимаций, кастомных графиков и элементов интерфейса.

Пример:

class CustomView(context: Context) : View(context) {
    private val paint = Paint().apply {
        color = Color.RED
        style = Paint.Style.FILL
    }

    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        canvas.drawCircle(width / 2f, height / 2f, 100f, paint)
    }
}

Оптимизировал отрисовку через clipRect(), save()/restore() и invalidate() с учетом dirty rect. Работал с Path, Matrix для трансформаций.