在我的应用程序中,我创建了覆盖LinearLayout的LinearLayout类,以便按需编程设置边框和其他图形(即填充自定义颜色)。问题是在onDraw的第一行我必须得到布局Rect,如下所示:
@Override
protected void onDraw(Canvas canvas) {
r = canvas.getClipBounds() ;
问题是我收到了警告:
在绘制操作期间避免对象分配:使用Canvas.getClipBounds(Rect)而不是分配临时Rect的Canvas.getClipBounds()。
虽然我知道上面的代码浪费了内存资源,但我找不到应用 Canvas.getClipBounds(Rect)来实现相同的方法。如果有人以更加记忆友好的方式指出我的方式,我将不胜感激。
提前谢谢。
答案 0 :(得分:3)
在调用视图的构造函数时创建Rect
,或同时声明并实例化它。 E.g。
Rect mRect = new Rect();
和onDraw
@Override
protected void onDraw(Canvas canvas) {
canvas.getClipBounds(mRect) ;
// read the properties of mRect