очередь обработчик сообщений очередь onKeyPressed onTouch onTouch onCreate системные события cобытия пользователя • Все сообщения обрабатываются последовательно в порядке очереди • Длительная обработка сообщения приводит к блокировке всей очереди
интерфейс пользователя - создать xml-файл в папке res/ layout и определить в нем структуру интерфейса <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> </LinearLayout>
могут иметь экраны самого разного размера и плотности • Решение: • Верстать с использованием относительной компоновки за счет комбинирования разных Layouts • При необходимости предоставлять альтернативные ресурсы для разметки (layouts) • Использовать dp (dip) для указания размеров и позиций (ни в коем случае не px!) • Предоставлять альтернативные ресурсы для графики (drawables) • http://developer.android.com/guide/practices/screens_support.html
TextView textView = new TextView(context); • Явное создание путем использования LayoutInflater • Неявное создание View и связь с Activity во время вызова setContentView LinearLayout linearLayout = new LinearLayout(context); View view = inflater.inflate(R.layout.custom_view, null); setContentView(R.layout.activity_main);
• Android Framework содержит большое количество самых разнообразных View • Все View выделены в пакет android.widget http://d.android.com/reference/android/widget/package- summary.html • Далее мы рассмотрим наиболее интересные стандартные View, разбив их по группам: Views, Layouts, ScrollViews, AdapterViews
• TabLayout* • GridLayout • Используя различные комбинации стандартных Layouts, можно описать практически любой интерфейс • * - TabLayout создается на основе TabHost и TabWidget http://d.android.com/resources/ tutorials/views/hello-tabwidget.html
За это отвечают ViewGroups: ScrollView и HorizontallScrollView • ScrollViews поддерживают только один вложенный элемент • Для реализации скроллинга в двух направлениях HorizontallScrollView вкладывается в ScrollView
главный поток и очередь сообщений. Во многих случаях интефейс пользователя можно создать на основе стандартных View. При необходимости можно реализовать собственный View. ListView и другие AdapterViews являются особым случаем Views, требующими понимания процесса адаптирования данных. Резюме 37