2012-11-22 35 views
3

我在畫布上繪製一個橢圓:安卓rectF警告

RectF f = new RectF(-r, -r, r, r); 
canvas.drawOval(f , mPaint); 

爲什麼我看到RectF警告?

在抽吸/佈局操作(預分配 和重用代替)避免對象分配

回答

14

它正是這樣說的:在onDraw裏面做new RectF會在每次繪製任何東西時創建一個對象。這可能是很多對象。只需使用單一RectF

RectF mRect = new RectF(); 

protected void onDraw(Canvas canvas) { 
    mRect.set(-r, -r, r, r); 
    canvas.drawOval(mRect, mPaint); 
} 

只是要清楚:你原來的代碼是邏輯正確。這只是一個性能改進(儘管很重要)。

2

剛剛創建RectF對象一次,每次你,否則你畫會造成太多的RectF反對,也時刻重用影響表演。