【问题标题】:Android Gallery widget using images from SDcard使用 SD 卡中的图像的 Android 图库小部件
【发布时间】:2011-12-20 00:25:07
【问题描述】:

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

任何帮助将不胜感激。

问候

【问题讨论】:

    标签: android gallery thumbnails


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的回复。但我想使用图库小部件,并且只想显示与我的应用程序相关的图像。 MediaStore 会显示 SD 卡上的所有图像吗?
      猜你喜欢
      • 1970-01-01
      • 2012-03-28
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 2011-10-07
      • 2011-08-06
      相关资源
      最近更新 更多