1page.title=Обзор пользовательского интерфейса
2@jd:body
3
4
5<p>Все элементы интерфейса пользователя в приложении Android создаются с помощью объектов {@link android.view.View} и
6{@link android.view.ViewGroup}. Объект {@link android.view.View} формирует
7на экране элемент, с которым пользователь может взаимодействовать. Объект {@link android.view.ViewGroup} содержит
8другие объекты {@link android.view.View} (и {@link android.view.ViewGroup}) для
9определения макета интерфейса.</p>
10
11<p>Android предоставляет коллекцию подклассов {@link android.view.View} и {@link
12android.view.ViewGroup}, которая включает в себя обычные элементы ввода (такие как кнопки и текстовые
13поля) и различные модели макет (такие как линейный или относительный макет).</p>
14
15
16<h2 id="Layout">Макеты пользовательского интерфейса</h2>
17
18<p>Пользовательский интерфейс для каждого компонента вашего приложения определяется с помощью иерархии объектов {@link
19android.view.View} и {@link android.view.ViewGroup}, как показано на рисунке 1. Каждая группа просмотра
20представляет собой невидимый контейнер, в котором объединены дочерние виды, причем дочерние виды могут представлять собой элементы
21ввода или другие виджеты, которые
22составляют часть пользовательского интерфейса. Эта древовидная иерархия может быть настолько простой или сложной, насколько
23требуется (чем проще, тем лучше для производительности).</p>
24
25<img src="{@docRoot}images/viewgroup.png" alt="" />
26<p class="img-caption"><strong>Рисунок 1</strong>. Иллюстрация иерархии, которая определяет
27макет интерфейса.</p>
28
29<p>Чтобы объявить свой макет, можно создать экземпляры объектов {@link android.view.View} в коде и запустить построение
30дерева, но самый простой и наиболее эффективный способ — определение макета с помощью файла XML.
31XML позволяет создавать удобочитаемую структуру макета, подобно HTML.</p>
32
33<p>Имя элемента XML для вида соответствует классу Android, к которому от относится. Так, элемент
34<code>&lt;TextView&gt;</code> создает виджет {@link android.widget.TextView} в пользовательском интерфейсе,
35а элемент <code>&lt;LinearLayout&gt;</code> создает группу просмотра {@link android.widget.LinearLayout}
36. </p>
37
38<p>Например, простой вертикальный макет с текстом и кнопкой выглядит следующим образом:</p>
39<pre>
40&lt;?xml version="1.0" encoding="utf-8"?>
41&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
42              android:layout_width="fill_parent"
43              android:layout_height="fill_parent"
44              android:orientation="vertical" >
45    &lt;TextView android:id="@+id/text"
46              android:layout_width="wrap_content"
47              android:layout_height="wrap_content"
48              android:text="I am a TextView" />
49    &lt;Button android:id="@+id/button"
50            android:layout_width="wrap_content"
51            android:layout_height="wrap_content"
52            android:text="I am a Button" />
53&lt;/LinearLayout>
54</pre>
55
56<p>При загрузке ресурсов макетов в приложение Android инициализирует каждый узел макета в
57объект режима выполнения, который можно использовать для определения дополнительного поведения, запроса состояния объекта или изменения
58макета.</p>
59
60<p>Полное руководство по созданию макета пользовательского интерфейса см. в документе <a href="declaring-layout.html">Макеты
61XML</a>.
62
63
64<h2 id="UIComponents">Компоненты пользовательского интерфейса</h2>
65
66<p>Не обязательно создавать все элементы пользовательского интерфейса с помощью объектов {@link android.view.View} и {@link
67android.view.ViewGroup}. Android предоставляет несколько компонентов приложений, которые содержат
68стандартный макет пользовательского интерфейса, где остается лишь определить содержимое. Каждый из этих компонентов пользовательского интерфейса
69содержит уникальный набор API, который описан в соответствующих документах, таких как <a href="{@docRoot}guide/topics/ui/actionbar.html">Строка действий</a>, <a href="{@docRoot}guide/topics/ui/dialogs.html">Диалоги</a> и <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Уведомления о состоянии</a>.</p>
70
71
72