- •Глава 4
- •ViewGroup. Правильное использование разметки чрезвычайно важно при
- •Знакомство с Представлениями
- •ViewGroup — это производный от View класс, спроектированный для
- •Знакомство с менеджерами компоновки
- •Использование разметки
- •Оптимизация разметки
- •Изменение существующих Представлений
- •5. Чтобы отобразить лист, переопределите метод onDraw и нарисуйте
- •Создание нового графического интерфейса
- •Внимание
- •10 Dp и такой же толщины контур. Результат представлен на рис. 4.3.
- •LayerDrawable
- •StateListDrawable
- •LevelListDrawable
- •ImageView.SetImageLevel(5);
- •Ресурс NinePatch
- •800 480 И 854 480). Точно так же физические размеры экрана начинаются
Знакомство с Представлениями
Как говорилось выше, все визуальные компоненты в Android — по-
томки класса View и, как правило, называются Представлениями. Вы также
будете часто встречать термины ≪элемент управления≫ или ≪виджет≫ (не
путайте с виджетами для домашнего экрана, которые описываются в гла-
ве 10) — с ними вы должны быть знакомы, если имеете какой-либо опыт
разработки GUI.
ViewGroup — это производный от View класс, спроектированный для
хранения нескольких Представлений одновременно. Как правило, Группы
представлений используются либо для создания независимых компонентов
многократного использования, либо для управления компоновкой дочер-
них элементов (в таком случае объект ViewGroup, как правило, называется
разметкой).
Поскольку все визуальные элементы происходят от класса View, вы,
вероятно, столкнетесь с такими его названиями, как ≪виджет≫, ≪элемент
управления≫ и ≪представление≫.
Создавая приложение To-Do List в главе 2, вы уже успели познакомиться
с разметкой и тремя стандартными Представлениями: LinearLayout, ListView
и TextView.
133 бет
В следующих разделах вы научитесь собирать воедино постоянно услож-
няющиеся пользовательские интерфейсы. Узнаете, как с помощью наследо-
вания Представлений, доступных в SDK, создавать новые структурирован-
ные элементы управления, после чего создадите собственное Представление
с нуля.
Создание пользовательского интерфейса
для Активностей с помощью Представлений
Новая Активность изначально — пустой экран, где вы должны разместить
свой пользовательский интерфейс. Для этого необходимо вызвать метод
setContentView, передав ему экземпляр Представления или ресурс с раз-
меткой, который вы хотите отобразить. Так как пустой дисплей выглядит
не очень вдохновляюще, при переопределении обработчика onCreate почти
всегда используется метод setContentView, чтобы назначать пользователь-
ский интерфейс для Активности.
Этот метод принимает либо идентификатор ресурса с разметкой (как
было описано в главе 3), либо единственный экземпляр Представления. Бла-
годаря этому вы можете описывать пользовательский интерфейс как внутри
кода программы, так и с помощью внешних ресурсов с разметкой, что более
предпочтительно.
Используя ресурсы с разметкой, вы отделяете уровень представления от
бизнес-логики. Благодаря такому гибкому подходу можно изменять внеш-
ний вид, не затрагивая код программы. Это позволяет указывать различные
экземпляры разметки, оптимизированные под разные аппаратные конфигу-
рации, вы даже можете менять их во время выполнения программы, осно-
вываясь на аппаратных изменениях (например, при повороте экрана).
В листинге 4.1 показано, как с помощью внешнего ресурса с разметкой
задать пользовательский интерфейс для Активности. Вы можете получить
ссылки на Представления, размещенные внутри разметки, используя метод
findViewById. В этом примере предполагается, что файл main.xml хранит-
ся в каталоге проекта res/layout.
Листинг 4.1. Получение ссылок на элементы разметки внутри Активности
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView myTextView = (TextView)findViewById(R.id.myTextView);
}
Если вы предпочитаете более традиционный подход, то есть возмож-
ность создавать пользовательский интерфейс прямо в коде программы.
134 бет
В листинге 4.2 показано, как назначить новый объект TextView в качестве
пользовательского интерфейса.
Листинг 4.2. Создание разметки пользовательского интерфейса в коде программы
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView myTextView = new TextView(this);
setContentView(myTextView);
myTextView.setText("Hello, Android");
}
Метод setContentView в качестве параметра принимает единственный
экземпляр Представления, поэтому чтобы добавить в Активность сразу не-
сколько элементов, необходимо использовать разметку.
Виджеты, доступные в Android
Android — это набор стандартных элементов управления, с помощью ко-
торых можно создавать простые интерфейсы. Используя эти Представления
(а также изменяя и расширяя их при необходимости), вы можете упростить
процесс разработки и обеспечить преемственность между разными при-
ложениями.
Отметим некоторые из наиболее используемых элементов.
• TextView. Стандартная метка, предназначенная для вывода текста.
Она поддерживает многострочное отображение, форматирование
и автоматический перенос слов и символов.
• EditText. Редактируемое поле для ввода текста. Поддерживает много-
строчный ввод, перенос слов на новую строку и текст подсказки.
• ListView. Группа представлений, которая формирует вертикальный спи-
сок элементов, отображая их в виде строк внутри списка. Простейший
объект ListView использует TextView для вывода на экран значений
toString, принадлежащих элементам массива.
• Spinner. Составной элемент, отображающий TextView в сочетании
с соответствующим Представлением ListView, которое позволяет
выбрать элемент списка для отображения в текстовой строке. Сама
строка состоит из объекта TextView, показывающего текущий выбор,
и кнопки, при нажатии которой всплывает диалог выбора.
• Button. Стандартная кнопка, которую можно нажимать.
• CheckBox. Кнопка, поддерживающая два состояния. Представлена
в виде отмеченного или неотмеченного флажка.
• RadioButton. Переключатель, поддерживающий два состояния и груп-
пировку. Группы таких переключателей пользователь видит как набор
135 бет
двоичных вариантов, из которых в определенный момент времени
может быть выбран только один.
• ViewFlipper. Группа представлений, позволяющая определить набор
элементов и горизонтальную строку, в которой одновременно может
выводиться только одно Представление. При этом переходы между
отображаемыми элементами осуществляются с помощью анимации.
• QuickContactBadge. Выводит на экран эмблему со значком, присвоен-
ным указанному контакту, используя такие данные, как номер телефона,
имя, адрес электронной почты или сайта. Нажатие значка приведет
к отображению панели, которая предоставляет различные варианты
для связи с выбранным контактом, включая звонок, SMS, электронную
почту и системы обмена мгновенными сообщениями (IM).
Это только некоторые из доступных виджетов. Android также поддерживает
несколько более продвинутых реализаций Представлений, включая элементы
для выбора даты и времени, поля ввода с автодополнением, карты, галереи
и вкладки. Чтобы получить более полный список доступных виджетов,
можете пройти по адресу http://developer.android.com/guide/tutorials/views/index.html.
Рано или поздно вы, как инновационный разработчик, столкнетесь с си-
туацией, когда ни один из существующих стандартных элементов управ-
ления не подойдет для решения задачи. Ниже в этой главе вы узнаете, как
расширять и комбинировать существующие элементы, а также научитесь
проектировать и создавать полностью новые виджеты с нуля.
