大概算是第二或第三次寫 Android app 吧,碰到一個很怪的現象,在 WVGA (480x800解析度),以一張 100px 方圖,橫放四張,理論上應該還會剩 480px - 4*(100px) = 80px 左右的範圍,但實際上圖形就是顯示不對,整個 ImageView/ImageButton 所顯示的圖被放大了,沒有剩下的空間,請教同事後,同事說這是 px 轉換成 dp 問題,但他還是說不出個所以然,後來經測試發現,這個問題是因為我把圖檔擺在 res/drawable 目錄下(在 Android 2.3.3 SDK 下,此目錄預設不存在),但 WVGA 預設是用 res/drawable-hdpi ,所以,只要把圖擺在 res/drawable-hdpi 內則會顯示正常。
相關文件:
- http://developer.android.com/guide/practices/screens_support.html#terms
- px = dp * (dpi / 160)
- http://developer.android.com/guide/practices/screens_support.html#density-independence
- http://developer.android.com/guide/practices/screens_support.html#dips-pels
故,如果裝置是 hdpi 的,那圖擺在 drawable 的話,系統為了讓個裝置顯示的大小一致,所以會自動幫你做轉換,所以只要把圖擺在 drawable-hdpi 後,即可避開轉換,而得到解決。
沒有留言:
張貼留言