我有一个在 a的函数RoundRectShape
中绘制的。View
onDraw()
这个形状的角会被这个视图上的任何拖动操作通过一个重写的onTouchEvent
函数(调用invalidate()
来强制调用onDraw()
)修改。
在 中初始化变量时onDraw
,Eclipse 会显示一条警告,指出在绘制/布局操作期间避免对象分配(改为预分配和重用)。
这个问题解释如下:
您应该避免在绘图或布局操作期间分配对象。这些被频繁调用,因此流畅的 UI 可能会因对象分配导致的垃圾收集暂停而中断。
通常处理的方式是预先分配对象并为每个绘图操作重用它们
为此,我显然必须能够修改构造函数中设置的角半径。RoundedRectShape类没有提供设置器(我很确定相关的成员变量是不可访问的)。
我知道这是一个小对象和一个小问题,但是当类提供的用于设置圆角半径的唯一方法是通过构造函数时,如何在不重新初始化对象的情况下更改这些角?
或者这只是一个例子,做最好的事情必须用做可能的事情来代替?
谢谢,
PS 在方法中调用构造函数将删除警告,但由于每次都调用onTouchEvent()
的事实,无论如何都不会完成任何事情onDraw()
invalidate()