Жизненный цикл виджета начинается с определения представления виджета. Это представление сообщает Android о необходимости отображения названия виджета в списке выбора виджетов (см. ), вызываемого из домашнего экрана. Для завершения этого определения вам нужны две вещи: Java-класс, который реализует AppWidgetProvider, и контейнер компоновки виджета.
Определение виджета начинается со следующего элемента в файле манифеста Android, где указывается AppWidgetProvider (листинг ).
Это определение указывает, что существует Java-класс широковещательного приемника по имени BDayWidgetProvider (как вы у, он унаследован от класса ядра Android по имени AppWidgetProvider из пакета appwidget), принимающего широковещательные сообщения, которые предназначены для обновлений виджета.
На заметку! Android доставляет сообщения обновлений как широковещательные сообщения с частотой, основанной на заданном интервале времени.
Определение виджета в также указывает на XML-файл в подкаталоге /res/xml, который, в свою очередь, устанавливает представление виджета и частоту обновлений, .
Этот XML-файл называется информационным файлом поставщика виджетов приложений. Он идентифицирует ширину и высоту компоновки в dp и dp соответственно. Этот файл определения также устанавливает частоту обновлений в часов, переведенных в миллисекунды. Определение также указывает на файл компоновки (листинг ), который описывает внешний вид представления виджета ( ).
Начиная с SDK., пользователи имеют возможность изменять размеры виджета, находящегося на одном из изображений. Пользователь после длинного щелчка на виджете видит маркеры изменения размеров и с их помощью может изменять размеры. Разрешено изменение размеров по горизонтали (horizontal) и/или по вертикали (vertical) либо вообще никак (none). в, можно комбинировать horizontal и vertical для изменения размеров по обоим измерениям. Однако для этого элементы управления виджета должны быть скомпонованы так, чтобы они могли расширяться и сжиматься с использованием их параметров компоновки. Никаких обратных вызовов, позволяющих узнать текущий размер виджета, не предусмотрено. Обновление тоже не запускается — во всяком случае, в документации нет упоминаний об этом факте.
Атрибут изображения предварительного просмотра (android:previewImage) в задает изображение или значок, используемый для представления виджета в списке доступных виджето. Этот атрибут появился в версии SDK. (API ). Если опустить его, то стандартным поведением будет отображение главного значка пакета приложения, который задан в файле манифеста. Эмулятор кеширует изображение предварительного просмотра, даже если удалить и затем повторно установить пакет. Чтобы увидеть этот эффект, может понадобиться перезапуск эмулятора.
Компоновка для представлений виджета ограничена содержанием только определенных типов элементов представлений. Представления, разрешенные в компоновке виджета, относятся к классу представлений по имени RemoteViews, и в этих удаленных представлениях допустимы только определенные типы дочерних представлений. Некоторые из разрешенных элементов подчиненных представлений перечислены . Обратите внимание, что поддерживаются только указанные в классы, но не их подклассы.
С каждым новым выпуском ный список может расширяться. Основная причина ограничения перечня разрешенных элементов в удаленном представлении связана с тем, что эти представления отключены от процессов, которые в действительности ими управляют. Эти представления виджетов развернуты в таких приложениях, как домашний экран (Home). Контроллеры для этих представлений являются фоновыми процессами, вызываемыми по таймеру. Поэтому такие представления и называются удаленными (remote) представлениями. Для доступа к этим представлениям предусмотрен соответствующий Java-класс по имени RemoteViews. Другими словами, программисты не имеют прямого доступа к этим представлениям, чтобы вызывать их методы. Доступ к ним возможен только через RemoteViews (действующий подобно стражу на воротах).
Мы опишем соответствующие методы класса RemoteViews, когда будем рассматривать пример в следующем крупном разделе. А пока просто помните, что в файле компоновки виджета разрешен только ограниченный набор представлений .
Определение виджета (листинг ) также включает спецификацию активности конфигурирования, которая должна вызываться, когда пользователь создает экземпляр виджета. В эта активность конфигурирования называется ConfigureBDayWidgetActivity. Она подобна любой другой активности Android с набором полей формы. Поля формы используются для сбора информации, необходимой экземпляру виджета.
Опубликовал Kest
February 14 2015 13:51:56 ·
0 Комментариев ·
2218 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.