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 に答える