gpt4 book ai didi

java - Android Canvas 宽高波动

转载 作者:行者123 更新时间:2023-11-30 01:25:18 29 4
gpt4 key购买 nike

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

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

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

这是一个正确的假设吗?我已经尝试过了并且效果很好,但是我担心可能会有一个我没有意识到的问题。

感谢您的指导!

最佳答案

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

所以...您可以安全地假设您的canvas 的大小不会改变,只要您可以确保您的View 的大小不会改变.如果没有什么可以强制您的 View 调整大小,您的 canvas 大小将保持不变。

解决这个问题最简单的方法是将所有对象分配(无论如何都不应该放在 onDraw 方法中)移动到 onSizeChanged 方法 View(或 onLayout)。这样,每次您的 View 的 大小发生变化(由于某些原因)时,您的对象都可以重新初始化或更正,以便在您的 绘图 过程中正常工作。

关于java - Android Canvas 宽高波动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36493736/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com