對於我正在開發的應用程序,我想繪製來自計步器的結果。計步器使用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();
}
}
你在哪裏調用drawPoint()? –
改爲直接從服務調用view.drawPoint(),使用處理程序更新UI。 – vakman