代码之家  ›  专栏  ›  技术社区  ›  StuPointerException

Android画布宽度和高度波动性

  •  1
  • StuPointerException  · 技术社区  · 8 年前

    我正在创建一个Android应用程序,它在 onDraw(Canvas canvas) 我的方法 View 应用程序强制纵向模式 .

    我的问题是,假设画布的高度和宽度不会在调用paint方法之间改变,这有多安全?我提出这个问题的原因是,然后我使用这些值来构造我在onDraw方法中使用的许多对象。如果我假设高度和宽度不会改变,那么我可以缓存当 onDraw 方法。

    我已经做了很多Swing编程,这肯定是你在Swing中不会做的事情,但在我看来,某人手机的高度和宽度不太可能改变。

    这是正确的假设吗?我试过了,而且效果很好,但我担心可能会有一个我还没有领会的问题。

    感谢您的指导!

    1 回复  |  直到 8 年前
        1
  •  1
  •   Bartek Lipinski    8 年前

    这完全取决于你身上可能发生的事情 View 基本上就是:这取决于你的 layout 以及你打算做的事情 看法 .

    所以…你可以安全地假设你的 canvas 只要你能确定你的尺寸 看法 不会改变。如果没有什么能迫使你 看法 要调整大小 canvas' 尺寸将保持不变。

    克服此问题的最简单方法是移动所有对象分配(不应位于 onDraw 方法) onSizeChanged 你的方法 看法 (或至 onLayout ). 这样,每次你 View's 大小已更改(由于某些原因),可以重新初始化或更正对象,以便与您的 drawing 过程