[Android]Androidのバージョンによって画面サイズ制限あるみたい

2時間も潰してしまったのでメモ。

いつものようにSurfaceViewを使って描画しようとしたら、全画面表示なのにどうもボケる。setAntiAlias(false)してもボケる。おかしい!気持ち悪い!

AVDでWVGA800の端末を作って実行したら、アクティビティが画面全体に表示されない!なにこれ!気持ち悪い!

当然、SurfaceViewのgetWidth()とgetHeight()を見ると、画面より小さなサイズになってる。Nexus Oneで実行してみると、アクティビティは画面全体に表示されてるものの、SurfaceViewのサイズが320×508とか全然小さくて、それが拡大されて表示されている様子。

悩みまくった挙句、もしや、と思ってAndroidManifest.xmlに…

<uses-sdk android:minSdkVersion="4" />

を追加したら、ちゃんと全画面表示になってSurfaceViewのサイズもピクセルレベルで正しくなりました!

APIのバージョンによって画面の大きさも制限があるんですね。minSdkVersionが3以下、つまりAndroid 1.5までは画面サイズが横幅320にしかならないのです。その方向で調べてみたら、素晴らしい情報が見つかりました。

http://groups.google.co.jp/group/android-group-japan/browse_thread/thread/f8ff1fdb8afb52af?hl=ja#

Android 1.5までは、HVGA(320×480)のサポートのみと。1.6で初めて、全ての解像度に対応。2010年8月現在、Android1.5端末は15%ほど残っているみたいですが、これを踏まえるともう1.5以下は切り捨てでよさそう。

http://developer.android.com/resources/dashboard/platform-versions.html

しかし、ああ、悩んだ……

1件のコメント

  1. 同じことで悩んでいました。
    謎が解けました!

コメントを残す

メールアドレスが公開されることはありませんし、空欄で大丈夫です。っていうかコメント以外空欄で良いです。気軽にコメントして下さい。
Email won't be published. Or you can leave it blank. I mean you can leave everything blank but comment. Feel free to leave a comment, thanks.