Работал ли с CustomView

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

Ответ

Да, работал. CustomView позволяет создавать кастомные UI-компоненты, когда стандартные не подходят. Основные подходы:

  1. Наследование от View – для полностью кастомной отрисовки через onDraw().
  2. Композиция существующих View – через ViewGroup (например, ConstraintLayout).
  3. Модификация существующих View – например, переопределение onMeasure() или onLayout().

Пример простого CustomView с отрисовкой круга:

class CircleView(context: Context, attrs: AttributeSet) : View(context, attrs) {  
    private val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {  
        color = Color.RED  
    }  

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

Важно учитывать производительность (избегать лишних аллокаций в onDraw()), правильно обрабатывать onMeasure() и поддерживать кастомные атрибуты через obtainStyledAttributes.