我正在创建一个Android应用程序,它在 onDraw(Canvas canvas) 我的方法 View 班 应用程序强制纵向模式 .
onDraw(Canvas canvas)
View
我的问题是,假设画布的高度和宽度不会在调用paint方法之间改变,这有多安全?我提出这个问题的原因是,然后我使用这些值来构造我在onDraw方法中使用的许多对象。如果我假设高度和宽度不会改变,那么我可以缓存当 onDraw 方法。
onDraw
我已经做了很多Swing编程,这肯定是你在Swing中不会做的事情,但在我看来,某人手机的高度和宽度不太可能改变。
这是正确的假设吗?我试过了,而且效果很好,但我担心可能会有一个我还没有领会的问题。
感谢您的指导!
这完全取决于你身上可能发生的事情 View 基本上就是:这取决于你的 layout 以及你打算做的事情 看法 .
layout
看法
所以…你可以安全地假设你的 canvas 只要你能确定你的尺寸 看法 不会改变。如果没有什么能迫使你 看法 要调整大小 canvas' 尺寸将保持不变。
canvas
canvas'
克服此问题的最简单方法是移动所有对象分配(不应位于 onDraw 方法) onSizeChanged 你的方法 看法 (或至 onLayout ). 这样,每次你 View's 大小已更改(由于某些原因),可以重新初始化或更正对象,以便与您的 drawing 过程
onSizeChanged
onLayout
View's
drawing