Я пытаюсь декодировать растровое изображение, используя только inJustDecodeBounds. Но ширина и высота - это ширина исходного изображения. Например, если изображение находится в папке xxhdpi, а телефон с плотностью xhdpi и изображение 500 x 500 пикселей, тогда outWidth = 500, но оно должно быть меньше, так как я запускаю его на xhdpi (у меня нет папки для рисунков xhdpi ). Так есть ли способ при декодировании использовать плотность экрана. Заранее спасибо.
Android decodeBitmap с размером, зависящим от плотности
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
Спасибо, но это не очень хорошее решение, потому что со временем, возможно, я решу создать папку xhdpi, например, ot hdpi. Я должен знать, из какой папки взята картинка. На самом деле одним из решений является использование getDrawable() - оно использует плотность. Но должен быть способ добиться этого с помощью класса Bitmap.Options. Я пытаюсь inDensity и дать свою плотность, но это не работает. Спасибо за внимание. P.S. Я имею в виду, что это не очень хорошее решение для плотности жесткого кода.
- person DPM; 30.07.2015