【问题标题】:Density in Android AppsAndroid 应用程序中的密度
【发布时间】:2012-05-06 17:30:11
【问题描述】:

我正在使用 Canvas.drawBitmap() 在 SurfaceView 上绘制位图。我在 res/drawable 文件夹中有位图,它似乎可以在所有设备上正确缩放位图。
一些用户抱怨当他们改变设备的屏幕密度时(使用一个名为 LCDDensity Changer 的根程序),位图没有相应地缩放。一个大的位图会被压扁,就好像它仍在寻找旧的密度一样。

当用户使用 LCD Density Changer 等程序时,有没有办法处理密度变化?

其他信息:
1. minSDKVersion=3
2. 没有设置targetSDKVersion
3. 我使用 getMetrics() 来确定屏幕高度和宽度
4. 我没有使用drawable-hdpi、ldpi等文件夹

【问题讨论】:

  • 由于原生不支持改变设备密度,我认为你不应该支持。

标签: android screen


【解决方案1】:

一种方法,我认为你需要使用hdpi、ldpi等,这里有一篇关于如何做到这一点的文章。Android densities

第二种方法,您可以使用 DisplayMetrics 类以编程方式获得屏幕密度,并为每种密度提供不同的图像。这是关于get screen density的SO讨论

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

【讨论】:

    【解决方案2】:

    我在这里遇到了多个问题。我的目标是 v1.5,我一直在使用硬编码常量来表示屏幕位置,而不包括边界矩形。

    我要去:
    1.切换到2.2框架(对屏幕分辨率和密度有更好的兼容性
    2. 使用“drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)”而不是“drawBitmap(Bitmap bitmap, float left, float top, Paint paint)”。这使我可以准确地指定要在何处绘制图形,并将相应地缩放。
    3.开始使用ldpi、hdpi、xhdpi等文件夹。我也在考虑只使用 hdpi 文件夹并允许其他设备缩小图像。 (我不会使用 xhdpi,因为我在某处读到它仅在姜饼 2.3 中受支持)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 2015-09-26
      • 2019-07-14
      • 2011-05-22
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多