Главная » Разработка для Android » Использование разметки

0

Предпочтительный способ реализации разметки — использование XML- файлов в качестве внешних ресурсов. Любой такой файл должен содержать корневой элемент (узел), который, в свою очередь, может включать столько вложенных экземпляров разметки и Представлений, сколько необходимо для построения  любых сложных интерфейсов.

В листинге  4.3 показана  простая  вертикальная разметка  LinearLayout, которая помещает TextView  над элементом EditText.

Листинг 4.3. Простая  разметка LinearLayout в формате XML

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"

android:layout_width="fill_parent" android:layout_height="fill_parent">

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Enter Text Below"

/>

<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Text Goes Here!"

/>

</LinearLayout>

Обратите  внимание,  что для каждого элемента  разметки  вместо абсо- лютных значений  ширины  и высоты в пикселах  используются константы wrap_content и fill_parent. Это обеспечивает  мощный  механизм, благодаря  которому  экземпляры разметки  не зависят  от размера  и раз- решения  экрана.

Константа wrap_content задает Представлению минимальный размер, необходимый  для отображения содержимого  (например, высоту, которая нужна для вывода многострочного  текста). Константа  fill_parent рас- ширяет  Представление, чтобы оно заполнило все доступное пространство внутри родительского элемента (или экрана).

В листинге 4.3 разметка заполняет  весь экран, тогда как оба текстовых представления пытаются вытянуться во всю доступную ширину. Их высота ограничена размерами, необходимыми для отображения текста.

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

Реализация разметки  в виде XML-файлов ведет к отделению  уровня представления от логики, содержащейся в элементах управления и Активно- стях. Это также позволяет создавать разновидности разметки, предназначен- ные для конкретной  аппаратной  платформы, и загружать их динамически, без изменений в коде программы.

При необходимости (или по желанию) вы можете реализовать разметку в коде приложения. В таком случае, назначая  Представления для разметки, важно не забыть о параметрах LayoutParameters. Применить их можно с по- мощью метода setLayoutParams или во время вызова addView, как показано в листинге 4.4.

Листинг 4.4. Создание разметки  LinearLayout в коде программы

LinearLayout ll = new LinearLayout(this);

ll.setOrientation(LinearLayout.VERTICAL);

TextView myTextView = new TextView(this); EditText myEditText = new EditText(this);

myTextView.setText("Enter Text Below");

myEditText.setText("Text Goes Here!");

int lHeight = LinearLayout.LayoutParams.FILL_PARENT;

int lWidth = LinearLayout.LayoutParams.WRAP_CONTENT;

ll.addView(myTextView, new LinearLayout.LayoutParams(lHeight, lWidth)); ll.addView(myEditText, new LinearLayout.LayoutParams(lHeight, lWidth)); setContentView(ll);

Оптимизация разметки

Наполнение Активностей экземплярами разметки  довольно ресурсоем- кий процесс. Каждая новая вложенная разметка (или Представление) может кардинальным образом  повлиять на производительность и целостность приложений.

Рекомендуется использовать как можно более простые менеджеры ком- поновки. Избегайте создания полностью новой разметки  только лишь для того, чтобы внести небольшие изменения в уже существующую.

Приведем  рекомендации и нормативы  по созданию эффективной раз- метки, но имейте в виду, что они не исчерпывающие.

• Избегайте  излишней вложенности.  Не помещайте  одну разметку внутрь другой без необходимости.  Помещая  LinearLayout внутрь FrameLayout и присваивая обоим атрибут FILL_PARENT, вы не по- лучите ничего, кроме лишних затрат на заполнение. Обращайте внимание  на избыточность  разметки,  особенно при внесении  в нее существенных изменений.

• Старайтесь не использовать слишком много Представлений. Каждое дополнительное Представление в разметке отнимает время и ресурсы на создание. Разметка никогда не должна содержать  более 80 Пред- ставлений, иначе на ее заполнение  уйдет слишком много времени.

• Избегайте глубокой вложенности. Поскольку разметка поддерживает произвольный уровень вложенности,  можно легко создавать  слож- ные, глубоко разветвленные иерархии. И хотя нет никаких  жестких ограничений на этот счет, рекомендуется ограничивать вложенность максимум десятью уровнями.

Важно, чтобы вы оптимизировали разметку,  повышая  эффективность и избавляясь от избыточной вложенности.

Помогает в этом Android SDK, который содержит инструмент командной строки layoutopt. Чтобы проанализировать разметку и получить рекоменда- ции по ее исправлению и улучшению, вызовите команду layoutopt, передав ей в качестве параметров имя ресурса, содержащего разметку (или каталог с ресурсами).

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

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