2

次のように Drawable を初期化しています。

Drawable drawable = new BitmapDrawable(bitmap);

ビットマップのサイズは 50 x 77 です (デバッガーで確認。この値はフィールド mWidth と mHeight に設定されています)。

しかし、私のドローアブルはサイズ 33 x 51 を初期化します。これはなぜですか?

この行の直後にドローアブル変数を調べたところ、値は次のとおりです。

mBitmapWidth = 33

mBitmapHeight = 51

drawable.getIntrinsicWidth();
drawable.getIntrinsicHeight();

33 x 51 も返します。

しかし、ドローアブルにはビットマップ フィールド mBitmap もあり、正しいサイズは 50 x 77 です。では、なぜドローアブルは 33 x 51 で初期化されるのでしょうか?

4

2 に答える 2

3

の寸法はBitmapピクセル単位ですが、 の寸法はDrawabledp (密度依存ピクセル) です。

あなたの場合、ディスプレイの密度はおそらく 1.5 のようなものです。

50 / 33 = 77 / 51 = 1.5

setTargetDensityメソッドで密度を設定すると、描画可能な寸法が更新されることに注意してください。

于 2012-12-04T16:10:18.470 に答える
2

BitmapDrawableビットマップの寸法をデバイスの密度に調整します。

使用しているコンストラクターは非推奨であり、ドキュメントでは使用が推奨されていることに注意してくださいBitmapDrawable(Resources res, Bitmap bitmap)

于 2012-12-04T16:10:36.853 に答える