https://d.android.com/training/custom-views/create-view
https://d.android.com/reference/android/view/View
https://d.android.com/reference/android/view/ViewGroup
https://d.android.com/guide/topics/ui/how-android-draws
https://itsobes.ru/AndroidSobes/kak-sozdat-kastomnuiu-view
https://itsobes.ru/AndroidSobes/kak-realizovat-metod-view-onmeasure
https://itsobes.ru/AndroidSobes/kak-realizovat-metod-view-ondraw
https://itsobes.ru/AndroidSobes/v-chem-raznitsa-mezhdu-invalidate-i-requestlayout
https://itsobes.ru/AndroidSobes/kak-rabotaet-metod-dispatchtouchevent
https://itsobes.ru/AndroidSobes/dlia-chego-nuzhen-metod-onintercepttouchevent
https://itsobes.ru/AndroidSobes/dlia-chego-nuzhen-metod-view-forcelayout
https://itsobes.ru/AndroidSobes/nazovite-osnovnye-motionevent-actions
https://itsobes.ru/AndroidSobes/kak-touch-event-dostavliaetsia-do-target-view

Save State

View сохраняет и восстанавливает свое состояние с помощью методов onSaveInstanceState и onRestoreInstanceState. Чтобы view сохраняло свое состояние при пересоздании activity нужно указать ей id. Если мы создадим 2 EditText с одинаковыми id при повороте экрана восстановится текст из последнего EditText.

onSizeChanged

Вызывается при изменении размеров View (смена ориентация устройства, изменение размера родительского контейнера). В этом методе мы выполняем расчеты и подготавливаем данные для отрисовки в onDraw.

onTouchEvent

Метод обработки событий пользовательского ввода. Вызывается при каждом событии касания View.

View Lifecycle

onAttachToWindow ****вызывается когда View прикрепляется к окну.

onMeasure вызывается для определения требований к размеру этого View и всех его дочерних элементов.

onLayout вызывается когда View должно назначить размер и позицию всем своим дочерним элементам.

onDraw вызывается когда View должен отрисовать свое содержимое.

onDetachedFromWindow вызывается когда View открепляется от своего окна.

ViewGroup

View которая может содержать дочерние view. Базовый класс для FrameLayout LinearLayout и других.