2011/09/18

AppWidgetにアイコンを表示させたいときは、大きめにするか、fill_parentにするのがよさそうだ

以前作ったAppWidgetのEjectSDは、アイコンを作り直そう。
そう思ってあれこれやっている。

まあ、デザインどうのこうのは、もうあきらめよう。センスの問題だ。
今気にしているのは、アイコンのサイズ。
これは技術でカバーできる話だ。

 

なにかというと、A500にAppWidgetを表示させた際、アイコンが小さくなってしまうのだ。
しかも、寄ってる。。。
これは確かに、イマイチといわれても仕方あるまい。


EjectSDは、おおきさが1x1だ。
本によると、1x1のAppWidgetは72x72[dp]とのこと。

dpは「density-independent pixel」ということで、とにかく160dpiの場合に1dp = 1pxという関係になるとのこと。
A500は、画面は広いけど160dpiだ。
リソースなら、res/drawable-mdpiを使うのかな。

そう思って、ldpi、mdpi、hdpiのためにそれぞれ36x36、48x48、72x72のアイコンを用意した。
が・・・アイコンは小さい。

じゃあ、とldpi、mdpi、hdpiをなくして、drawableに72x72pxのアイコンを作った。
が・・・これも小さい。
なんじゃこりゃ?


アイコンをどうやって表示させているかというと、ImageViewにsetImageViewResource()を使って貼り付けているだけだ。
ImageViewにサイズ指定なんてしてないのになあ、と思うと、ガイドラインがあった。

縦置き(portrait)と横置き(landscape)で違うのか・・・。
デザインについては、知っておかないといかんことがいろいろあるんだなぁ。

それはともかく、今は縦画面で確認しているので、AppWidgetとしては80x100pxだ。
作ったアイコンは、72x72だからこれよりも小さい。
そして小さいまま表示されるのだから、アイコンの拡大なんかはしないみたいだ。

では、大きいアイコンだったらどうなる?
512x512pxのアイコンにしてみると、AppWidget1つ分の枠にみっしり入って表示された。
横画面にしても、みっしりだ。
ということは、縮小はしてくれるらしい。
ImageViewの指定がwrap_contentだからか?

fill_parentにして72x72アイコンに戻すと、みっしり表示された。
なーんだ、そういうことか。
そんなわけで、AppWidgetにアイコンを表示させるときは、wrap_contentにしてアイコンを大きめに作って縮小してもらうか、fill_parentにしておくのがよさそうだ。
デザインのどこをいじるとどうなるかわかってないので、時間がかかって仕方がない。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。