Intereting Posts

Загрузите плотность для уровня API <15

Начиная с уровня API Android 15, существует метод public Drawable getDrawableForDensity (int id, int density) для извлечения выделенного объекта для определенной плотности экрана. Есть ли способ сделать это до уровня API 15?

Поэтому я решил, что это можно решить, используя обратную разработку API Android и исходный код в соответствии с предложением @ adtennant. Я начал писать это решение, но в этом процессе зашел в тупик, поскольку базовый собственный (не-Java) API, который необходим, недоступен в более поздних версиях Android.

Если вы в порядке, ограничивая это только растровыми изображениями, что подразумевается вашим комментарием, это можно сделать с помощью BitmapFactory, как было предложено. У BitmapFactory есть другой метод:

DecodeResource (ресурсы res, int id, BitmapFactory.Options выбирает)

Этот метод принимает дополнительные BitmapFactory.Options, которые позволят вам указать плотность для загрузки. Это, похоже, существовало с уровня API 1. В частности, я считаю, что вы можете использовать:

 BitmapFactory.Options options = new BitmapFactory.Options(); options.inDensity = DisplayMetrics.DENSITY_MEDIUM; // whichever you want to load options.inTargetDensity = getResources().getDisplayMetrics().densityDpi; options.inScaled = true; 

Это также будет масштабировать его до плотности экрана, если будет загружена несогласованная плотность.