두 개의 비트 맵을 사용하여 사용자 정의보기를 만들었습니다. 이미지 뷰에서 비트 맵을 내보기 외부에서 사용할 때 이미지는 괜찮습니다. setDensity(240)
(hdpi 장치)에 전화해야하지만 괜찮습니다. 그러나 사용자 정의보기에서 동일한 비트 맵을 캔버스에 그릴 때 onDraw(Canvas)
오버라이드 된 메서드에서는 setDensity(240)
을 호출하지 않을 때와 같은 방식으로 다시 크기가 조절됩니다. 디버깅을 통해 호출 한 후 캔버스와 비트 맵의 밀도가 240이되도록했습니다.캔버스에 비트 맵 그리기
코드 : 내보기의 외부
@Override
protected void onDraw(Canvas canvas) {
_ingredient.setDensity(240);
canvas.setDensity(240);
canvas.drawBitmap(_ingredient, new Matrix(), new Paint());
Matrix refMatrix = new Matrix();
refMatrix.postTranslate(0, _ingredient.getHeight()-35);
Paint paint = new Paint();
paint.setAlpha(60);
}
작업 이미지 뷰.
Bitmap tertr = _cocktail.getCocktailBitmapImage();
tertr.setDensity(240);
ImageView in = new ImageView(this);
in.setScaleType(ScaleType.CENTER);
in.setImageBitmap(tertr);
RelativeLayout relativeLayout = RelativeLayout)findViewById(R.id.cocktail_date_image_layout);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
relativeLayout.addView(in, params);
첫 번째 것은 setDensity 호출없이 두 번째 이미지와 마찬가지로 확대 된 이미지를 보여줍니다. 이미지는 72dpi로 생성되었습니다. 이 이미지는 제공되며 변경할 수 없습니다. 나는 한 가지를 놓치고 있습니까, 아니면 캔버스가 어떻게 작동합니까? 테스트에 사용 된 장치는 DROID2입니다.
이 답변입니까? 그렇다면 @ boulder의 답변이 더 일반적이라고 생각하지 않는다면 허용 된 것으로 표시 할 수 있습니다. – Benjol
나는했다. 그러나 나는 20 시간을 기다려야했다. :) – gmate