【问题标题】:Android Layouts and Large ImagesAndroid 布局和大图像
【发布时间】:2013-07-30 03:07:17
【问题描述】:

由于内存限制和图像的大文件大小,我需要使用 BitmapFactory.decodeResource 为我的布局动态解码图像。我想使用 XML 布局编辑器以图形方式定义我的布局,但是当在 Activity 中调用 setContentView() 或使用 LayoutInflater 填充布局时,图像元素的 android:src 属性中引用的图像将被加载并导致 OutOfMemoryException。解决此问题的一种方法是不在 XML 图像元素中定义 android:src 属性,并在解码后使用 ImageView.setImageBitmap 以编程方式将动态解码的图像附加到膨胀布局。但是,不定义 android:src 意味着我失去了以图形方式定义布局的能力。另一种方法是在图形化设计布局时使用小占位符图像,并在运行时用解码图像替换它们。这很痛苦,因为我需要为此目的保留所有图像文件的单独副本。

任何人都可以提出一种方法来让我以编程方式动态解码/附加图像文件到布局元素,而不会失去以图形方式设计我的布局的能力吗?我真的不想用代码手动构建整个布局或维护图像的单独“设计副本”。

【问题讨论】:

  • 你能出示你的代码吗?

标签: android layout android-image


【解决方案1】:

请看: http://developer.android.com/training/displaying-bitmaps/index.html

他们提供了大量可供您使用的提示和示例代码。除此之外,您还可以使用 Bitmap 的 .compress() 方法来获得位图的压缩版本

【讨论】:

  • 我已经完成了这些建议,包括以较小的采样率解码位图、实现 LruCache 以及在完成位图后回收它们。我遇到的基本问题是我必须动态加载调整大小的位图,但这样做会限制我使用 XML 布局,除非我使用占位符图像。我想用调整大小的图像来膨胀布局。但似乎没有办法在放大视图之前设置图像元素的源值。
猜你喜欢
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
相关资源
最近更新 更多