1. constructor()
/ init
Что делает: создаёт View
, инициализирует поля
Вызывается: при создании View
— через XML или программно
Аналогия: ты строишь мебель по инструкции — ещё ничего не стоит, но детали есть.
2. onAttachedToWindow()
Что делает: сообщает, что View
добавлена в иерархию окна
Вызывается: после того, как View
прикреплена к окну
Аналогия: ты поставил мебель в комнату — теперь она “живая” и часть системы
Полезно для:
- подписок на
LiveData
,Flow
,BroadcastReceiver
- запуска анимаций
3. onMeasure(widthSpec, heightSpec)
Что делает: определяет размер View
Вызывается: системой перед размещением View
Аналогия: ты измеряешь ширину и высоту шкафа, прежде чем вставить его в угол
Важно: обязан вызвать setMeasuredDimension(width, height)
4. onLayout(changed, left, top, right, bottom)
Что делает: размещает дочерние View
внутри себя
Вызывается: после onMeasure()
, если размеры или положение изменились
Аналогия: ты ставишь ящики и полки внутри шкафа
В ViewGroup
, обязательно вызываешь child.layout(...)
5. onDraw(canvas)
Что делает: рисует содержимое View
Вызывается: каждый раз, когда нужно перерисовать
Аналогия: ты разукрашиваешь фасад шкафа краской
6. onDetachedFromWindow()
Что делает: сигнализирует, что View
удалена из окна
Вызывается: при удалении, уничтожении Activity
, Fragment
Аналогия: ты выносишь мебель из комнаты
Здесь: отписываемся от потоков, снимаем слушателей, останавливаем анимации