android

Урок 1: Android Studio – установка, настройка эмулятора

Оглавление Ведение в Android Установка Android Studio Создание проекта Переключение на темную тему Установка эмулятора и запуск Обзор структуры проекта Подключение физического устройства Ведение в Android Это начало серии уроков по разработке Android-приложений. Будет все в лучших традициях: с разжевыванием…

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

Урок 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 – это язык разметки, который среди прочего позволяет задать вложенность элементов относительно друг…

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

Урок 4: Верстаем экран по макету из Figma, ShapeDrawable

Оглавление Что такое Figma (Фигма)? Верстка иконки закрытия Экспорт из Figma Импорт векторной иконки в проект Верстка изучаемого слова Верстка вариантов ответа Вложенные лейауты Стилизация (позиционирование, размер текста и фон) Создание фонов (ShapeDrawable) LinearLayout и layout_gravity Верстка и стилизация футера…

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

Урок 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. Я расскажу про всего…

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

Урок 11: Gradle — система сборки! ЧТО ТЫ ТАКОЕ — обзор файлов

Оглавление Введение Что такое gradle в Android проекте Конфигурация gradle Каталог .gradle Разница между build.gradle и build.gradle.kts. settings.gradle.kts gradle.properties gradlew build.gradle.kts Конфигурационная папка .idea Введение В этой статье разберем все файлы проекта, в названиях которых встречается слово gradle. Понимание структуры…

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

Атрибут 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 либо между…

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

Какие вы знаете layout в Android?

Из основных лэйаутов (прямых наследников ViewGroup) можно выделить следующие FrameLayout. Отрисовывает элементы друг поверх друга. LinearLayout Отрисовывает элементы друг за другом. У данного layout есть атрибут orientation, который задает направление, в котором будут отрисовываться дочерние View. Если данный атрибут имеет…

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

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

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

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

Расскажите про Database View в Room

Начиная с версии 2.1.0 Room поддерживает SQLite database views. Database Views позволяют инкапсулировать запрос в БД внутри класса. Такие классы представляют из себя простенькие объекты с данными. Чтобы создать такой класс необходимо добавить аннотацию @DatabaseView к классу, а в качестве…

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

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

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

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

Объединение нескольких LiveData в Android

Для того, чтобы объединить несколько LiveData необходимо использовать класс MediatorLiveData. Данный класс умеет подписываться на обновления других LiveData. Для этого необходимо вызвать метод MediatorLiveData.addSource(). Он принимает в себя два аргумента: 1) Сама LiveData, на которую нужно подписаться 2) Observer, который…

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

Особенности при подписке на LiveData во Fragment

Метод observe() класса LiveData принимает в качестве аргумента объект класса LifecycleOwner. Данный объект будет указывать, кто является владельцем данного Lifecycle, это необходимо чтобы колбек LifeData.observe() не триггерился когда LifecycleOwner еще не в активном состоянии (либо уже был вызван onDestory(), либо…

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

Паттерн MVVM

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

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