Добавление флажков и переключателей в меню
Для расширения функциональности в пункты меню возможно добавление флажков или переключателей.
Чтобы добавить флажок для отдельного элемента меню, необходимо использовать метод 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 внутри иерархии представлений операции и определяет собственный макет представлений. Разработчик может вставить фрагмент в макет операции двумя способами. Для этого следует объявить фрагмент в файле макета операции как элемент <fragment> или добавить его в существующий объектViewGroup в коде приложения. Впрочем, фрагмент не обязан быть частью макета операции. Можно использовать фрагмент без интерфейса в качестве невидимого рабочего потока операции.
Фрагменты впервые появились в Android версии 3.0 (API уровня 11), главным образом, для обеспечения большей динамичности и гибкости пользовательских интерфейсов на больших экранах, например, у планшетов. Поскольку экраны планшетов гораздо больше, чем у смартфонов, они предоставляют больше возможностей для объединения и перестановки компонентов пользовательского интерфейса. Фрагменты позволяют делать это, избавляя разработчика от необходимости управлять сложными изменениями в иерархии представлений. Разбивая макет операции на фрагменты, разработчик получает возможность модифицировать внешний вид операции в ходе выполнения и сохранять эти изменения в стеке переходов назад, которым управляет операция.
Фрагмент существует в контексте activity и имеет свой жизненный цикл, вне activity обособлено он существовать не может. Каждая activity может иметь несколько фрагментов.
Компонент Fragment находится в папке Layouts, что позволяет рассматривать его как контейнер. В то же время фрагмент обладает функциональностью активности (жизненный цикл, схожие методы и т.д.). Фрагмент существует в контексте activity и имеет свой жизненный цикл, вне activity обособлено он существовать не может. Каждая activity может иметь несколько фрагментов.
У фрагментов есть жизненный цикл, который во многом совпадает с жизненным циклом активности, внутри которой они находятся (см. рис).
Список дополнительных методов жизненного цикла фрагментов, которых нет у активности:
OnAttach(Activity)
Вызывается, когда фрагмент связывается с активностью. С этого момента мы можем получить ссылку на активность через метод getActivity()
OnCreate()
В этом методе можно сделать работу, не связанную с интерфейсом. Например, подготовитьадаптер.
Дата добавления: 2018-06-27; просмотров: 284; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!