1

我正在尝试为 android 开发自定义图像显示应用程序。到目前为止,我能够加载位图并将其显示在屏幕上。我想将用户视图集中在图像的中心。为此,我一直在使用

Bitmap bmp = BitmapFactory.decodeResource(...)
float offsetX = (androidScreenHeight - bitmapFactoryOptions.outHeight) / 2
canvas.drawBitmap(bmp, offsetX, 0, myPaint)

渲染它。据我所知,androidScreenHeight 是正确的。我正在使用具有 1280x800 屏幕的三星笔记,这是我得到的价值。我的图像是 1920 像素宽,所以每边的偏移量应该是 560,实际屏幕中间是 800。看这张图片:

http://imgur.com/a2DGmjG

offsetX 的值在 560 处是正确的。所以我知道至少该部分工作正常。但不是上面的,我得到的是:

http://imgur.com/jtHw926

(这些不是实际图像)

我不确定发生了什么。pixels在我的 Android 设备上的处理方式与在我的计算机上的处理方式不同吗?我知道每个像素都会占用不同的大小,因为 dpi 是不同的。但是 560 像素的偏移量应该在每个屏幕上给出相同的偏移量,无论单个像素的大小如何。有什么想法吗?

4

1 回答 1

1

(将我的评论提升为正确答案)

BitmapFactory 将在该文件夹的 dpi(假设您有一个)和设备 dpi 之间执行缩放。将位图放在“drawable-nodpi”中会禁用自动缩放,但要小心你真的想要这样做(因为自动缩放通常有用且可取)。

于 2013-08-05T19:31:19.297 回答