如何避免在 onDraw 时创建 Rect 对象
How to avoid creating a Rect object onDraw
在我的应用程序中,我创建了我的 LinearLayout class 覆盖 LinearLayout 以便以编程方式设置它周围的边框和其他需要的图形(即填充自定义颜色)。问题是在 onDraw 的第一行中,我必须按如下方式获取布局 Rect:
@Override
protected void onDraw(Canvas canvas) {
r = canvas.getClipBounds() ;
问题是我收到警告:
避免在绘制操作期间分配对象:使用 Canvas.getClipBounds(Rect) 而不是分配临时 Rect 的 Canvas.getClipBounds()。
虽然我知道上面的代码在浪费内存资源,但我找不到方法来应用 Canvas.getClipBounds(Rect) 来做同样的事情。如果有人告诉我如何以更利于记忆的方式执行此操作,我将不胜感激。
提前致谢。
在调用视图的构造函数时创建您的Rect
,或者同时声明和实例化它。例如
Rect mRect = new Rect();
和onDraw
@Override
protected void onDraw(Canvas canvas) {
canvas.getClipBounds(mRect) ;
// read the properties of mRect
在我的应用程序中,我创建了我的 LinearLayout class 覆盖 LinearLayout 以便以编程方式设置它周围的边框和其他需要的图形(即填充自定义颜色)。问题是在 onDraw 的第一行中,我必须按如下方式获取布局 Rect:
@Override
protected void onDraw(Canvas canvas) {
r = canvas.getClipBounds() ;
问题是我收到警告:
避免在绘制操作期间分配对象:使用 Canvas.getClipBounds(Rect) 而不是分配临时 Rect 的 Canvas.getClipBounds()。
虽然我知道上面的代码在浪费内存资源,但我找不到方法来应用 Canvas.getClipBounds(Rect) 来做同样的事情。如果有人告诉我如何以更利于记忆的方式执行此操作,我将不胜感激。
提前致谢。
在调用视图的构造函数时创建您的Rect
,或者同时声明和实例化它。例如
Rect mRect = new Rect();
和onDraw
@Override
protected void onDraw(Canvas canvas) {
canvas.getClipBounds(mRect) ;
// read the properties of mRect