如何根据图像尺寸显示图库中的图像?

时间:2013-03-28 04:34:57

标签: android image

我可以在应用程序内打开Gallery中的图像/图片。 但是在获取大图像时我遇到了内存问题。

有没有办法根据图像尺寸显示厨房中的图像?

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

该链接指导您如何有效加载位图,特别是将缩小版本加载到内存

下的主题

您应该在不使用时回收位图。

                bitmaps.recycle();

位图也存储在从蜂窝开始的堆上。因此在不使用时回收位图。

http://www.youtube.com/watch?v=_CruQY55HOk。如果遇到内存泄漏,请使用MAT Analyzer查找并修复它。该视频有关于该主题的讨论。它还解释了如何管理内存。

如果要显示大量位图,请使用通用图像加载器。使用listview或grdiview显示图像。

https://github.com/nostra13/Android-Universal-Image-Loader

它基于Lazy List(基于相同的原理)。但它有很多其他配置。我更喜欢使用通用图像加载器因为它为您提供了更多配置选项。如果下载失败,您可以显示错误图像。可以显示带圆角的图像。可以缓存在光盘或内存上。可压缩图像。

在自定义适配器构造函数

 File cacheDir = StorageUtils.getOwnCacheDirectory(a, "your folder");

 // Get singletone instance of ImageLoader
 imageLoader = ImageLoader.getInstance();
 // Create configuration for ImageLoader (all options are optional)
 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a)
      // You can pass your own memory cache implementation
     .discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
     .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
     .enableLogging()
     .build();
 // Initialize ImageLoader with created configuration. Do it once.
 imageLoader.init(config);
  options = new DisplayImageOptions.Builder()
  .showStubImage(R.drawable.stub_id)//display stub image
  .cacheInMemory()
  .cacheOnDisc()
  .displayer(new RoundedBitmapDisplayer(20))
  .build();

在你的getView()

   ImageView image=(ImageView)vi.findViewById(R.id.imageview); 
   imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options.

您可以配置其他选项以满足您的需求。

除了延迟加载/通用图像加载器,您还可以查看支架以实现平滑滚动和性能。 http://developer.android.com/training/improving-layouts/smooth-scrolling.html