2011年10月9日日曜日

・ ウィジェットの情報更新。

ウィジェットの情報をJava側から書き換える方法。

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 件のコメント:

コメントを投稿