Отображение изображения с качеством - размер растрового изображения превышает бюджет виртуальной машины Ошибка - PullRequest
1 голос
/ 27 января 2011

Мне нужно создать приложение типа галереи. Где мне нужно отобразить много изображений и дать эффекты масштабирования и скольжения.
Теперь я использую android.widget.Gallery и устанавливаю изображение на imageview в getview моей галереи Adapter класса (extends BaseAdapter). Я установил изображение с помощью растрового изображения, которое задается следующим кодом

Bitmap  mBitmap = BitmapFactory.decodeFile(imagePathArray.get(position));
imageview.setImageBitmap(mBitmap);

Сначала он работает нормально, но после перехода к третьему или четвертому изображению происходит сбой приложения со следующей ошибкой

  ERROR/AndroidRuntime(12184):  FATAL EXCEPTION: main
  ERROR/AndroidRuntime(12184):  java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

в операторе decodeFile.

Когда я искал bitmap size exceeds VM budget, у меня было много решений, таких как android-странное из-за-памяти-проблема . Но все решения снижают качество изображения.
Каков наилучший метод для отображения изображения в хорошем качестве и с меньшим объемом памяти, который не вызовет bitmap size exceeds VM budget?
Любое предложение?
Спасибо

1 Ответ

2 голосов
/ 27 января 2011

Единственное решение, которое у вас есть, это загрузить ваше растровое изображение в меньшем размере (BitmapFactory.Options позволяет вам повторно выбирать растровое изображение во время загрузки) или попытаться перезапустить другие большие растровые изображения, которые вы, возможно, загрузили и которые вам больше не нужны .

...