Главная » Разработка для Android » Сборка графического интерфейса – Android

0

 

Во фреймворке пользовательского интерфейса Android предоставляется и полный набор инструментов рисования, с помощью которых этот интерфейс строится, и богатая коллекция заготовленных компонентов, основанных на этих инструментах. Как будет показано, графические инструменты фреймворка обеспечивают широкую поддержку для приложений, в которых требуется создавать собственные элементы управления или отображать специфические виды. С одной стороны, многие приложения могут вполне качественно работать, используя только стандартные виды из инструментария. На самом деле классы MapActivity и MyLocationOverlay позволяют создавать самые изысканные приложения, и при этом вам самим не придется вообще ничего рисовать.

Пару раз мы уже употребляли термин «виджет», не объясняя, что это именно такое. Напомним, что экран отображается деревом компонентов. Во фреймворке пользовательского интерфейса Android все эти компоненты являются подклассами android, view.View. Виды, являющиеся «листьями» или почти «листьями», выполняют основную рисовальную работу, и в контексте пользовательского интерфейса приложения такие виды обычно именуются виджетами.

Внутренние узлы, иногда называемые контейнерными видами (container views), – это особые компоненты, которые обладают другими, дочерними компонентами. Во фреймворке пользовательского интерфейса Android контейнерные виды являются подклассами android. view. ViewGroup, а этот класс, в свою очередь, приходится подклассом View. Обычно здесь происходит достаточно мало рисования. Вместо этого контейнерные виды занимаются упорядочением своих дочерних видов на экране и сохранением их порядка по мере того, как вид изменяет контуры, ориентацию и т. д. Выполнять такие задачи бывает непросто.

Для создания сложных дисплеев вам потребуется собрать дерево контейнеров для видов, которые вы собираетесь использовать в своем приложении. В примере 7.1 показано приложение с деревом видов, глубиной в три уровня. Вертикальный линейный макет содержит два горизонтальных линейных макета. Каждый горизонтальный макет, в свою очередь, содержит два виджета.

Пример 7.1. Сложное дерево видов

Обратите внимание: в коде сохранена ссылка на корень дерева видов – для последующего использования.

В данном примере применяются три вида LinearLayout. Вид LinearLayout, как следует из его названия, отображает свои дочерние элементы в виде строки или столбца, это определяется свойством его ориентации. Дочерние виды отображаются в том порядке, в каком они добавлялись к LinearLayout (независимо от порядка, в котором они создавались), в привычном для европейского читателя направлении слева направо и сверху вниз. Например, кнопка Green (Зеленый) находится в правом нижнем углу этого макета, так как она была добавлена второй к горизонтальному виду Li nearLayout. Он, в свою очередь, является вторым элементом, добавленным к корневому виду Li nearLayout.

На рис. 7.2 показано, как все это увидит пользователь. Семь видов дерева структурированы так, как изображено на рис. 7.3.

Рис. 7.2. Как зритель видит панели

Рис. 7.3. Иерархия панелей вида

Во фреймворке Android хорошо организована возможность отделения ресурсов данных от кода. Она, в частности, полезна при построении компоновки видов. Предыдущий пример можно заменить радикально более простым кодом из примера 7.2 и XML-определением компоновки вида из примера 7.3.

Пример 7.2. Сложный вид, использующий файл разметки формы (layout resource)

Пример 7.3. XML-определение файла разметки формы сложного вида

В данной версии кода, как и в первой, также сохраняется ссылка на корень дерева видов. Это делается с помощью отметки виджета в XML-шаблоне (в данном случае речь о корневом LinearLayout) тегом android:id. После этого используется метод findViewByld класса Activity, получающий ссылку.

Рекомендуется определять компоновку дерева видов именно в таком файле разметки формы – лучше, если это войдет в привычку. Поступая так, вы отделяете визуальное представление вида от того кода, который заставляет его работать. Можно повозиться с компоновкой на экране, и для этого не требуется перекомпилировать код. Но важнее всего то, что вы сможете строить ваш пользовательский интерфейс при помощи таких инструментов, которые позволяют создавать экранные виды прямо в специальном визуальном редакторе пользовательских интерфейсов.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии