Добавление флажков и переключателей в меню



Для расширения функциональности в пункты меню возможно добавление флажков или переключателей.

Чтобы добавить флажок для отдельного элемента меню, необходимо использовать метод setCheckable():

MenuItem item = menu.add(0, IDM_FORMAT_BOLD, 0, "Bold") item.setCheckable(true);

Если есть необходимость добавить несколько пунктов меню с флажками или радиокнопками, целесообразно объединять их в группы меню.

Группа меню определяется идентификатором (целым числом). Пункт меню можно добавить к группе, используя один из вариантов метода add(), передав ему в качестве первого параметра идентификатор группы меню.

В метод setGroupCheckable() передаются три параметра:

r первый — идентификатор группы меню;

r второй — true, если в группе разрешены переключатели или флажки;

r третий — устанавливает единственный (true) или множественный (false) выбор

пунктов меню. Этот параметр фактически определяет внешний вид меню — с радиокнопками или с флажками. Для управления состоянием флажков и переключателей необходимо написать дополнительный код в обработчике события выбора пункта меню.

Существует еще один способ создания меню — определение структуры меню в XML-файле.

В XML-файле меню есть три элемента:

r <menu>— корневой элемент файла меню;

r <group>— контейнерный элемент, определяющий группу меню;

r <item>— элемент, определяющий пункт меню.

Элементы <item>и <group>могут быть дочерними элементами <group>. Конечно,

корневой узел любого файла должен быть элементом меню.

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

В Android существуют три типа меню:

Меню опций – главное меню для activity, которое появляется, когда пользователь нажимает кнопку MENU

Контекстное меню – всплывающее меню, которое появляется,  когда пользователь нажимает и удерживает компонент экрана, для которого зарегистрировано контекстное меню.

Подменю - всплывающее меню.которое появляется, когда нажимает элемент меню,  содержащее вложенной меню.

Создание ресурса меню.

Не рекомендуется создавать меню программно. Вместо этого нужно описывать меню и его компоненты в XML – файле ресурса меню.затем загружать его в программном коде.

Для создания ресурса меню нужно создать XML – файл в каталоге проекта res/menu/ и построить меню с помощью следующих элементов.

menu –  задает объект Menu, который является контейнером для элементов мен. Элемент menu должен быть корневым узлом файла и может содержать один или более элементов item и group.

item – создает объект MenuItem, который представляет собой отдельный пункт меню. Этот элемент может содержать вложенный элемент menu для создания подменю.

group–опциональный невидимый контейнер для элементов item. Позволяет группировать пункты меню, так что они имеют одинаковые свойства, например активное состояние и видимость.

 

 

14. Activity.

Activityпредставляетсобойпользовательскийинтерфейсдляодногодействия,котороепользовательможетсовершить.Например,приложениедляобменатекстовымисообщениямиможетиметьодноActivityдляотображенияспискаконтактов,другое–длянаписаниясообщениявыбранномуконтакту,третье–дляпросмотрасообщенийиещеоднодляизменениянастроек.ВсеэтиActivitiesформируютединыйпользовательскийинтерфейс,нонезависятдруготдруга.

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

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

Activityможетнаходитьсяводномизтрехсостояний:

· ActiveилиRunning–находитсянапереднемпланеиимеетфокусдлявзаимодействияспользователем.

· Paused–потерялофокус,новсеещевиднопользователю.СверхунаходитсядругоеActivity,котороеилипрозрачноилизакрываетневесьэкран.ПриостановленноеActivityполностью"живое"(егосостояниесохранено),номожетбытьуничтоженосистемойвслучаенехваткипамяти.

· Stopped–полностьюперекрытодругимActivity.Онобольшеневиднопользователюибудетуничтоженосистемой,когдапонадобитсяпамять.

ЕслиActivityприостановленоилиостановлено,системаможетудалитьегоизпамяти,либопослатьзапроснаегозавершение,илипростоуничтожитьегопроцесс.КогдаActivityсноваотображаетсяпользователю,егосостояниеполностьювосстанавливается.

Переходяотсостоянияксостоянию,Activityуведомляетобэтом,вызываяследующиеметоды:

· voidonCreate()

· voidonStart()

· voidonRestart()

· voidonResume()

· voidonPause()

· voidonStop()

· voidonDestroy()

ФРАГМЕНТЫ

Фрагмент (класс Fragment) представляет поведение или часть пользовательского интерфейса в операции (класс Activity). Разработчик может объединить несколько фрагментов в одну операцию для построения многопанельного пользовательского интерфейса и повторного использования фрагмента в нескольких операциях. Фрагмент можно рассматривать как модульную часть операции. Такая часть имеет свой жизненный цикл и самостоятельно обрабатывает события ввода. Кроме того, ее можно добавить или удалить непосредственно во время выполнения операции.

Фрагмент всегда должен быть встроен в операцию, и на его жизненный цикл напрямую влияет жизненный цикл операции. Например, когда операция приостановлена, в том же состоянии находятся и все фрагменты внутри нее, а когда операция уничтожается, уничтожаются и все фрагменты. Однако пока операция выполняется (это соответствует состоянию возобновленажизненного цикла), можно манипулировать каждым фрагментом независимо, например добавлять или удалять их. Когда разработчик выполняет такие транзакции с фрагментами, он может также добавить их в стек переходов назад, которым управляет операция. Каждый элемент стека переходов назад в операции является записью выполненной транзакции с фрагментом. Стек переходов назад позволяет пользователю обратить транзакцию с фрагментом (выполнить навигацию в обратном направлении), нажимая кнопкуНазад.

Когда фрагмент добавлен как часть макета операции, он находится в объекте ViewGroup внутри иерархии представлений операции и определяет собственный макет представлений. Разработчик может вставить фрагмент в макет операции двумя способами. Для этого следует объявить фрагмент в файле макета операции как элемент &lt;fragment&gt; или добавить его в существующий объектViewGroup в коде приложения. Впрочем, фрагмент не обязан быть частью макета операции. Можно использовать фрагмент без интерфейса в качестве невидимого рабочего потока операции.

Фрагменты впервые появились в Android версии 3.0 (API уровня 11), главным образом, для обеспечения большей динамичности и гибкости пользовательских интерфейсов на больших экранах, например, у планшетов. Поскольку экраны планшетов гораздо больше, чем у смартфонов, они предоставляют больше возможностей для объединения и перестановки компонентов пользовательского интерфейса. Фрагменты позволяют делать это, избавляя разработчика от необходимости управлять сложными изменениями в иерархии представлений. Разбивая макет операции на фрагменты, разработчик получает возможность модифицировать внешний вид операции в ходе выполнения и сохранять эти изменения в стеке переходов назад, которым управляет операция.

Фрагмент существует в контексте activity и имеет свой жизненный цикл, вне activity обособлено он существовать не может. Каждая activity может иметь несколько фрагментов.

Компонент Fragment находится в папке Layouts, что позволяет рассматривать его как контейнер. В то же время фрагмент обладает функциональностью активности (жизненный цикл, схожие методы и т.д.). Фрагмент существует в контексте activity и имеет свой жизненный цикл, вне activity обособлено он существовать не может. Каждая activity может иметь несколько фрагментов.

У фрагментов есть жизненный цикл, который во многом совпадает с жизненным циклом активности, внутри которой они находятся (см. рис).

Список дополнительных методов жизненного цикла фрагментов, которых нет у активности:

OnAttach(Activity)

Вызывается, когда фрагмент связывается с активностью. С этого момента мы можем получить ссылку на активность через метод getActivity()

OnCreate()

В этом методе можно сделать работу, не связанную с интерфейсом. Например, подготовитьадаптер.


Дата добавления: 2018-06-27; просмотров: 284; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!