2011年3月31日木曜日

GlaxyTabでアプリを作った場合に黒枠がでちゃう問題+Canvasの謎

単純にどうにかしたいだけの場合

manifest.xmlに
<manifest>

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

</manifest>

って記述足せばok
単純にEclipseでmanifest.xml開いてManifestタブのManifestExtrasのAddでUsesSdk追加してmin SDK versionを4にしてもok(xmlは結局同じことになる)


で、さらに立ち入ってこの問題について調べてみた。
http://developer.android.com/intl/ja/guide/topics/manifest/supports-screens-element.html
このあたりに記述ある
どうもAPI Level4から

supports-screensの
 android:smallScreens
 android:normalScreens
 android:largeScreens
 android:anyDensity
このへんが全てtrueになってるってことらしい。
で、minSDKversionを指定せずに全てをtrueにして見た結果は上手くいかない。根本的にAPILevel4までは実装されてないってことっぽい?
しかし、2.1-update1を指定して作ったパッケージで上手くいきません。
supports-screeens直接指定しても特に変化がない。謎。
minSDKversionを変えるとそのAPILevelにしたがって設定されるが手動指定は不可能って状態?

2.1-update1のみで試したので他のバージョンはどうなるか不明


さらに謎現象があって
APILevelを指定せずにBitmapデータからCanvas作って色々描いたりする場合のCanvasのサイズがおかしくなる。何故か1.5倍にされる。
定数で描画している処理等はズレます。

ついでにメモリかつかつで開発してるとGalaxyTabに対応しようとしたら落ちるってクソみたいな展開が予想されます。(っていうかなりました・・・。

回避するならCanvas使う描画時にBitmapからCanvas作る前にCanvasのサイズを指定して生成しておくって感じになるのかなぁ。
リファレンスに何か書いてあるかも。英語なので全部読むのメンドクサイ・・・いつかちゃんと読みます。