RemoteViewsクラスとAppWidgetManagerクラスを使います。
実際に更新するのがAppWidgetManagerクラスの
updateWidgetApp()です。
が、残念なことに、こいつは本当に更新するだけのクラスです。
何を、どうする、という情報を直接書き換えることができません。
そのパイプとして存在するのが、RemoteViewsクラスです。
使い方を紹介します。
RemoteViews remoteViews =
new
RemoteViews(getPackageName(), R.layout.appwidget);
インスタンス生成はこのように行います。
どのパッケージ内にある、どのレイアウトを変更するか
というものを指定します。
どのレイアウト、というのはリソースのレイアウトフォルダ内にある
xmlの名前を示します。
RemoteViewsはたいがいの物なら更新できます。
remoteViews.setImageViewResource(R.id.ImageView01, R.drawable.img_01);
みたいな。
これは、xmlにImageViewがあると想定したパターンです。
そのViewにid[ImageView01]をセットします。
RemoteViewsではそのIDを取得することによって、値の変更が可能となります。
上の例はImageの変更ですが
他にもこんなにいろいろあります。
RemoteViewsで変更したいところを、いろいろセットし終えたら
ComponentName thisWidget = new ComponentName(context, widget.class);
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
みたいな感じで終わりです。
ComponentNameクラスは、Androidがこいつはどんなコンポーネントなんだ??
と判断するために用意されてるクラスらしいです。
コンポーネントって??
Activity, Service, BroadcastReceiverなどなど・・・。まぁ、種類の判断なんでしょうね。
どこまで細かく見るのかはわかりませんが。
0 件のコメント:
コメントを投稿