Я создал пользовательский вид с двумя растровыми изображениями. Когда я использую растровое изображение вне моего просмотра в ImageView, изображение в порядке. Мне нужно позвонить 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);
}
Работающий ImageView, вне моего View.
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. Эти изображения даны, я не могу их изменить. Я что-то упускаю или вот как работает Canvas? Устройство, используемое для тестирования, является DROID2.