Мне нужно создать приложение типа галереи. Где мне нужно отображать много изображений и давать масштабирование и скользящие эффекты.
Теперь я использую android.widget.Gallery
и устанавливаю изображение в imageview
в getview
моей галереи Adapter
class (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-strange-out-of-memory-issue. Но все решения уменьшают качество изображения.
Каков наилучший способ отображения изображения в хорошем качестве и с меньшим объемом памяти, что не вызовет bitmap size exceeds VM budget
?
Любое предложение?
Спасибо вам
Единственное решение, которое у вас есть, - загрузить растровое изображение с меньшим размером (BitmapFactory.Options позволяет перемасштабировать растровое изображение во время загрузки) или попытаться переработать другие большие растровые изображения, которые вы, возможно, загрузили и которые вам больше не нужны.