使用SDcard图像的Android Gallery小部件

时间:2011-11-02 04:11:26

标签: android gallery thumbnails

我正在尝试显示存储在我的应用的特定文件夹中的缩略图。这些是在应用程序运行时下载的。我正在使用gallery小部件来显示我在调用ImageAdapter的getView()时从SDcard读取的缩略图,但是当我在小部件上滑动(滚动)时。首先滚动不顺畅,几乎就像我颤抖滚动和滚动非常不稳定。有没有一种有效的方法来做到这一点。我尝试将缩略图存储在内存中,滚动顺畅,但我知道如果我有更多缩略图,我会遇到内存问题..

非常感谢任何帮助。

此致

2 个答案:

答案 0 :(得分:0)

您需要使用类似HashMap的内容将图像缓存到内存中,当您的应用程序内存不足时,您将调用Activity.onLowMemory()。实现此方法并清除当前未向用户显示的所有图像。

此外,您可以使用Activity.onTrimMemory()代替onLowMemory。

答案 1 :(得分:0)

在这种情况下,您可以使用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);