[TIPS]IS01/LYNXのウィジェットのサイズ
2010年10月26日
Tweet
IS01/LYNXのappWidgetのサイズは、SHARP独自UIのおかげでandroid標準とは異なります。 IS01発売当時にはちらほらとウィジェットサイズの情報を見かけては「ほー、なるほど」と言う程度で見ていたのですが、いざ必要になって探すとなかなか見つからないものですねぇ・・・
当初、時間が経てば、もっと端末についての情報が色々沢山出てくるだろうと予想していたのですが・・・
と言うわけで、メモ
(短くするつもりだったのですが、長くなったので折りたたみ)
情報の出所は、アンドロイダーさんです。(アンドロイダーさんに感謝!!)
WEBページを探したのですが見つからないので、Ustreamに登録されている SHARP Androidアプリ開発テクニカルセッション 07/26/10 01:59AM の 1:16:30辺りを参照しました。
<appwidget-provider>タグで指定するウィジェットの1セルあたりの最小サイズは
android:minWidth="74dp"
android:minHeight="70dp"
実際のレイアウトで隙間無く使用できるサイズは
| 横(width) | 縦(height) | |
| LYNX | 78dip(118px) | 70dip(106px) |
| IS01 | 74dip(112px) | 74dip(112px) |
とのこと
実際にIS01で試してみました
IS01です。LYNXは実機を持って無いのでテスト出来ません(誰かお願いします><)
テスト方法は以下の様な1セル分(112px × 112px)の画像を表示するウィジェットを作り、いくつか並べて隙間や拡大縮小状況を確認すると言うもの。

<appwidget-provider>タグのファイルはこんな感じ
<?xml version="1.0" encoding="utf-8"?><br />
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"<br />
android:minWidth="74dp"<br />
android:minHeight="70dp"<br />
android:updatePeriodMillis="0"<br />
android:initialLayout="@layout/appwidget_provider" /><br />
レイアウトの大きさを74dpで指定した時
<?xml version="1.0" encoding="utf-8"?><br />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />
android:layout_width="74dp"<br />
android:layout_height="74dp"<br />
android:background="@drawable/test" /><br />
レイアウトの大きさを112pxで指定した時
<?xml version="1.0" encoding="utf-8"?><br />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />
android:layout_width="112px"<br />
android:layout_height="112px"<br />
android:background="@drawable/test" /><br />
レイアウトの大きさをfill_parentで指定した時
<?xml version="1.0" encoding="utf-8"?><br />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />
android:layout_width="fill_parent"<br />
android:layout_height="fill_parent"<br />
android:background="@drawable/test" /><br />
android:minWidth="74dp"の問題
先に紹介した通り、IS01/LYNXでは android:minWidth="74dp" が推奨されています。
が、これはandroid標準の推奨値 72dp(セル数×74dp-2dp)を超えている訳で、これを標準のエミュレータにウィジェットを貼り付けてみると面白いことが起こりました。
上の画像は8個のウィジェットを並べてあるものの横画面・縦画面です。
先の例の「レイアウトの大きさをfill_parentで指定した時」と同じウィジェットです。
そう、全部同じ設定のウィジェットなのですよ!
同じ設定にもかかわらず、上の4つが横に2セル割り当てられているのに対して、下の4つは1セルの割り当てです。不思議です。
実は、上の4つはエミュの画面を横にした状態で追加したウィジェットで、下の4つは画面を縦にした状態で追加したウィジェットです。 どうやら、画面の縦状態と横状態では、ウィジェットのセル割り当ての大きさが違っているようです。(Androidのソースを追いかければ何が起きてるのかわかるのかな?僕にはそんなスキル有りませんが)
結論?
LYNXの実機が無いので、何とも言えないのですが、Android標準・IS01・LYNXそれぞれに対応する為には、
<appwidget-provider>タグのサイズ指定は、minWidthはandroid標準の推奨値の方が小さいのでそちらに合わせて、minHeightはLYNXが一番小さいのでLYNXに合わせる。
android:minWidth="72dp"
android:minHeight="70dp"
レイアウトについては、<appwidget-provider>タグのサイズに合わせるか、fill_parentで縮尺はデバイスに任せてしまう。又は機種を判定して、それぞれ別々のレイアウトを割り当てる。
と言うのが、良いのかなぁ・・・と思いました。
愚痴
こう言う情報は、本来なら公式である SH Developers Square のようなサイトでSHARPさんが公開されるべきなんじゃないかと思います。
が、現在その公式サイトは更新は殆ど行われず、フォーラムも閑古鳥が鳴いている状態。 先のust動画の中の質疑応答の場面で参加者の方が「サイトの情報が少なすぎる」と突っ込まれていますが、まったく改善されていないのが現状です。 SHARPさん、残念です。
Category: 開発TIPS
TrackBack URL :




