2014年1月4日土曜日

アンドロイド アスペクト比に悩む

正月が終わってしまう…
正月が…
いまだにギャラクシーの android2.2 のやつを使っているんですが、 これはアスペクト比が 5:3 なんですよね。 で、最近のスマートフォンの主流は 16:9 ということで、私の機種より若干横長になっているという…。 まあ、画面の大きいタブレットに関しては 5:3 より 4:3 に近いものが主流なんですけどね。 基本的に画面のインチ数が大きくなるほど 4:3 に近付いていく風潮のようです。

実機としてさっさと 16:9 のやつに買い変えたらいいのですが、 ちょっと名案を思いついたので、試してみました。 要するに一台のスマホで、異なるアスペクト比での画面表示を確認する方法です。

簡単な話で、Activity で行っている
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
あたりを削除してやればいいんですよね、 // を付けて。 これで、今まで消えていたタイトルバーとステータスバーが画面上部に出現するので、 おのずと表示領域の縦幅が狭くなり、横長のアスペクト比に変化するというわけです。

それで、試してみると案の定、あちこちおかしな画面表示になってしまっています。

上の図のレイアウトは中央部分をとにかく正方形になるように作図して、その余りで四隅の配置を行っています。 この方法だと、アスペクト比が変わっても中央部分はさすがに正方形のままですが、四隅の方は破綻してきます(潰れてしまう)。 ただし、一番下の画像(タイトルバーとステータスバー有)でもギリギリ耐えているのでまあよしとしましょう。

今度のパターンはやばいです。タイトルバーとステータスバー有のバージョンだと右下のステータス表示の一部が見えなくなっています。 私はよく横幅の1/20、みたいな形でフォントサイズを指定しているのですが、文字は横書きなのでレイアウトしやすいわけです。 しかし、このやりかただとアスペクト比によって縦に何行書くことができるか? というところで差異がでてくるわけです。 当然のことながら横長の画面であるほど縦に書ける行数は減ってしまいます。 今ならそう、冷静に分析することができますが作っているときはスッパリ意識していませんでした。 画面レイアウト事態を考え直さないといけない、ようです。

上記以外にもまずいところが複数見つかったので、随時訂正しました。致命傷みたいなのがなかったのは、サスガ今回が処女作じゃないだけの ことはありますが、それにしても android はメンドクサイっすねえ。

0 件のコメント:

コメントを投稿