我正在创建一个Android应用程序,它在onDraw(Canvas canvas)
类的View
方法中进行了大量处理。 应用程序强制纵向模式。
我的问题是,假设画布的高度和宽度在对paint方法的调用之间没有变化是多么安全?我问的原因是我然后使用这些值来构造我在onDraw方法中使用的很多对象。如果我假设高度和宽度不会发生变化,那么我可以缓存首次调用onDraw
方法时创建的30个左右的对象。
我已经完成了很多Swing编程,这绝对是你在Swing中无法做到的事情,但在我看来,某人手机的高度和宽度不太可能变化
这是正确的假设吗?我已经尝试过它并且效果很好,但是我担心可能会有一些我不感兴趣的问题。
感谢任何指导!
答案 0 :(得分:1)
这完全取决于View
可能发生的事情。这基本上转化为:它取决于您的layout
以及您计划对View
执行的操作。
所以......只要您确定canvas
的尺寸不会发生变化,您就可以安全地假设View
的尺寸不会发生变化。如果没有任何内容可以强制View
调整大小,那么canvas'
大小将保持不变。
解决此问题的最简单方法是将所有对象分配(无论如何都不应位于onDraw
方法内)移动到onSizeChanged
View
方法中(或onLayout
)。这样,每次更改View's
尺寸(由于某些内容)时,您的对象都可以重新初始化或更正,以便与drawing
进程一起正常使用。