Я не хочу, чтобы Android автоматически изменял размер моего растрового изображения.

Я поместил несколько растровых изображений в res/drawable.

После загрузки растровых изображений с помощью BitmapFactory.decodeResource() я обнаружил, что их размер автоматически изменяется в соответствии с плотностью.

Это не то, чего я хочу. Я хочу, чтобы они сохранили свой первоначальный размер (размер пикселя).

Что я должен делать?


person Sunny    schedule 24.07.2011    source источник
comment
После второго раунда Goggling я обнаружил, что есть папка с именем drawable-nodpi. Поэтому проблема кажется решенной.   -  person Sunny    schedule 24.07.2011


Ответы (4)


Как было сказано в другом вопросе, использование папки drawable-nodpi не позволит Android изменить размер ваших изображений.

Кроме того, если вы хотите иметь несколько версий изображения для форматов hdpi и ldpi, но не хотите, чтобы система изменяла их размер (например, чтобы сохранить разрешение в степени двойки), вы можете использовать следующий код при загрузке вашего растрового изображения :

// ask the bitmap factory not to scale the loaded bitmaps
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;

// load the bitmap
Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.id.mybmp, opts);
person XGouchet    schedule 24.07.2011
comment
Вам необходимо добавить параметры в инструкцию загрузки: Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.id.mybmp, opts); - person Tickled Pink; 09.09.2012

http://developer.android.com/guide/practices/screens_support.html

Если вы используете суффикс nodpi, система не будет автоматически масштабировать ваши изображения. Надеюсь, поможет!

person Zwiebel    schedule 24.07.2011

Если вы сохранили отдельные изображения в своих hdpi, ldpi и mdpi и используете ресурсы для доступа к этим изображениям, то вы мало что можете сделать.

Если вы хотите использовать только одно изображение, сохраните его одну копию в папке mdpi и удалите остальные.

person Kumar Bibek    schedule 24.07.2011

Поместите свои изображения в папку с именем «drawable» (без суффикса ldpi, mdpi, hdpi и т. д.). Возможно, вам потребуется создать его самостоятельно (например, Eclipse не создает его автоматически).

После этого удалите ресурс drawable из других папок drawable-something.

person Vicente Plata    schedule 24.07.2011
comment
Я поместил эти растровые изображения в res/drawable - person Sunny; 24.07.2011
comment
Папка drawable используется так же, как и drawable-mdpi /160dpi/. - person Kostadin; 19.05.2012
comment
Этот комментарий совершенно неверен. Правильный ответ — использовать для inScaled значение false или папку -nodpi, как указано в других ответах. - person RichieHH; 10.08.2014