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~のハズ
注:
(※実機デバッグなどでは、長押し→ウィジェット選択からウィジェットのリストが表示されるまで時間がかかる模様/待つべし)