2012-01-07 70 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);