2013-07-04 35 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

回答

相关问题