我正在尝试为 android 开发自定义图像显示应用程序。到目前为止,我能够加载位图并将其显示在屏幕上。我想将用户 View 集中在图像的中心。为此,我一直在使用
Bitmap bmp = BitmapFactory.decodeResource(...)
float offsetX = (androidScreenHeight - bitmapFactoryOptions.outHeight) / 2
canvas.drawBitmap(bmp, offsetX, 0, myPaint)
渲染它。据我所知,androidScreenHeight 是正确的。我正在使用具有 1280x800 屏幕的三星笔记本,这是我为此获得的值(value)。我的图像是 1920 像素宽,所以每边的偏移量应该是 560,实际屏幕的中间是 800。看这张图:
offsetX 的值在 560 处是正确的。所以我知道至少那部分工作正常。但是我得到的不是上面的,而是这样的:
(这些不是实际图像)
我不确定发生了什么。 pixels
在我的 android 设备上与在我的计算机上是否以某种方式不同对待?我知道每个像素都会占用不同的大小,因为 dpi 不同。但是 560 像素的偏移量应该在每个屏幕上提供相同的偏移量,而不管各个像素的大小。知道这里发生了什么吗?
最佳答案
(将我的评论提升为正确答案)
BitmapFactory 将在该文件夹的 dpi(假设您有一个)和设备 dpi 之间执行缩放。将位图放在“drawable-nodpi”中将禁用自动缩放,但要小心你真的想这样做(因为自动缩放通常是有用和可取的)。
关于Android位图坐标奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18061301/