View

Урок 2: Введение в XML, что такое View, теги и атрибуты

Оглавление Что такое файл MainActivity.kt? onCreate() setContentView() Файл XML разметки activity_main.xml Разбор имеющихся тегов activity_main.xml xmlns layout_width и layout_height dp – density-independent pixel TextView внутри ConstraintLayout Документация внутри Android Studio Создание нового layout Добавление кнопки – тэг Button Button и…

Читать полностью

Урок 3: Контейнеры — FrameLayout, LinarLayout. Отступы

Оглавление Вложенность элементов в XML Что такое контейнер? Основные лейауты FrameLayout Отступы Разница между gravity и layout_gravity LinearLayout Вложенность элементов в XML Итак, как вы уже поняли, XML – это язык разметки, который среди прочего позволяет задать вложенность элементов относительно друг…

Читать полностью

Урок 5: Ресурсы (res), квалификаторы, локализация, шрифты

Оглавление Типы ресурсов в Android Папка res Импорт шрифтов Создание директории font Добавление шрифтов элементам разметки Строковые ресурсы Как создать строковый ресурс (string resource) Квалификаторы на примере локализации ресурсов Что такое квалификаторы Как локализировать Android приложение Типы ресурсов в Android…

Читать полностью

Урок 6: Cтили, темы в приложении и их кастомизация 

Оглавление Собственные стили в Android Создание кастомного стиля Создание и применение стиля Переопределение родительского стиля Типы наследования стиля Темы и кастомизация Кастомизация StatusBar (не путать с ActionBar) Собственные стили в Android Продолжаем работать с ресурсами и сейчас я расскажу про…

Читать полностью

Урок 7: findViewById, ViewBinding, backing property 

Оглавление Атрибут id Стиль названия id’шников Получение id элемента View в Activity Способы получения id из XML разметки findViewById ViewBinding Активация ViewBinding в Android проекте Инициализация ViewBinding в Activity Обращение к элементу разметки через ViewBinding Backing property (резервное свойство) После…

Читать полностью

Урок 8: setOnClickListener() — обработка нажатий, property access

Оглавление Взаимодействие с элементами экрана Обработка правильного ответа Property access syntax Обработка неправильного ответа Обработка нейтрального состояния, apply Взаимодействие с элементами экрана Мы научились обращаться к элементам экрана, теперь начинаем взаимодействовать с ними. И сейчас перед нами стоит задача научиться…

Читать полностью

Урок 10: AndroidManifest.xml (андройд манифест)

Оглавление Введение Отображение иерархии проектов AndroidManifest.xml Тег <application> <uses-permission> (пермишены) Merged Manifest Введение Программирование и разработка приложений это не только написание кода, но и конфигурация приложения. Сейчас мы познакомимся с содержимым важнейшего файла проекта – AndroidManifest. Я расскажу про всего…

Читать полностью

Атрибут weight и его влияние на производительность

При использовании обычного LinearLayout каждый из on… методов View вызывается его дочерних View только по одному разу, что делает его довольно быстрым. Если же использовать атрибут weight, то метод onMeasure() будет вызван по 2 раза на каждом View. Это делает…

Читать полностью

Для чего нужен атрибут weight в LinearLayout?

Это атрибут, который указывает то, какую часть экрана займет View по сравнению с другими View, у которых тоже указан данный атрибут. При этом в зависимости от атрибута orientation, данный атрибут будет влиять на разные параметры View. Если у LinearLayout стоит…

Читать полностью

Назовите отличия CoordinatorLayout от FrameLayout

CoordinatorLayout можно представить как FrameLayout на максималках. Это улучшенная версия FrameLayout. CoordinatorLayout рассчитан на использование в двух основных случаях В качестве top-level декора приложения или же chrome layout Когда необходимо настроить взаимодействие между layout и его дочерними view либо между…

Читать полностью

Расскажите про ViewGroup и View и в чем их различие?

ViewGroup – это класс, который наследуется от View. Он расширяет View и позволяет хранить в себе другие View, по сути это как контейнер. Все layout’ы являются ViewGroup. Так же этот класс будет базовым и для layout parameters. ViewGroup предоставляет невидимый…

Читать полностью

Можно ли ViewModel заменить onSaveInstanceState()?

Не совсем. Вернее не всегда вьюмоделью можно заменить onSaveInstanceState(). Рассмотри такой случай, когда в нашей активити есть ViewModel, которая сохраняет наши данные. Так же эти же данные сохраняются в onSaveInstanceState(). Всего есть три варианта как будет создаваться активити: Активити запускается…

Читать полностью

Паттерн MVVM

MVVM, — шаблон проектирования архитектуры приложений. Он упрощает разделение разработки графического интерфейса (view) от разработки бизнесс-логики (model). ViewModel в данном шаблоне проектирования является промежуточным звеном, которое помогает преобразовывать данные таким образом, чтобы их было легко представлять и ими было легко…

Читать полностью

Какие есть недостатки паттерна MVP

Вот несколько минусов MVP в Android-разработке Круговая зависимость View и Presenter. У View есть ссылка на Presenter, а у Presenter есть ссылка на View. Обычно это не так плохо, но стоит вспомнить, что в Андроид View — это как правило…

Читать полностью

Паттерн MVP

MVP (Model-View-Presenter) — как и MVC, является шаблоном проектирования архитектуры приложения. Данный паттерн произошел от MVC и многое унаследовал от него. Но есть и отличия. Слои Model и View по своей сути такие же как и в MVC, но вот…

Читать полностью

Паттерн MVC

MVC (Model-View-Controller) — шаблон проектирования архитектуры приложений. Он используется чтобы разделить логику всего приложения на три элемента, связанных друг с другом. Это позволяет разделить представление информации “внутри” приложения и то, как эту информация видит и вводит пользователь. Благодаря этому упрощается…

Читать полностью

Расскажите про реализацию метода View.onMeasure()

onMeasure() — метод, необходимый, чтобы определить размеры View и его “детей”. Данный метод должен быть переопределен таким образом, чтобы быстро и точно возвращать размеры View и его “детей”. Так же есть установки на View от его родителей, который накладывают дополнительные…

Читать полностью