3

我的 Android 应用程序有需要在所有屏幕上准确测量的尺子,无论大小或密度如何。标尺是我通过设置为图像视图的可绘制资源BitmapFactory

我最初的方法是将位图设置为一个图像视图,其相对layout_width值设置为固定的 50mm(底层 png 的精确宽度),其比例类型为FIT_CENTER.

因为我发现 Android 的预缩放非常令人沮丧,所以我尝试通过android:anyDensity="true"在清单中声明并结合使用BitmapFactoryoption来禁用此过程inScaled = "false"

我使用的标尺位图是 320dpi png,所有尺寸均为 50 毫米宽。我的想法是提供一个高分辨率图像,该图像可以很容易地缩小到低密度屏幕上所需的确切宽度。

上述方法已在几乎所有经过 Beta 测试的设备上成功运行。但在 HTC Evo 4G 上,标尺显得太大。后者运行 Android 2.3.5 的设备是迄今为止唯一报告的失败。

4

1 回答 1

0

我的设备上的 Android 2.3.5 也有同样的问题,通过手动重新缩放所有图像来解决。我的图像是在运行时设置到 ImageView 中的,所以以前重新缩放图像对我来说不是问题。

byte[] icon = Icon.getIcon(mContext.getFilesDir());
        Bitmap bitmap = BitmapFactory.decodeByteArray(icon, 0, icon.length);
        int width = LicenseDialog.convertDpToPx(mContext, 48);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        Bitmap.createScaledBitmap(bitmap, width, width, true).compress(CompressFormat.PNG, 100, stream);
        icon = stream.toByteArray();
于 2012-10-26T15:17:26.180 回答