Android decodeBitmap с размером, зависящим от плотности

Я пытаюсь декодировать растровое изображение, используя только inJustDecodeBounds. Но ширина и высота - это ширина исходного изображения. Например, если изображение находится в папке xxhdpi, а телефон с плотностью xhdpi и изображение 500 x 500 пикселей, тогда outWidth = 500, но оно должно быть меньше, так как я запускаю его на xhdpi (у меня нет папки для рисунков xhdpi ). Так есть ли способ при декодировании использовать плотность экрана. Заранее спасибо.


person DPM    schedule 30.07.2015    source источник
comment
Почему бы не создать папку xhdpi и не поместить в нее изображение меньшего размера?   -  person Will Bobo    schedule 30.07.2015
comment
Потому что я не хочу этого делать. Этот физический размер (на xxdpi) превосходен. Это просто должно вернуть мне настоящие пиксели. И мне интересно, как это сделать (декодирование с использованием плотности). Спасибо за внимание.   -  person DPM    schedule 30.07.2015


Ответы (1)


Вот способ загрузить уменьшенную версию растрового изображения: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap

Вы можете рассчитать reqWidth и reqHeight со значениями, найденными здесь: http://developer.android.com/reference/android/util/DisplayMetrics.html

Нравиться :

int currentWidth = 500;
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
reqWidth = currentWidth * (metrics.densityDpi/(float)DisplayMetrics.DENSITY_XXHIGH );
person Will Bobo    schedule 30.07.2015
comment
Спасибо, но это не очень хорошее решение, потому что со временем, возможно, я решу создать папку xhdpi, например, ot hdpi. Я должен знать, из какой папки взята картинка. На самом деле одним из решений является использование getDrawable() - оно использует плотность. Но должен быть способ добиться этого с помощью класса Bitmap.Options. Я пытаюсь inDensity и дать свою плотность, но это не работает. Спасибо за внимание. P.S. Я имею в виду, что это не очень хорошее решение для плотности жесткого кода. - person DPM; 30.07.2015