Растровое изображение getWidth возвращает неправильное значение
У меня в папке для рисования в приложении для Android есть изображение jpg с разрешением 1000x600. Я загружаю это изображение в растровое изображение, как это
Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
После этого я звоню bitMap .getWidth()
который возвращает 1500. Как это может быть? А как правильно подобрать ширину и высоту изображения?
1 ответ
Это, вероятно, из-за различной плотности. Ваш ресурс, вероятно, хранится в папке средней плотности, но ваше устройство имеет формат hdpi. Средняя плотность 160 точек на дюйм, высокая плотность 240 точек на дюйм. Таким образом, ваше растровое изображение масштабируется в 1,5 раза по сравнению с первоначальным размером. Смотрите документ на нескольких экранах для получения дополнительной информации.
Если ресурсы недоступны с правильной плотностью, система загружает ресурсы по умолчанию и масштабирует их по мере необходимости, чтобы соответствовать плотности текущего экрана.
Если вы хотели, чтобы это было для высокой плотности, поместите его в drawable-hdpi вместо drawable или drawable-mdpi.
Обновить:
Если вы хотите, чтобы он игнорировал плотность, поместите его в папку drawable-nodpi. Также из того же документа:
Самый простой способ избежать предварительного масштабирования - поместить ресурс в каталог ресурсов с квалификатором конфигурации nodpi. Например:
res/drawable-nodpi/icon.png
Когда система использует растровое изображение icon.png из этой папки, оно не масштабируется в зависимости от текущей плотности устройства.