[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
しかし、ああ、悩んだ……
同じことで悩んでいました。
謎が解けました!