2011年1月22日土曜日

[Android] 画面の回転に反応するウィジットアプリケーションを作るには

How to Handle Orientation Changes in AppWidgets

ウィジットアプリケーションはホーム画面に常駐するアプリケーションです。
Activityと比べると様々な制約があります。
そのうちの一つに、Activityに実装されている画面を回転させるたびに呼ばれるメソッド(onConfigurationChanged)を備えていません。
ただし工夫次第で回転に反応させることはできます。

画面の回転に対応する前のソースです。
マニフェスト(AndroidManifest.xml)

レイアウト(res/layout/app_widget.xml)

appwidget-provider設定ファイル(res/xml/app_widget.xml.xml)
(resフォルダー配下に手動でxmlフォルダーを作ります)

ソース(AppWidget.java)


画面を回転するたびに、このウィジットアプリケーションの「TextView01」の表示内容を変化させます。2つの方法をあげてみます。

1.ブロードキャストレシーバーを使う
2.サービスを使う

1.ブロードキャストレシーバーを使う
この方法はAppWidget.javaのみを改造します。

これで回転するたびに表示内容を変えることができました。

2.サービスを使う
ServiceクラスはonConfigurationChangedメソッドを持っているので、Activityと同じように画面の回転に対応できます。
この方法はAppWidget.javaの改造ととマニフェストの追記が必要です。
マニフェスト(AndroidManifest.xml)

AppWidget.java

この改造も同じように回転するたびに表示内容が変わります。

キーワード
AppWidgetProvider onConfigurationChanged AppWidgetProvider onConfigurationChanged Intent.ACTION_CONFIGURATION_CHANGED

以上、参考になれば幸いです。

画面に天気予報を常駐させるウィジットアプリ「お天気ロイド
画面回転にも対応する「Eye元気!
どちらも公開中です

0 件のコメント:

コメントを投稿