Android用のカスタム画像表示アプリケーションを開発しようとしています。これまでのところ、ビットマップを読み込んで画面に表示することができました。ユーザービューを画像の中央に配置したい。これを行うために、私は使用しています
Bitmap bmp = BitmapFactory.decodeResource(...)
float offsetX = (androidScreenHeight - bitmapFactoryOptions.outHeight) / 2
canvas.drawBitmap(bmp, offsetX, 0, myPaint)
それをレンダリングします。私が知る限り、androidScreenHeightは正しいです。私は 1280x800 の画面を持つサムスンのノートを使用しています。これは私が得ている値です。私の画像の幅は 1920 ピクセルなので、各辺のオフセットは 560 で、実際の画面の中央は 800 です。この写真を見てください:
offsetX の値は 560 で正しいため、少なくともその部分は正しく機能していることがわかります。しかし、上記の代わりに、私が得ているのはこれです:
(これらは実際の画像ではありません)
何が起こっているのかわかりません。私pixels
のAndroidデバイスと私のコンピューターではどういうわけか異なる方法で扱われますか? dpiが異なるため、各ピクセルはそれぞれ異なるサイズを占めることを理解しています。ただし、560 ピクセルのオフセットは、個々のピクセルのサイズに関係なく、各画面で同じオフセットを与える必要があります。ここで何が起こっているのですか?