사용자 지정보기에서 특정 크기의 비트 맵을로드하려고합니다. 첫 번째 단계로 400px x 400px보기에서 400px x 400px 비트 맵을로드하려고했지만 비트 맵은 더 작은 크기로로드됩니다.사용자 지정보기 비트 맵의 크기가 올바르지 않음
비슷한 문제가있는 일부 스레드를 발견했습니다. Options.inScale = false
을 사용하는 것이 좋습니다. 나는 그것을 사용하고있어 더 나은 로그 메시지 (비트 맵 출력 정확한 크기 400 픽셀 X 400 픽셀)을,하지만 여전히 작은 렌더링 :
(노란색 사용자 정의보기의 배경이다 - 400 픽셀 X 400 픽셀, 및 빨간색은 비트 맵입니다.)
조언이 있으십니까? 여기 코드는 다음과 같습니다
사용자 정의보기 :
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>
비트 맵은 내가 스케일링을 사용할 필요가 없습니다 생각하는 그 이유는 ... 이미 400 픽셀 X 400 픽셀입니다 옵션 등이 있습니다.이 크기로 화면에 표시하고 싶습니다 ...
왜 생성자에서 캔버스를 만들고 있습니까? 비트 맵을 그 자체로 드로잉하고 있습니까? 버그가 아니더라도 모든 것을 제거 할 수 있습니다. –
맞아 - 이건 좀 복잡한 예제의 일부 야, 나는이 게시물을 위해 단순화 했어.하지만 코드의 일부는 여전히 거기에있다. 그것을 제거했습니다. – Ixx
어떤 폴더에 비트 맵이 있습니까? 크기가 조절되지 않은 비트 맵은'drawable-nodpi' 폴더 여야합니다. 그렇지 않으면 문서가 관계없이 비트가 설정 되더라도 시스템에서 크기를 조정하는 경우가 있습니다. – DeeV