Android画布比导入的图像大50%

时间:2014-03-17 22:37:21

标签: android canvas

当我使用来自可绘制资源的BitmapFactory.decodeResources生成的位图创建Canvas时,该资源是400 x 400像素的png图像文件,Canvas的高度和宽度不是400而是600! 在下面的代码中,drawable资源wind_scale是我用PHP生成的400 x 400图像的png文件。

    Bitmap workingBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.wind_scale, options);
    Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
    Canvas mCanvas = new Canvas(mutableBitmap);
    int mHeight = mCanvas.getHeight(); int mWidth = mCanvas.getWidth(); both 600!!!!

预计会出现这种情况吗?如果是这样,为什么会增加50%?

2 个答案:

答案 0 :(得分:0)

我不是100%肯定这里的问题,但它与另一个SO问题类似(Getting weird font size after setting it programmatically)。问题也存在50%的差异,这是由于sp单位与OP设备上的像素进行比较,屏幕密度比为1.5。

您可以查看BitmapFactory.Options;有几个尺度和密度标志可能会有所帮助。我最好的猜测是图像正在为设备缩放,这导致测量不匹配。

答案 1 :(得分:0)

Canvas它与位图大小无关,但与设备可用屏幕大小无关。如果您在不同设备(或虚拟设备)上尝试该代码,您会发现不同的结果。

Canvas and Drawables