My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
Widget  
Создание виджета
Updated Jul 8, 2010 by [email protected]

Создание Виджета

Для реализации виджета необходимо создать xml, задающую объект AppWidgetProviderInfo (в котором будут храниться настройки виджета), класс, наследующий AppWidgetProvider (в котором будут реализованны функции виджета) и объявить виджет в AndroidManifest.xml.


AppWidgetProviderInfo

Xml с помощью которой задается объект 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
В полях minWidth и minHeight хранится минимальная ширина и высота виджета в density-independent pixels(dp). Для того что бы подсчитать размер виджета в нужной размерности можно воспользоваться формулой (74n - 2), где n - это колличество ячеек на экране андроида, которые будет занимать виджет.
  • updatePeriodMillis
Поле updatePeriodMillis означает период (в миллисекундах) через который виджет будет обновляться, т.е. будет запускаться метод onUpdate в классе AppWidgetProvider.
  • initialLayout
Поле initialLayout задает внешний вид андроида. Получается из ресурсов.
  • configure
Поле configure задает Activity, которое будет запущено сразу после того как пользователь установит виджет себе на рабочий стол. Это поле не обязательно.

AppWidgetProvider

Класс AppWidgetProvider наследует класс BroadcastReceiver. Т.е. виджет удобно использовать с помощью событий типа broadcast. Такими событиями, например, являются обновление, удаление, установление виджета на рабочий стол и удаление всех виджетов

  • onUpdate(Context, AppWidgetManager, int)
Метод onUpdate выполняется при возникновении события обновления, период возникновения этого события задается в настройках виджета. В первый раз выполняется сразу после того как пользователь установит виджет на рабочий стол(в том случае, если стартовое Activity не было указанно). Событие: ACTION_APPWIDGET_UPDATE.
  • onDeleted(Context, int)
Метод onDeleted выполняется при удалении виджета. Событие: ACTION_APPWIDGET_DELETED.
  • onEnabled(Context)
Метод onEnabled выполняется при установлении первого виджета на рабочий стол(при установлении новых сущностей данного виджета этот метод выплняться не будет). Событие: ACTION_APPWIDGET_ENABLED.
  • onDisabled(Context)
Метод onDisabled выполняется при удалении всех виджетов(в отличии от onDeleted, который вызывается после удаления каждого виджета). Событие: ACTION_APPWIDGET_DISABLED.
  • onReceive(Context, Intent)
В отличии от предыдущих методов метод 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
В блок intent-filter должны быть включены все события, которые будет отлавливать виджет.
  • meta-data
В поле meta-data должна быть указана xml по которой будет строиться объект AppWidgetProviderInfo.

Подробнее здесь: http://developer.android.com/guide/topics/appwidgets/index.html

Powered by Google Project Hosting