widgetの作り方 | Androidちんたら開発室

widgetの作り方

以下はウィジェットの実装方法のメモ

とりあえずはガワだけ(アイコンのように表示されるだけ)のウィジェットについて


0.雛形作成
 いつものようにAndroidプロジェクト作成
 空のウィジェット(押しても処理が無い)ならActivityは作らなくてもいい



1.ウィジェット用xmlファイルを作成

 xmlフォルダをres以下に作成
 フォルダ内に適当な名前のxmlファイルを『リソースの種類:AppWidget Provider』で作成する
 雛形に以下を設定
 ここではtestwidget.resとする


<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android "
android:minWidth="72dip"
android:minHeight="72dip"
android:initialLayout="@layout/main"
android:updatePeriodMillis="0"
/>


 WidthとHeightはウィジェットのサイズ
 dipとは画面上でのウィジェットサイズを指定する単位
 画面を4×4で分割したセル座標系において

  dip=(セル数×74dip)-2dip

 らしい
 だから2x2ウィジェットではそれぞれ146dipになる


 initalLayoutはウィジェットの初期レイアウト
 ここではmail.xmlとした

 updatePeriodMillisは更新頻度(msec)→0は更新しない



2.ウィジェットクラスを作成

 src/以下に適当な名前のクラスを作成(.javaファイル)
 AppWidgetProviderを継承する
 ウィジェットを配置するだけなら処理をオーバーライドしなくても動作する


 import android.appwidget.AppWidgetProvider;
 public class TestWidgetProvider extends AppWidgetProvider { }



3.マニフェストファイルを変更
 AndroidManifest.xmlにウィジェットを登録する
 <application>の中に以下を追加


<receiver android:name=".TestWidgetProvider"
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/testwidget" />
</receiver>



4.実行
 アクティビティを作成しなかった場合は、実行しても何もおこらない(当然だが)
 ホームスクリーンを長押し→ウィジェットを選択すると
 ウィジェットリストの中に作ったウィジェットが追加されていることが分かる
 今回作った空のウィジェットは、1x1の中にlayout.xmlの内容が書かれたもの
 デフォルトならHellow~のハズ



注:

 (※実機デバッグなどでは、長押し→ウィジェット選択からウィジェットのリストが表示されるまで時間がかかる模様/待つべし)