среда, 14 ноября 2012 г.

Реальный размер Bitmap

     Столкнулся с одной интересной особенностью: размеры Bitmap при вызове getWidth() и getHeight() возвращаются реальные, т.е. сколько пикселей само изображение, загруженное под соответствующее DPI. Однако выводится, например, на Canvas при drawBitmap масштабированное изображение под соответствующий density. Таким образом, правильней писать в некоторых случаях так:

int height,width;
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.resource_name);
height = bmp.getScaledHeight(bmp.getDensity());
width = bmp.getScaledWidth(bmp.getDensity());

Соответственно, можно вместо density самого Bitmap-а брать DPI, например, всего экрана через DisplayMetrics и т.д.
Такой вот простенький трик. Возможно, говорю о крайне банальных вещах, но я дошел до этого не сразу.