Главная » Разработка для Android » Виды разметки и Представлений, которые можно использовать в виджетах

0

Из соображений  безопасности  и производительности установлены не- которые ограничения при выборе видов разметки и Представлений для соз- дания пользовательского интерфейса виджета.

В целом следующие представления не могут быть использованы в раз- метке для виджетов (если вы все же попробуете их задействовать, то полу- чите исключение NullPointerException):

любые нестандартные Представления;

потомки разрешенных  Представлений;

EditText.

В настоящее  время  для виджетов  доступны  только следующие  виды разметки:

FrameLayout;

LinearLayout;

RelativeLayout.

Представления, которые в них можно хранить:

AnalogClock;

Button;

Chronometer;

ImageButton;

ImageView;

ProgressBar;

TextView.

Особенно полезными могут быть элементы TextView и ImageView. Позже в этой главе вы узнаете, как использовать ImageView в сочетании с ресурсом SelectionStateDrawable, чтобы создавать интерактивные виджеты с мини- мумом программного кода или вовсе без него.

В листинге  10.1 показан пример разметки,  которая  описывает  пользо- вательский интерфейс виджета.

Листинг 10.1. Ресурс разметки  для виджета в формате XML

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"

android:padding="10sp">

<ImageView android:id="@+id/widget_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon"

/>

<TextView android:id="@+id/widget_text" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Text Goes Here"

/>

</LinearLayout>

Определение настроек для виджета

Описание  ресурсов виджета хранится в формате XML внутри каталога res/xml вашего проекта.  Тег appwidget-provider позволяет  описывать метаданные  виджета, которые определяют  размер, разметку  и частоту об- новления с помощью нескольких  атрибутов.

initialLayout. Ресурс разметки, используемый для создания поль- зовательского  интерфейса виджета.

minWidth / minHeight. Минимальная ширина и минимальная вы- сота виджета соответственно (описывались в предыдущем разделе).

label. Название,  которое будет отображаться в меню выбора видже- тов.

updatePeriodMillis. Минимальный период между обновлениями виджета  (в миллисекундах). Android  будет выводить  устройство  из режима ожидания  для обновления вашего виджета  с этой частотой, поэтому вы должны  указать значение,  равное как минимум  одному часу. В идеале ваш виджет не должен использовать этот способ обнов- ления чаще, чем раз или два в день. Этот и другие способы обновления более подробно рассмотрены  ниже в данной главе.

configure. При желании  можете указать полноценную  Активность, которая загрузится в момент добавления  вашего виджета на домаш- ний экран.

В листинге 10.2 показан файл ресурсов, который описывает виджет размером 2 ? 2 ячейки, обновляющийся раз в час и использующий разметку, созданную в предыдущем разделе.

Листинг 10.2. Определение файла ресурсов для виджета

<?xml version="1.0" encoding="utf-8"?>

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialLayout="@layout/my_widget_layout" android:minWidth="146dp"

android:minHeight="146dp" android:label="My App Widget" android:updatePeriodMillis="3600000"

/>

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии