我的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的后一种设备是迄今为止唯一报告的失败。
答案 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();