Widget
Создание виджета
Создание ВиджетаДля реализации виджета необходимо создать xml, задающую объект AppWidgetProviderInfo (в котором будут храниться настройки виджета), класс, наследующий AppWidgetProvider (в котором будут реализованны функции виджета) и объявить виджет в AndroidManifest.xml. AppWidgetProviderInfoXml с помощью которой задается объект AppWidgetProviderInfo будет иметь такой вид: <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="76dp" android:minHeight="76dp" android:updatePeriodMillis="60000" android:initialLayout="@layout/initial_widget" android:configure="com.example.android.ExampleAppWidgetConfigure"/>
В полях minWidth и minHeight хранится минимальная ширина и высота виджета в density-independent pixels(dp). Для того что бы подсчитать размер виджета в нужной размерности можно воспользоваться формулой (74n - 2), где n - это колличество ячеек на экране андроида, которые будет занимать виджет.
Поле updatePeriodMillis означает период (в миллисекундах) через который виджет будет обновляться, т.е. будет запускаться метод onUpdate в классе AppWidgetProvider.
Поле initialLayout задает внешний вид андроида. Получается из ресурсов.
Поле configure задает Activity, которое будет запущено сразу после того как пользователь установит виджет себе на рабочий стол. Это поле не обязательно. AppWidgetProviderКласс AppWidgetProvider наследует класс BroadcastReceiver. Т.е. виджет удобно использовать с помощью событий типа broadcast. Такими событиями, например, являются обновление, удаление, установление виджета на рабочий стол и удаление всех виджетов Метод onUpdate выполняется при возникновении события обновления, период возникновения этого события задается в настройках виджета. В первый раз выполняется сразу после того как пользователь установит виджет на рабочий стол(в том случае, если стартовое Activity не было указанно). Событие: ACTION_APPWIDGET_UPDATE. Метод onDeleted выполняется при удалении виджета. Событие: ACTION_APPWIDGET_DELETED.
Метод onEnabled выполняется при установлении первого виджета на рабочий стол(при установлении новых сущностей данного виджета этот метод выплняться не будет). Событие: ACTION_APPWIDGET_ENABLED.
Метод onDisabled выполняется при удалении всех виджетов(в отличии от onDeleted, который вызывается после удаления каждого виджета). Событие: ACTION_APPWIDGET_DISABLED.
В отличии от предыдущих методов метод onReceive отлавливает не какое-то конкретное событие, а все возможные. Можно добавить свое событие и отлавливать его в этом методе. AndroidManifest.xmlОбъявление должно выглядеть таким образом: <receiver android:name=".view.Widget" android:label="@string/app_name"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_provider"/> </receiver>
В блок intent-filter должны быть включены все события, которые будет отлавливать виджет.
В поле meta-data должна быть указана xml по которой будет строиться объект AppWidgetProviderInfo. Подробнее здесь: http://developer.android.com/guide/topics/appwidgets/index.html |