Добро пожаловать в мой цикл статей о Head First Android Development — 3rd Edition! Этот блог является продолжением серии постов, которые я буду писать о чтении и работе с Head First Android Development. В этом блоге речь пойдет конкретно о третьей и четвертой главах.
Вы новичок в этой серии? Пожалуйста, начните с начала серии здесь.
Примечание: Этот блог может содержать партнерские ссылки на книги или продукты, на которые я ссылаюсь. Переход по этим ссылкам может привести к получению вознаграждения.
Все начинает становиться интересным!
В следующих двух главах все начинает набирать обороты! Третья и четвертая главы включают в себя следующие основные идеи:
- Более глубокое погружение в макеты
- Действительно глубокое погружение в макеты с ограничениями
- Черновики
- Работа с ConstraintLayouts
Глава 3
В третьей главе мы получили много инструментов в свой пояс, что подготовило нас к главе 4 о ConstraintLayouts.
В этой главе мы немного углубимся в несколько различных типов макетов и их общие случаи использования, а именно:
- LinearLayouts — дочерние представления, расположенные вертикально или горизонтально.
- FrameLayouts — дочерние представления укладываются в стопку
- ScrollViews — использование для обертывания макетов с полосой прокрутки.
Каждый тип макета был хорошо представлен с небольшим примером приложения для сборки. В этой главе (как и в предыдущих) для закрепления полученных знаний используются задания в тексте. Самыми запоминающимися (на мой взгляд) были задания «Магнит для холодильника», которые позволяют увидеть часть кода и заполнить пробелы.
Важным моментом в этой главе было то, что все макеты расширяют класс View, расширяя класс ViewGroup. Эти макеты требуют, чтобы почти все элементы пользовательского интерфейса Android объявляли свою высоту и ширину и получали общий API для взаимодействия. Кроме того, именно поэтому разработчик может вложить макеты, чтобы создать именно то, что нужно для его приложения.
Например, вы можете иметь линейный макет с вертикальной ориентацией и два дочерних линейных макета с горизонтальной ориентацией, чтобы иметь два ряда элементов, но эти ряды расположены вертикально. Хотя в следующей главе мы быстро выясним, что это не лучший способ решения задачи.
Глава 4
Сложное расположение элементов с использованием вложенных макетов не является лучшей практикой в Android. В этой главе мы узнаем, что они заставляют Android OS выполнять больше работы, чем следует, поскольку каждый макет и представление превращаются в объект в коде.
Решением (и мясом этой главы) является ConstraintLayout. Я видел много ConstraintLayout во время своей начальной курсовой работы в Google. Оглядываясь назад, я не уверен, что курс объяснял его (или его обоснование) так же хорошо, как книга.
Чтобы научить читателя этой концепции, в тексте объясняется представление чертежа в редакторе дизайна Android Studio и экосистема библиотек Android Jetpack. Оба инструмента необходимы для построения сложного пользовательского интерфейса с использованием ConstraintLayouts.
В четвертой главе подробно рассматриваются многочисленные возможности этого макета, включая
- Ограничения
- Отклонение
- Руководящие принципы
- Барьеры
- Цепочки
- Потоки
Кроме того, в этой главе рассматриваются все необходимые инструменты Android Studio в окне Design View для работы с ConstraintLayouts.
Использование всех вышеперечисленных инструментов было довольно увлекательным, и я с нетерпением жду возможности проектировать и создавать свои приложения с их использованием. Больше всего меня заинтересовало использование барьеров для динамического изменения размеров дочерних представлений, которые могут изменить общую компоновку. Меня также интересуют цепочки и потоки для правильного выравнивания элементов.
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="editTextTextMultiLine,editTextTextMultiLine2"
tools:layout_editor_absoluteY="24dp" />
<androidx.constraintlayout.helper.widget.Flow
android:id="@+id/flow"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:constraint_referenced_ids="button5,button6,button4,button8,button7,button9"
app:flow_wrapMode="chain"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Я лишь поверхностно касаюсь того, что вы найдете в этом тексте!
Вам предстоит распаковать гораздо больше, чем я изложил. По правде говоря, вы должны погрузиться в это сами!
Я с нетерпением жду продолжения работы над этой книгой и создания новых приложений, чтобы получить знания, необходимые для того, чтобы стать разработчиком Android. Далее в этой серии я расскажу о пятой и шестой главах, приведу свои заметки, мысли и вопросы для вас.
Что вас радует в перспективе прочтения этой книги?
Источники
Head First Android Development, 3rd Edition — Dawn Griffiths, David Griffiths