0

サイズ 908 x 1003 のビットマップがあります。私の画面サイズは 480 x 800 です。このビットマップをフルスクリーンで表示したいと考えています。ビット マップのサイズを変更していますが、画面にはまだ空きスペースがあります (画像は高さ全体で表示されますが、幅は表示されません)。

これは私のコードです

私は、processedMap(908 x 1003) というビットマップを持っています。

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);



    int widthPix = (int) Math.ceil(dm.widthPixels * (dm.densityDpi / 160.0));
    int heightPix = (int) Math.ceil(dm.heightPixels * (dm.densityDpi / 160.0));

    Bitmap resizedBitmap = Bitmap.createScaledBitmap(processedMap, (int) widthPix, (int)heightPix, true);

    imageView.setImageBitmap(resizedBitmap);

奇妙なことに、widthPix のサイズを大きくすると (widthPix + 40 のように)、問題が修正されます。私を助けてください。

4

1 に答える 1

0

あなたの特定の問題はここにあります:

(dm.densityDpi / 160.0)

このステートメントにブレークポイントを置き、この計算を評価します。キャストなしで 2 つの int を分割しています。これは括弧内にあるため、乗算の前に評価されます。最終的な結果は、小数部分を失うことです。たとえば、240 / 160 => 1 です。

これを使って:

(dm.densityDpi / 160.0d)

そうは言っても、Doomsknightのコメントは健全です. ピクセルを処理するだけでよいのに、なぜ複雑にする必要があるのでしょうか。

于 2012-11-11T01:56:32.827 に答える