当我使用来自可绘制资源的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%?
答案 0 :(得分:0)
我不是100%肯定这里的问题,但它与另一个SO问题类似(Getting weird font size after setting it programmatically)。问题也存在50%的差异,这是由于sp
单位与OP设备上的像素进行比较,屏幕密度比为1.5。
您可以查看BitmapFactory.Options
;有几个尺度和密度标志可能会有所帮助。我最好的猜测是图像正在为设备缩放,这导致测量不匹配。
答案 1 :(得分:0)
Canvas它与位图大小无关,但与设备可用屏幕大小无关。如果您在不同设备(或虚拟设备)上尝试该代码,您会发现不同的结果。