我正在实施必须从磁盘加载Bitmap
的自定义ImageView
。 Bitmap
应该完全按比例缩放,其宽度必须等于父级布局已分配给我的ImageView
的最终宽度,并且计算高度以保持宽高比。处理依赖于“视图”的维度的大量操作
所以,问题是什么是View
生命周期中适当的地方放置取决于View
的尺寸在完成布局后的大规模操作?
(我想保持它的简单,并没有使用线程,但是。)
- 最有可能这是一个坏主意,把这些代码在
onDraw()
方法, 因为它应尽可能高效可能。另一方面,我的ImageView
不太可能调整大小,所以它只会杀死 的第一个onDraw()
的性能,并且不会影响任何后续的 调用onDraw()
。所以我不确定这个选项。 - 我可以把它放在
onLayout(boolean changed, int l, int t, int r, int b)
的末尾执行我的 重码if (changed == true)
。这是一个好主意吗? - 我看到的第三个选项是在
onSizeChanged()
回调中执行。 我唯一关心的是这个回调是否为保证为 每个实际视图的尺寸变化只调用一次。我倾向于使用 这个选项,因为在我的测试中它工作正常。
有人可以对此有所了解吗?
请记住,我需要让它在每次执行''View'时不会执行一次,但是一旦执行实际大小change_,所以制作一个'view.post()'似乎就不在这里。 –
哦。然后使用'onSizeChanged()'方法将是一个更好的选择。 – Bob
好的,从你提供的链接可以推断出'onSizeChanged()'不能保证只在每个实际'View'的大小改变时被调用一次。那么如何处理呢?在这种情况下,比较旧的和新的w \ h滤除多个相同大小的呼叫是否正确? –