Сначала несколько комментариев о том, что здесь происходит.Растровое изображение, которое вы получаете, фактически пересэмплируется;его данные пикселей для изображения 9x9.На метод bitmap.getWidth()
не влияют вызовы bitmap.setDensity()
.
Чтобы загрузить растровое изображение, не позволяя платформе Android изменить его для вас, создайте экземпляр BitmapFactory.Options и установите inScaled в false
, затем передайте его в decodeResource ():
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId, options);
// Now bitmap.getWidth() == 6
Обратите внимание, что это измененная версия, которая используется в пользовательском интерфейсе (если вы явно не работаете с этим), поэтому, если вы хотите сделать bitmap.getPixel(x,y);
для растрового изображения, которое рисуется в пользовательском интерфейсе, вы не должны использовать inScaled = false
.