2012-01-07 50 views
0

我正在使用Canvas.drawBitmap()在SurfaceView上繪製位圖。我在res/drawable文件夾中有位圖,它似乎正確地在所有設備上縮放位圖。
有些用戶抱怨說,當他們更改設備的屏幕密度時(使用名爲LCDDensity Changer的紮根程序),位圖不會相應地縮放。一個大的位圖會被擠壓,好像它仍然在尋找舊的密度。Android Apps中的密度

當用戶使用LCD Density Changer等程序時,是否有辦法處理密度變化?

其他信息:
1的minSdkVersion = 3
2.否targetSDKVersion設置
3.我使用getMetrics()來確定我不使用可提拉-HDPI屏幕的高度和寬度
4. ,ldpi等文件夾

+0

由於cha本機不支持設備密度,我認爲你不應該支持它。 – clemp6r 2012-01-07 21:10:11

回答

0

我在這裏有多個問題。我的目標是v1.5,並且我一直使用硬編碼常量作爲屏幕位置,而不包含邊界矩形。

我要去:
1.切換到2.2框架(其具有屏幕分辨率的兼容性更好和密度
2.使用「drawBitmap(位圖位圖,矩形SRC,DST矩形,塗料粉刷)」,而比「drawBitmap(Bitmap bitmap,float left,float top,Paint paint)」更好。這使我可以精確地指定我想要繪製圖形的位置,並且可以相應地縮放。
3.開始使用ldpi,hdpi,xhdpi等我也在考慮只使用hdpi文件夾,並允許其他設備縮小圖像(我不會使用xhdpi,因爲我在某處讀到它只支持薑餅2.3)

0

一種方法,我認爲你需要使用hdpi,ldpi等,下面是一篇關於如何做到這一點的文章。 Android densities

第二種方法,您可以使用DisplayMetrics類來獲取屏幕密度,併爲每個密度設置不同的圖像。這裏是關於get screen density的討論

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics);