Android 如何避免在onDraw上创建Rect对象
在我的应用程序中,我创建了覆盖LinearLayout的LinearLayout类,以便通过编程方式在其周围设置边框,并根据需要设置其他图形(即使用自定义颜色填充)。问题是,在onDraw的第一行中,我必须获得布局Rect,如下所示:Android 如何避免在onDraw上创建Rect对象,android,memory,canvas,android-linearlayout,ondraw,Android,Memory,Canvas,Android Linearlayout,Ondraw,在我的应用程序中,我创建了覆盖LinearLayout的LinearLayout类,以便通过编程方式在其周围设置边框,并根据需要设置其他图形(即使用自定义颜色填充)。问题是,在onDraw的第一行中,我必须获得布局Rect,如下所示: @Override protected void onDraw(Canvas canvas) { r = canvas.getClipBounds() ; 问题是我得到了警告: 在绘制操作期间避免对象分配:使用Canvas.getClipBounds(R
@Override
protected void onDraw(Canvas canvas) {
r = canvas.getClipBounds() ;
问题是我得到了警告:
在绘制操作期间避免对象分配:使用Canvas.getClipBounds(Rect)代替Canvas.getClipBounds(),后者分配一个临时Rect
虽然我知道上面的代码是在浪费内存资源,但我找不到方法应用Canvas.getClipBounds(Rect)来做同样的事情。如果有人能指点我,让我用一种更方便记忆的方式来做这件事,我将不胜感激
提前感谢。在调用视图的构造函数时创建您的
Rect
,或者同时声明并实例化它。例如
Rect mRect = new Rect();
和onDraw
@Override
protected void onDraw(Canvas canvas) {
canvas.getClipBounds(mRect) ;
// read the properties of mRect
在调用视图的构造函数时创建
Rect
,或者同时声明并实例化它。例如
Rect mRect = new Rect();
和onDraw
@Override
protected void onDraw(Canvas canvas) {
canvas.getClipBounds(mRect) ;
// read the properties of mRect