カスタム ビューで特定のサイズのビットマップを読み込みたい。最初のステップとして、400px x 400px のビューに 400px x 400px のビットマップをロードしたかったのですが、ビットマップは小さいサイズでロードされます。
同様の問題を持ついくつかのスレッドを見つけました。の使用を勧められましたOptions.inScale = false
。私はそれを使用し、より良いログメッセージを取得しました (ビットマップ出力は正しいサイズ 400px x 400px) が、それでも小さく表示されます:
(黄色はカスタム ビューの背景 - 400px x 400px、赤色はビットマップ)。
何かアドバイスはありますか?コードは次のとおりです。
カスタム ビュー:
class TestView extends View {
private Bitmap bitmap;
private Paint paint = new Paint();
public TestView(Context context) {
super(context);
}
public TestView(Context context, AttributeSet attr) {
super(context, attr);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.overlay, options).copy(Config.ARGB_8888, true);
Log.d("test6", "width: " + bitmap.getWidth() + " height: " + bitmap.getHeight());
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
>
<com.example.TestView
android:id="@+id/view"
android:layout_width="400px"
android:layout_height="400px"
android:background="#ffff00"
/>
</RelativeLayout>
ビットマップはすでに 400px x 400px です...そのため、スケーリング オプションなどを使用する必要はないと思います。このサイズで画面に表示したいだけです...