2013-07-04 64 views
0

對於我正在開發的應用程序,我想繪製來自計步器的結果。計步器使用service來衡量某人在後臺進行的步數。我有一個名爲DrawView的自定義視圖,我想在其中繪製我的結果。無論何時測量一個步驟,我都會從我的service中調用drawPoint方法。然後從我的drawPoint方法,我嘗試使用invalidate()撥打onDraw()。根據我的日誌,drawPoint被調用,但onDraw()不是。所以我的問題是:onDraw()不在自定義視圖中調用

爲什麼onDraw()沒有被調用,我該如何讓DrawView調用它?


public class DrawView extends View { 

... 

@Override 
public void onDraw(Canvas canvas) { 
    for (Point point : points) { 
     canvas.drawCircle(point.x, point.y, 5, paint); 
     Log.d("Checks", "onDraw is called"); 
    } 
} 

public void drawPoint(int counter) { 
    Log.d("Checks", "Point coordinates: " + 40 + ", " + counter); 

    Point point = new Point(); 
    point.y = 40; 
    point.x = counter; 
    points.add(point); 
    invalidate(); 
} 
} 
+0

你在哪裏調用drawPoint()? –

+0

改爲直接從服務調用view.drawPoint(),使用處理程序更新UI。 – vakman

回答

相關問題