Android画布宽度和高度波动

时间:2016-04-08 07:17:36

标签: java android android-canvas

我正在创建一个Android应用程序,它在onDraw(Canvas canvas)类的View方法中进行了大量处理。 应用程序强制纵向模式

我的问题是,假设画布的高度和宽度在对paint方法的调用之间没有变化是多么安全?我问的原因是我然后使用这些值来构造我在onDraw方法中使用的很多对象。如果我假设高度和宽度不会发生变化,那么我可以缓存首次调用onDraw方法时创建的30个左右的对象。

我已经完成了很多Swing编程,这绝对是你在Swing中无法做到的事情,但在我看来,某人手机的高度和宽度不太可能变化

这是正确的假设吗?我已经尝试过它并且效果很好,但是我担心可能会有一些我不感兴趣的问题。

感谢任何指导!

1 个答案:

答案 0 :(得分:1)

这完全取决于View可能发生的事情。这基本上转化为:它取决于您的layout以及您计划对View执行的操作。

所以......只要您确定canvas的尺寸不会发生变化,您就可以安全地假设View的尺寸不会发生变化。如果没有任何内容可以强制View调整大小,那么canvas'大小将保持不变。

解决此问题的最简单方法是将所有对象分配(无论如何都不应位于onDraw方法内)移动到onSizeChanged View方法中(或onLayout)。这样,每次更改View's尺寸(由于某些内容)时,您的对象都可以重新初始化或更正,以便与drawing进程一起正常使用。