Для начала создадим простой виджет изображенный на рисунке:
В Эклипсе создайте новый проект для Андроида:
File > new Project … > other … и выберите 'Android Project'
Назовите проект “Hello Widget” и выбирете в качестве платформы ‘Android 1.5’.
Снимите галку с чекбокса создания активити( “Create Activity”). Она просто не нужна для данного примера. Эклипс и плагин андроида создадут проект с стандартным содержимым( иконка приложения и т.п.).
Теперь необходимо разметить layout для виджета рабочего стола откройте main.xml и модифицируйте его так:
Такая разметка представляет собой простой линейный слой(linear layout) с вьевером TextView для отображения нашего сообщения на рабочем столе. На этом шаге получиться ошибка:
Error: No resource found that matches the given name (at 'background'
with value '@drawable/widget_bg_normal')
Из-за того что нет файла в ресурсах с именем widget_bg_normal, поэтому положите файл с именем widget_bg_normal.9.png в директорию res/drawable . Для этого примера можно использовать картинку из примера SimpleWiktionary . Это картинка в формате png с NinePatch(патч растягивает её до нужных размеров), для фона виджета.
Так же необходимо добавить строку @string/widget_text в ресурсы. Для этого откройте res/values/string.xml и добавте следующую строку:
Hello Widget!
Сам файл string.xml будет выглядеть так:
На этом дизайн виджета закончен.Hello Widget! Hello Widget
Теперь необходимо сообщить ОС о этом виджете, для этого откройте файл манифеста проекта AndroidManifest.xml.
Приведите его к такому виду(данные манипуляции можно совершить и через GUI плагина Андроида):
Теперь необходимо объявить Broadcast Receiver для “HelloWidget”.
Не забудьте точку перед HelloWidget, она создает полный правильный пусть объявленного пакета до указанного файл. Надпись HelloWidget для виджета в файле string.xml уже вставил плагин Андроида, когда мы создавали сам проект.
Из документации:
элемент должен включать элемент
с атрибутом android:name. Этот атрибут специфичен для класса AppWidgetProvider, и есть зарезервированные значения, например, ACTION_APPWIDGET_UPDATE для broadcast, который должен быть объявлен. AppWidgetManager автоматически посылает всем виджетам на столах broadcasts с помощью AppWidgetProvider при необходимости.
Мета-тег говорит android о провайдере виджета. В данном примере, провайдер виджета находиться в res/xml/hello_widget_provider.xml. Его содержимое такое:
Он содержит размеры вашего виджета. updatePerdiodMillis – время в миллисекундах для обновления виджета. В данном примере оно не важно потому что нет необходимости обновлять виджет.
Главная разметка виджета находиться в файле main.xml. Он уже размечен.
Для работы виджета не хватает только одной вещи,- класса виджета, который расширяет AppWidgetProvider, и который был объявлен в манифесте проекта AndroidManifest.xml в теге receiver-tag.
Создайте новый класс в проекте, назовите его HelloWidget и установите AppWidgetProvider как супер класс.
Главная разметка виджета находиться в файле main.xml. Он уже размечен.
Для работы виджета не хватает только одной вещи,- класса виджета, который расширяет AppWidgetProvider, и который был объявлен в манифесте проекта AndroidManifest.xml в теге receiver-tag.
Создайте новый класс в проекте, назовите его HelloWidget и установите AppWidgetProvider как супер класс.
Новый класс будет выглядеть так:
import android.appwidget.AppWidgetProvider; public class HelloWidget extends AppWidgetProvider { }
Так как виджет ничего не делает кроме отображения надписи, его можно уже запустить.
Нажмите:
project > Run As > Android Application
Это действие запустит Android Virtual Device (AVD) и установит виджет на устройство.
Теперь нажмите и удерживайте левую кнопку мыши на рабочем столе(речь идет о эмуляторе, а не реальном устройстве) пока не появиться всплывающее меню с действиями, Выберете виджеты и добавьте Hello Widget …
… и получите результат:
Комментариев нет:
Отправить комментарий