我需要在运行时以编程方式加载图像的缩小版本,具体取决于ImageView
的大小。
为此,我打算使用http://developer.android.com/training/displaying-bitmaps/load-bitmap.html中描述的BitmapFactory
。
如果尺寸发生变化,我还需要再次加载它,这样如果视图变大,图像仍然会保持高质量,当然如果它会变小,我会释放一些内存。
我可以覆盖onSizeChanged
,onMeasure
,onLayout
中的一个,但我不知道哪种方式是最合适的方式,甚至可能都不是:)。< / p>
所以我要问的是建议when and where should I load my image?
注意:下面我将要做的一些信息,以防万一它会影响应该加载图像的位置和时间。在此之后,我将继续处理以块为单位加载图像的图像。
答案 0 :(得分:0)
我猜你有位图的想法,所以使用位图加载图像和线程,以便在后台执行。然后传递位图中的图像值。
答案 1 :(得分:0)
看起来将图像加载合并到布局机制中并不是一个好主意,因为大多数时候这会导致布局过程中不必要的工作。
由于我正在开发框架,因此可以在各种情况下重新调整ImageView的子类,例如:
如果发生了方向更改且ImageView尺寸与设备尺寸相关 - 它将被重新调整大小(如果我自己处理方向更改,因为默认情况下android会重新创建整个视图层次结构),但在使用BitmapFactory加载时使用inSampleSize选项 - 通常位图大小仍然会更大,inSampleSize只能使用2的幂。所以这并不一定意味着我将不得不重新加载位图。
如果我明确设置ImageView尺寸 - 我知道是否必须重新加载位图,我可以一次完成这两件事。
有更多的ifs,每个案例都可以拥有它自己的优化,可以同时节省 - 处理能力和内存。
由于没有提供正确答案,我希望我的解决方案对其他人也有用。
如果您更好地了解应该如何处理此类问题 - 请在此与大家分享,以便我和其他所有人都可以提高他们的知识:)。