AndroidのAppWidgetはXMLでサイズおよび適用するLayout.xmlを指定する必要があり、
端末の画面サイズに合わせた動的なサイズ調整が難しいと思っていた。

が、よく調べたら、
LayoutやDrawableのフォルダに適用できるsmall,middiam,largeなどの拡張子が、
XMLなどres/配下の他のフォルダにも適用できる事に気付いた。

加えて、android3.2~は画面の横幅に合わせて自由に設定できる、
sw400dp のような拡張子が使えるようになっていた。

上記のsw400dpをつけたフォルダは、端末の画面横幅が400dp以上の端末の場合に、
適用される事になる。

supporting Different Screen Sizes|Android Developers

たとえば、CliphWeatherの場合で言えば、
Galaxy S等横幅320dpの端末にフィットするWidgetを作っていたのだが、
Galaxy S3では横幅が360dpに広がっているので左右に変な隙間があいたレイアウトになってしまっていた。

そこで、
res/layout-sw360dp/widget-layout.xml
/xml-sw360dp/widget.xml

の様な形で横幅360dp以上の端末用のAppWidget定義とレイアウトXMLを置いてみた。

すると、ちゃーんと、
Galaxy S3で表示した場合だけ、
AppWidgetが適切に広がって表示されるようになった。

これは素晴らしい!

この様な実装を徹底することで、
さまざまなサイズの端末(タブレット含む)に一つのアプリで対応する事ができそうだ。

今日はちょっと実験してみただけなので、
ちゃんと実装したらまた考察を書きます。

以上。

 

One Response to Android AppWidget 画面サイズに合わせたWidgetサイズの適用

  1. mvpen より:

    はじめまして。
    こちらのアプリを弊社ユーザーさまにもお薦めしていますが、
    アンドロイド4.0で使用において、ホーム画面でSETTINGから、地域を選択しても
    ホーム画面がSETTINGの黒枠のまま、天気の表示が出来ませんでした。

    設定時に見落としている項目、解決方法などご教示いただけませんでしょうか?
    よろしくお願い致します。

コメントを残す

メールアドレスが公開されることはありません。