在所有屏幕上始终如一地调整位图大小的简单方法是什么?

时间:2012-10-15 16:51:52

标签: android image bitmap

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

我最初的做法是将位图设置为图像视图,其相对layout_width设置为固定的50毫米(底层png的精确宽度),其比例类型为FIT_CENTER。< / p>

因为我发现Android的预扩展非常挫败,所以我尝试通过在清单中声明android:anyDensity="true"并结合使用BitmapFactory选项{{1}来禁用此过程}}

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

上述方法已在几乎所有经过beta测试的设备上成功运行。但在HTC Evo 4G上,统治者看起来太大了。运行Android 2.3.5的后一种设备是迄今为止唯一报告的失败。

1 个答案:

答案 0 :(得分: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();