Главная » Разработка для Android » РЕАЛИЗАЦИЯ ЭКРАНА С ОСНОВНЫМ МЕНЮ

0

Вопросы, рассматриваемые в этом часе:

•             разработка дизайна экрана с основным меню;

•             реализация макета экрана с основным меню;

•             работа с элементами ListView;

•             работа с другими типами меню.

В этом часе вы узнаете о различных типах меню, доступных в операционной системе Android. Сначала вы создадите экран с основным меню для приложения «Been There, Done That!», используя новые элементы ListView и RelativeLayout. Затем вы познакомитесь с другими экранами, для которых могут подойти особые типы меню, например меню опций.

РАЗРАБОТКА ДИЗАЙНА ЭКРАНА С ОСНОВНЫМ МЕНЮ

Для создания экрана с основным меню вам понадобится сделать набросок того, как должен выглядеть этот экран. Если взглянуть на требования к этому экрану, вы увидите, что он должен обеспечивать основную навигацию по остальной части приложения. Пользователям доступны четыре различных варианта: они могут сыграть в игру, ознакомиться с се правилами, настроить параметры или просмотреть таблицу результатов. На рис. 8.1 представлен эскиз дизайна экрана с основным меню.

Рис. 8.1. Эскиз дизайна экрана с основным меню для приложения «Been There, Done That!»

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

Навигационный экран нужно снабдить какими-то «бантиками», делающими его привлека­тельным. Сначала вы будете использовать стандартное поведение для каждого элемента макета, а затем добавите специальный стиль к этим элементам. Например, можно добавить красивое фоновое изображение для всего экрана и отдельное для активного элемента списка.

Наконец, вы добавите бизнес-логику для элемента ListView, чтобы гарантировать, что при нажатии на элемент списка будет открыт соответствующий экран. Это позволит пользователям легко переходить на другие экраны, которые вам потребуется реализовать для приложения «Been There, Done That!».

Определение требований к экрану с основным меню

Теперь, когда вы знаете, как будет выглядеть ваш экран с основным меню, мы необходимо преобразовать эскиз дизайна в соответствующий дизайн- макет Вам потребуется обновить файл макета /res/layout/menu.xml. который используется в деятельности QuizMenuActivity. Для макета экрана с основным меню вам потребуется заголовок, за которым расположится элемент LisiView и затем элемент ImageView.

Создание заголовка экрана при помощи элемента управления RelativeLayout

Очевидно, что для отображения заголовка экрана можно использовать элемент TextView. Но для красоты можно добавить изображения по обе стороны от элемента TextView, не так ли? Самое время воспользоваться элементом-контейнером RelativeLayout, который позволяет расположить каждый дочерний элемент- представление в определенной позиции относительно родительского элемента-контейнера или других дочерних элементов-представлений. Таким образом, вы можете легко создать заголовок экрана при помощи элемента-контейнера RelativeLayout и трех дочерних элементов-представлений:

•             элемента ImageView, выровненного по левому верхнему углу родительского элемента-контейнера;

•             элемента TextView, выровненного по центру верхнего края родительского элемента-контейнера;

•             элемента ImageView, выровненного по правому верхнему углу родительского элемента-контейнера.

Добавление элемента ListView

Далее вы должны добавить в макет элемент ListView. Элемент ListView просто исполняет роль контейнера, который будет содержать список элементов View. По умолчанию ListView используется для размещения элементов TextView, однако элементы ListView могут содержать множество разнообразных элементов View.

Элемент ListView, содержащий элементы TextView, отлично подойдет для данного примера. Чтобы переопределить стандартное поведение для каждого элемента TextView, содержащегося в элементе ListView, вас потребуется определить ресурс макета, который будет служить шаблоном для каждого элемента TextView внутри элемента

ListView. Также вы можете сделать ваше меню более интересным, определив собственный разделитель и селектор для элемента ListView.

Завершающие штрихи для макета экрана с основным меню

Чтобы полностью завершить разработку макета экрана с основным меню, вы добавите элемент управления ImageView, расположив его за элементом управления ListView. Как и раньше, все элементы экрана необходимо поместить в элемент-контейнер LinearLayout с вертикальной ориентацией при этом элементы RelativeLayout, ListView и ImageView должны следовать друг за другом по вертикали. На рис. 8.2 проставлен дизайн экрана с основным меню.

Рис. 8.2. Дизайн экрана с основным меню для приложения «Been There, Done That!»

РЕАЛИЗАЦИЯ МАКЕТА ЭКРАНА С ОСНОВНЫМ МЕНЮ

Реализацию экрана с основным меню вы начнете с добавления новых ресурсов в проект. После этот вам потребуется обновить файл макета menu, xml, чтобы реализовать разрабо­танный дизайн-макет экрана с основным меню.

Добавление новых ресурсов в проект

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

Сначала вы добавите четыре новых графических ресурса в каталог /res/drawable: bkgrnd.jpg, divider.png, half.png и textured.png. В качестве фонового изображения для элемента-контейнера LinearLayout будет использован файл bkgrnd.jpg. В качестве разделителя и селектора для элемента ListView будут использованы файлы divider.png и textured.png соответственно. Для элемента ImageView, расположенного в нижней части экрана, будет использован файл half.png.

После этого вы добавите несколько новых и измените несколько существующих строковых ресурсов в файле /res/values/strings.xml, которые будут использованы для каждого пункта меню и для элемента TextView, представляющего заголовок экрана. Наконец, вы обновите ресурсы цветов в файле /res/menu/colors.xml, чтобы определить цвета, которые будут использованы для заголовка экрана, отображаемого при помощи элемента TextView, а также для элементов TextView, расположенных внутри элемента ListView. Кроме того, вам также понадобится обновить ресурсы в файле /res/values/dimens.xml, чтобы определить размеры для текста заголовка и для текста, отображаемого при помощи элемента Lis tView.

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

Сохранив файлы ресурсов, вы можете приступать к их использованию в макетах экрана с основным меню.

Обновление макетов экрана с основным меню

Возможно, вы уже заметили, что для экрана с основным меню используется множество файлов с ресурсами макета. Основной файл макета — menu, xml — определяет макет для всего экрана. Кроме того, вы также должны создать новый файл макета шаблона для каждого пункта в вашем элементе Lis tVi ew.

ОБНОВЛЕНИЕ ОСНОВНОГО МАКЕТА

Как и раньше, откройте редактор ресурсов в среде разработки Eclipse и удалите все существующие элементы из файла макета menu.xml. Затем выполните следующие шаги, чтобы создать желаемый макет экрана на основе заранее подготовленного дизайн-макета.

1.                                 Добавьте новый элемент-контейнер LinearLayout и присвойте его атри­буту background значение @drawable/bkgrnd. Все остальные элементы будут размещаться внутри данного элемента-контейнера LinearLayout.

2.                                 Добавьте элемент-контейнер RelativeLayout. Присвойте его атрибуту

layout_width значение wrap_content, а атрибуту layout_height — значение wrap_content.

3.                                 Добавьте элемент ImageView внутрь элемента-контейнера

RelativeLayout.                 Атрибутам     layout_alignParentLeft                   и

layout_alignParentTop этого элемента ImageView присвойте значение true. Атрибуту src присвойте значение @drawable/quizicon.

4.                 Добавьте элемент TextView, который будет использоваться для отобра­

жения заголовка экрана, внутрь элемента-контейнера RelativeLayout. Атрибутам text, textSize и textColor этого элемента TextView присвойте названия соответствующих ресурсов, которые вы создали чуть ранее. Затем присвойте атрибутам layout_centerHorizontal и layout_ alignParentTop значение true .

ЗНАЕТЕ ЛИ ВЫ. ЧТО… __________________________________________________

Чтобы «оживить» текст, отображаемый при помощи элемента TextView, вы можете использовать атрибуты для создания эффекта тени, включая атрибуты

shadowColor,shadowDx,shadowDy и shadowRadius.

5.                                 Завершите работу с элементом-контейнером RelativeLayout, добавив внутрь него еще один элемент ImageView. Атрибутам layout_align ParentRight и layout_alignParentTop этого элемента ImageView при­свойте значение true. Атрибуту src присвойте значение @drawable/quizicon.

6.                                 Теперь мы должны добавить второй элемент-контейнер RelativeLayout, который будет использоваться для размещения элементов ListView и ImageView. Начните с добавления нового элемента-контейнера RelativeLayout за пределами элемента-контейнера RelativeLayout, с которым мы работали до недавнего времени, но при этом новый элемент- контейнер RelativeLayout должен размещаться внутри существующего элемента- контейнера LinearLayout.

7.                                  Теперь добавьте последний элемент ImageView внутрь только что добав­ленного элемента-контейнера RelativeLayout. Присвойте его атрибуту src значение @drawable/half, а атрибутам layout_width и layout_height — значение fill_parent, чтобы гарантировать, что этот элемент займет все свободное пространство в нижней части экрана. Также присвойте его атрибуту layout_alignParentBottom значение true, а атрибуту scaleType – значение fitEnd, чтобы после масштабирования этот элемент управления по-прежнему оставался внизу экрана.

8.                                  Теперь добавьте элемент ListView с именем ListView_Menu непосредственно под элементом ImageView. Присвойте его атрибуту layout_width значение fill_parent, а атрибуту layout_height – значение wrap_content. Также присвойте атрибуту layout_alignTop значение true. Этот атрибут позволяет сделать так, чтобы элемент отображался над изображением.

После этого сохраните файл макета menu.xml.

ВНИМАНИЕ! ___________________________________________________________

Редактор ресурсов среды разработки Eclipse не отображает элементы ListView в режиме дизайна. Чтобы увидеть элемент ListView, используйте эмулятор Android. В данном случае редактор ресурсов не отражает реальный вид приложения.

Добавление макета шаблона элемента ListView

Теперь вам нужно создать новый файл макета /res/layout/menu_item.xml, который будет служить шаблоном для пунктов вашего элемента ListView.

В данном случае файл макета menu_item.xml будет содержать элемент TextView.

Для элемента TextView настраиваются все типовые атрибуты, за исключением одного атрибута — атрибута, который представляет текстовое значение этого элемента. Атрибут text будет автоматически заполняться элементом ListView. Пока вы можете настроить значения атрибутов textColor и textsize элемента TextView, используя ресурсы цветов и размеров, созданных ранее.

Содержимое файла menu_item.xml выглядит следующим образом:

<TextView

xmlns:android=http://schemas.android.com/apk/res/androidandroid:layout width=”fill parent” android:textSize=“@dimen/menu item size” android:text=“test string”

android:layout gravity=”center horizontal” android:layout height=”wrap content” android:shadowRadius=”5″ android:gravity=”center” android:textColor=”@color/menu color” android:shadowColor=”@color/menu glow” android:shadowDy=”3″ android:shadowDx=”3″ />

ЗНАЕТЕ ЛИ ВЫ. ЧТО… _________________________________________________

Чтобы увидеть, как выглядят атрибуты элемента TextView в редакторе ресур­сов среды разработки Eclipse, можно присвоить атрибуту text какую-либо тес­товую строку. В дальнейшем эта строка будет перезаписываться элементом ListView программным путем.

Теперь сохраните файл макета menu_item.xml.

РАБОТА С ЭЛЕМЕНТОМ LISTVIEW

Теперь вы должны открыть файл QuizMenuActivity.java. Вам нужно доработать элемент ListView. Во-первых, вам потребуется заполнить элемент ListView содержимым, а затем вам потребуется прослушивать события нажатий для отдельных пунктов элемента ListView и переправлять пользователя на соответствующий экран.

Заполнение элемента ListView

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

Сначала вы должны получить экземпляр элемента ListView сразу после вызова метода setContentview() в методе onCreate() вашей деятельности. Чтобы заполнить элемент ListView, вы должны получить экземпляр этого элемента, используя метод findViewByld (), как показано в следующем коде:

ListView menuList = (ListView) findViewById(R.id.ListView Menu);

Далее вам нужно определить значения типа string — они будут использованы для создания элементов TextView, которые будут добавлены в элемент ListView. В данном случае вы загрузите четыре строковых ресурса, представляющих пункты меню:

String[] items = { getResources().getString(R.string.menu item play), getResources().getString(R.string.menu item scores), getResources().getString(R.string.menu item settings), getResources().getString(R.string.menu item help) };

Теперь, когда вы получили экземпляр элемента ListView и определили данные, которые должны быть помещены в этот элемент, вам потребуется адаптер данных, чтобы сопоставить данные с созданным макетом шаблона (menu_item.xml). Выбор адаптера зависит от типа используемых данных. В данном случае вы будете использовать класс

ArrayAdapter:

ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu item, items);

Теперь вы должны сделать так, чтобы элемент ListView использовал этот адаптер:

menuList.setAdapter(adapt);

После этого вы можете сохранить файл QuizMenuActivity.java и запустить приложение «Been There, Done That!» на эмуляторе Android. После экрана- заставки появится экран с основным меню, который должен выглядеть примерно как на рис. 8.3.

Рис. 8.3. Экран с основным меню приложения «Been There, Done That!»

ЗНАЕТЕ ЛИ ВЫ, ЧТО… __________________________________________________

Если вы устали просматривать заставку при каждом запуске приложения, просто изме­ните файл AndroidManifestxrnl, чтобы по умолчанию пускалась деятельность QuizMenuActivity, пока вы не завершите отладку.

Как видите, экран с основным меню начинает приобретать форму. Тем не менее, нажатие по пунктам меню пока не приводят к желаемым результатам.

Прослушивание событий элемента ListView

Вы должны прослушивать и реагировать на определенные события, генерируемые элементом ListView. И хотя этот элемент может генерировать несколько различных событий, нас больше всего интересует событие, которое возникает в тот момент, когда пользователь нажимает на один из пунктов элемента Lis t Vi e w.

Чтобы прослушивать события, возникающие при нажатии по одному из пунктов элемента ListView, вам нужно использовать метод setOnltemClickListener () элемента ListView. В частности, необходимо реализовать метод onltemClick () , метод

класса AdapterView . OnltemClickListener, как показано ниже:

menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View itemClicked, int position, long id) {

TextView textView = (TextView) itemClicked; String strText = textView.getText().toString(); if (strText.equalsIgnoreCase(getResources().getString( R.string.menu item play))) { // Launch the Game Activity

startActivity(new Intent(QuizMenuActivity.this,

QuizGameActivity.class)); } else if (strText.equalsIgnoreCase(getResources().getString( R.string.menu item help))) { // Launch the Help Activity

startActivity(new Intent(QuizMenuActivity.this, QuizHelpActivity.class)); } else if (strText.equalsIgnoreCase(getResources().getString( R.string.menu item settings))) { // Launch the Settings Activity

startActivity(new Intent(QuizMenuActivity.this, QuizSettingsActivity.class)); } else if (strText.equalsIgnoreCase(getResources().getString( R.string.menu item scores))) { // Launch the Scores Activity

startActivity(new Intent(QuizMenuActivity.this, QuizScoresActivity. class));

}

}

});

В метод onItemClick() передается вся информацию, которая необходима для определения того, на какой пункт нажал пользователь. В данном случае один из наиболее простых способов — привести выбранный пользователем объект представления к элементу TextView (поскольку известно, что все пункты являются элементами TextVi ew, хотя вы можете дополнительно проверить это, используя оператор instanceof) и просто извлечь соответствующий элемент Text и сопоставить его с соответствующим экраном. Другой способ определить, на каком пункте нажал пользователь, — проверить атрибут id элемента View.

Теперь, реализовав метод OnitemClickListener () и перезапустив приложение на эмуляторе, вы можете использовать основное меню для перехода между экранами в приложении «Been There, Done That!».

Настройка внешнего вида элемента ListView

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

ЗНАЕТЕ ЛИ ВЫ, ЧТО… __________________________________________________

Если у вас есть экран с единственным элементом ListView, подумайте над возможно­стью использования класса ListActivity, который упрощает управление элементом ListView.

ДОБАВЛЕНИЕ ПОЛЬЗОВАТЕЛЬСКОГО РАЗДЕЛИТЕЛЯ

Разделитель элемента ListView отображается между отдельными пунктами данного элемента. В качестве значения атрибута divider можно указать либо ресурс цвета, либо графический ресурс. Если указан ресурс цвета, между элементами в списке будет отображаться горизонтальная линия (толщину этой линии можно настраивать). Если указан графический ресурс, между элементами и списке будет отображаться соответствующее изображение. По умолчанию перед первым элементом списка и после последнего разделитель не отображается.

ДОБАВЛЕНИЕ ПОЛЬЗОВАТЕЛЬСКОГО СЕЛЕКТОРА

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

Выполните самостоятельно__________________________________________

Чтобы установить разделитель для элемента ListView, просто откройте файл макета menu.xml и присвойте атрибуту divider элемента ListView значение @drawable/divider, представляющее графический ресурс (волнообразная линия желтого цвета), который вы добавили ранее.

Теперь установите пользовательский селектор для элемента ListView. Для этого просто откройте файл макета menu.xml и присвойте атрибуту listSelector элемента ListView значение @drawable/textured, пред­ставляющее графический ресурс (текстурированный ореол оранжевого цвета), который вы добавили ранее.

Рис. 8.4. Экран с основным меню приложения «Been There, Done That!», включая элемент ListView с измененным внешним видом

Если вы установите новый разделитель и селектор для элемента ListView, и перезапустите приложение «Been There, Попе That!» на эмуляторе, экран с основным меню будет выглядеть так, как показано на рис. 8.4.

РАБОТА С ДРУГИМИ ТИПАМИ МЕНЮ

Платформа Android предоставляет два других полезных типа меню:

•             Контекстное меню. Отображается на экране, когда пользователь совершает продолжительное нажатие любого объекта типа View. Этот тип меню зачастую используется вместе с элементами ListView, содержащими похожие элементы, например названия музыкальных композиций в списке воспроизведения. Пользователь может сделать продолжительное нажатие по названию композиции, чтобы получить доступ к контекстному меню с такими командами, как, например, Play (Воспроизве­сти). Delete (Удалить) и Add to Playlist (Добавить в список воспроизведения), для этой конкретной композиции.

•             Меню опций. Отображается на экране всякий раз, когда пользователь нажимает кнопку Menu на мобильном телефоне. Этот тип меню зачастую используется для предоставления пользователю возможности настройки параметров приложения и выполнения похожих операций.

Поскольку в этом часе мы работали над экраном навигации по приложению, давайте по­смотрим, на каких экранах можно было бы использовать перечисленные типы меню в приложении «Been There, Done That!». Текущая архитектура приложения позволяет легко интегрировать меню опций в игровой экран, позволяя пользователю приостановить процесс игры, быстро получить доступ к экранам с настройками приложения или помощи и затем вернуться обратно к игровому экрану.

Добавление меню опций на игровой экран

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

ДОБАВЛЕНИЕ РЕСУРСОВ МЕНЮ

Для вашего меню опций необходимо создать ресурс с определением меню в формате XML и сохранить его в каталоге ресурсов /res/menu в файле с именем gameoptions.xml.

Ресурс меню содержит тег <menu>, за которым следует несколько дочерних элементов <item>. Каждый элемент <item> представляет отдельный пункт меню и имеет ряд атрибутов. Ниже перечислены некоторые наиболее часто используемые атрибуты.

•             id — этот атрибут позволяем легко идентифицирован, отдельные пункты меню.

•             title — этот атрибут представляет строку, которая отображаем а для соответствующего пункта в меню опций.

[1]      icon — этот атрибут используется для указания графического ресурса, представляющего значок для соответствующего пункта меню.

Ваше меню опций будет содержать всего два пункта; Settings (Настройки) и Help (Помощь). Таким образом, в содержимом файла вашего ресурса меню gameoptions.xml нет ничего сложного:

<menu

xmlns:android=http://schemas.android.com/apk/res/android“> <item

android:id=“@+id/settings menu item” android:title=”@string/menu item settings”

android:icon=”@android:drawable/ic menu preferences”></item> <item

android:id=“@+id/help menu item” android:title=“@string/menu item help”

android:icon=”@android:drawable/ic menu help”></item>

</menu>

Для атрибута title каждого пункта меню опций вы указали те же строковые ресурсы, которые используются на экране с основным меню. Обратите внимание, что вместо добавления новых графических ресурсов для значков пунктов меню опций используются встроенные графические ресурсы из инструментария Android SDK, чтобы обеспечить согласованный внешний вид между различными приложениями.

ЗНАЕТЕ ЛИ ВЫ. ЧТО… __________________________________________________

Вы можете использовать встроенные графические ресурсы, доступные в классе android.R.drawable, точно так же, как вы используете ресурсы, включенные в пакет вашего приложения. Если вы хотите увидеть, как выглядит каждый из этих встроенных ресурсов, обратитесь к содержимому инструментария Android SDK, уста­новленного на вашем компьютере. В частности, найдите каталог /platforms, выберите соответствующую целевую платформу и откройте каталог /data/res/drawable.

ДОБАВЛЕНИЕ МЕНЮ ОПЦИЙ К ДЕЯТЕЛЬНОСТИ

Чтобы меню опций отображалось в тот момент, когда пользователь нажмет кнопку Menu, находясь на игровом экране, вы должны реализовать метод

onCreateOptionsMenu () в классе QuizGameActivity. В частности, вы должны создать (загрузить) меню опции из ресурса меню и установить соответствующий объект типа Intent для каждого меню. Вот пример реализации метода

onCreateOptionsMenu () для каждого класса QuizGameActivity:

@Override

public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);

getMenuInflater().inflate(R.menu.gameoptions, menu); menu.findItem(R.id.help menu item).setIntent(

new Intent(this, QuizHelpActivity.class)); menu.findItem(R.id.settings menu item).setIntent(

new Intent(this, QuizSettingsActivity.class)); return true;

}

ОБРАБОТКА СОБЫТИЯ ВЫБОРА ПУНКТА МЕНЮ

Чтобы обрабатывать ситуацию, когда пользователь открывает меню опций и выбирает некоторый пункт меню, необходимо реализовать метод onOptionsltemSelected () нужной деятельности. Например, вы можете запустить соответствующую деятельность, получив интент из пункта меню, как показано ниже:

@Override

public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsltemSelected(item); startActivity(item.getIntent());

return true;

}

ЗНАЕТЕ ЛИ ВЫ, ЧТО… __________________________________________________

ИТОГИ

Представленная реализация метода onOptionsltemSelected() работает как по­ложено. С технической точки зрения, если ваше меню будет использоваться исключи­тельно для запуска определенного интента, указанного посредством вызова метода setlntent(), реализовывать данный метод нет никакой необходимости. Тем не менее, если нужно добавить любую другую функциональность для каждого элемента Menultem, вам придется реализовать данный метод.

Итак, все готово: вы создали меню опций на игровом экране. Если вы сохраните класс и запустите приложение еще раз, вы увидите, что можно перейти на игровой экран, нажать кнопку Menu и использовать полнофункциональное меню опций (рис. 8.5).

Рис. 8.5. Игровой экран приложения «Been There, Done That!» с меню опций

Вы проделали большую работу. Экран с основным меню теперь полностью функционален, и вы освоили ключевые навыки разработки Android- приложений, включая использование новых элементов-контейнеров, например RelativeLayout, а также использование элемента с широкими возможностями ListView. Вы также познакомились с другими типами навигации, доступными в операционной системе Android, и реализовали меню опций на игровом экране.

ВОПРОСЫ И ОТВЕТЫ

Вопрос: В чем отличие между методом setOnClickListener() и методом setOnltemClickListener () элемента ListView?

Ответ: Метод setOnClickListener() позволяет прослушивать события нажатий по всей области элемента ListView. Метод setOnltemClick Listener() позволяет прослушивать события нажатий по конкретному элементу- представлению View внутри элемента ListView.

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

Ответ: Чтобы в элементе ListView по умолчанию подсвечивался определенный элемент списка, используйте метод setSelection().

ПРАКТИКУМ Контрольные вопросы

1.                           Верно ли это? Контекстные меню открываются при нажатии на кнопку Menu.

2.                           Какой механизм выступает в роли «связующего звена» между источником данных и элементом ListView?

A.                               База данных.

B.                                Интерполятор.

C.                                Адаптер данных.

3.                           Какой элемент-контейнер лучше всего подходит для выравнивания дочерних элементов View относительно родительского элемента?

A.                               RelativeLayout.

B.                                AbsoluteLayout.

C.                                LinearLayout.

4.                           Верно ли это? Использование класса ListActivity — это удобный способ построения экранов, которые представляют собой обычные элементы

ListView.

Ответы

1.                     Неверно. При нажатии на кнопку Menu открываются меню опций. Кон­текстные меню открываются, совершает продолжительное нажатие по любому элементу Vi ew.

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

3.                     Элемент-контейнер RelativeLayout особенно удобно применять в тех случаях, когда его дочерние элементы view должны быть выровнены по верхнему, нижнему, левому или правому краю или по центру родительского элемента- контейнера. Элемент-контейнер RelativeLayout также может быть использован для позиционировании дочерних элементов View относительно друг друга внутри родительского элемента-контейнера.

4.                     Верно. Класс ListActivity упрощает работу с элементами ListView.

 

Литература: Дэрси JI., Android за 24 часа. Программирование приложений под операционную систему Google/ ДэрсиЛ., КондерШ. — М.: Рид Групп, 2011. — 464 с. — (Профессиональные компьютерные книги). ISBN 978-5-4252-0318-2

По теме:

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