Виджет галереи Android с использованием изображений с SDcard - PullRequest
1 голос
/ 02 ноября 2011

Я пытаюсь отобразить миниатюры, хранящиеся в определенной папке для моего приложения. Они загружаются при запуске приложения. Я использую виджет галереи, чтобы показать миниатюры, которые я читаю с SD-карты, когда вызывается getView () из ImageAdapter, но когда я провожу (прокручиваю) виджет. Во-первых, прокрутка не сглажена, почти как дрожь, чтобы прокручивать и прокручивает очень хаотично. Есть ли эффективный способ сделать это. Я пытался сохранить миниатюры в памяти, прокрутка плавная, но я знаю, что у меня возникнут проблемы с памятью, если у меня будет больше миниатюр ..

Любая помощь будет принята с благодарностью.

Привет

Ответы [ 2 ]

0 голосов
/ 02 ноября 2011

в этом случае вы можете использовать GridView и Custom ImageAdapter. а для миниатюр вы можете напрямую использовать миниатюры изображений MediaStore. и нет проблем с памятью.

final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media._ID;
Cursor imagecursor = managedQuery(                          MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, MediaStore.Images.Media.DATA + " like ?",  new String[] {file.getAbsoluteFile().toString()}, orderBy);

int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID);   
imagecursor.moveToPosition(0);
int id = imagecursor.getInt(image_column_index);                
thumbnails = MediaStore.Images.Thumbnails.getThumbnail(                 getApplicationContext().getContentResolver(), id,MediaStore.Images.Thumbnails.MICRO_KIND, null);
iv.setImageBitmap(thumbnails);
0 голосов
/ 02 ноября 2011

Вам необходимо кэшировать изображения в память, используя что-то вроде HashMap и их, когда вашему приложению не хватает памяти, будет вызываться ваша Activity.onLowMemory () .Реализуйте этот метод и очистите все изображения, которые не показываются пользователю в данный момент.

Также вы можете использовать Activity.onTrimMemory () вместо onLowMemory.

...