Android 在所有屏幕上一致调整位图大小的简单方法是什么

Android 在所有屏幕上一致调整位图大小的简单方法是什么,android,image,bitmap,Android,Image,Bitmap,我的Android应用程序有标尺,无论大小或密度如何,都需要在所有屏幕上精确测量。标尺是我通过BitmapFactory设置为图像视图的可绘制资源 我最初的方法是将位图设置为一个图像视图,其相对layout\u width设置为固定的50mm(基本png的精确宽度),其比例类型为FIT\u CENTER 因为我发现Android的预缩放非常困难,所以我尝试通过在清单中声明Android:anyDensity=“true”并使用BitmapFactory选项inScaled=“false”来禁用此

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

我最初的方法是将位图设置为一个图像视图,其相对
layout\u width
设置为固定的50mm(基本png的精确宽度),其比例类型为
FIT\u CENTER

因为我发现Android的预缩放非常困难,所以我尝试通过在清单中声明
Android:anyDensity=“true”
并使用
BitmapFactory
选项
inScaled=“false”
来禁用此过程

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


上述方法已成功应用于几乎所有测试版设备。但在HTC Evo 4G上,统治者显得太大了。后者运行Android 2.3.5,是目前为止唯一报告的失败设备。

我的设备上的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();