256
Вывод списка с данными
жимого библиотеки, которая будет оставаться неактивной, пока пользователь
не установит флажок
Accept Terms (Принимаю условия использования). Нажа
-
тие этой кнопки будет запускать один из наших основных контроллеров поль
-
зовательского интерфейса с говорящим именем
BrowseLibraryAc ti vi ty
.
Также напомним, что нам заранее неизвестны размеры экрана на устрой
-
стве пользователя, которое могло быть выпущено и в 2010 году, и в 2024-м.
Также мы не можем быть уверены в выборе ориентации (альбомной или книж
-
ной), и если следовать рекомендациям по доступности, даже размер шрифта
может сильно отличаться, в зависимости от настроек устройства. Поэтому нам
придется прокручивать отображаемую информацию, чтобы пользователь смог
прочитать ее и принять (или не принять) установленные правила или, щелкнув
на кнопке, посмотреть содержимое библиотеки.
Для начала определим некоторые факты. Ресурсы в Android, такие как стро
-
ки и изображения, обычно хранятся в структурах XML и идентифицируются
целыми числами, сгенерированными системой, как мы рассказывали, когда
описывали создание логотипа.
Добавление строковых и графических ресурсов Итак, нам понадобятся: вводный текст, представляющий приложение библио-
теки, текст с условиями использования приложения, которые пользователь
должен принять, и текст для надписей на кнопке и рядом с флажком. Как вы
помните, мы уже создали файл логотипа и зарегистрировали его в системе,
поместив в соответствующий каталог ресурсов. Для строковых значений нам
понадобится создать ресурсы другого типа:
values
. Традиционно строковые ре
-
сурсы хранятся в
/res/values/strings.xml , в узлах
string
, имеющих атрибут
name
,
по которому они идентифицируются во время компиляции; значением строки
является текстовое содержимое узла.
Добавим несколько таких узлов в наш файл
strings.xml :
DunnAndLewisMemorial Welcome to the app for the Dunn &
Lewis Memorial Library! This library includes books of all
stripes, from code books on Java 8 to code books on Java 9!
All books in the Dunn & Lewis Memorial
Library are copyrighted by their respective authors, and all
state and federal copyright laws apply in full effect
and will be enforced by the library. Do you accept these terms? Browser
Теперь у нас есть не только растровое изображение логотипа, но и весь текст
для отображения на экране приветствия.
Создадим новый файл макета для этого экрана:
Что мы здесь видим?
Разберем содержимое этого файла элемент за элементом:
1) корневой узел макета –
ScrollView
– определяет представление, которое
при необходимости прокручивает свое содержимое. Мы определили не
так много информации, и на большинстве экранов прокрутка может не
понадобиться, но она очень пригодится при отображении на устройстве
с маленьким экраном, имеющим низкое разрешение, если пользователь
выбрал в настройках большой размер шрифта, или даже на стандартном
устройстве в альбомной ориентации. Крайне важно, чтобы все инте
-
рактивные элементы пользовательского интерфейса, даже те, которые
прос то выводят информацию, были доступны для пользователя, и пред
-
258
Вывод списка с данными
ставление с прокруткой является одним из традиционных способов ре
-
шения этой задачи;
2) мы знаем, что все остальные компоненты будут располагаться верти
-
кально – друг за другом. Этот традиционный подход к размещению ис
-
пользуется практически во всех современных движках пользовательско
-
го интерфейса, от традиционных механизмов отображения разметки
HTML веб-страниц до средств просмотра файлов PDF и документов, соз
-
данных такими редакторами, как Pages или MS Word, markdown, Asci
-
iDoc (tor), troff, (La)TeX и т. д. Представление
LinearLayout
, предлагаемое
фреймворком, предназначено как раз для такого упорядоченного выво
-
да элементов. Важно отметить, что по умолчанию
LinearLayout
использу
-
ет горизонтальную ориентацию, когда каждый следующий элемент раз
-
мещается правее предыдущего; поэтому нам понадобилось определить
атрибут
orientation
со значением
vertical
, чтобы добиться желаемого эф
-
фекта;
3) далее следует логотип. Нам нужно, чтобы изображение заполняло стра
-
ницу на всю ширину, но сохраняло соотношение сторон по вертикали;
поэтому мы определили следующие атрибуты:
android:layout_width="match_parent"
android:layout_height="wrap_content"
4) простой блок текста с описанием приложения и библиотеки;
5) еще один блок текста с условиями использования и ссылкой на автор
-
ские права;
6) экземпляр
CheckBox
с меткой. Первоначально флажок не отмечен, поэто
-
му кнопка, следующая ниже, объявлена неактивной;
7) простая кнопка – экземпляр
Button
, – которую можно нажать, когда она
будет активирована. Эта кнопка откроет экран, с помощью которого
пользователь сможет начать знакомиться с библиотекой.
Вот и все! Поскольку наш
MainAc ti vi ty
уже вызывает
setContentView
и передает
скомпилированный идентификатор этого файла макета, на начальном экране
приветствия теперь будут отображаться описанные элементы пользователь
-
ского интерфейса, а не просто «Hello World!», как это было раньше.
Предыдущего примера макета явно недостаточно, чтобы просто продемон
-
стрировать все, что