对于我正在开发的应用,我想用计步器绘制结果图。计步器使用service
来测量某人在后台执行的步数。我有一个名为DrawView的自定义视图,我想在其中绘制我的结果。每当测量一个步骤时,我都会从service
调用drawPoint方法。然后从我的drawPoint方法尝试使用onDraw()
调用invalidate()
。根据我的日志,正在调用drawPoint,但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 :(得分:1)
而是直接从服务中调用view.drawPoint(),使用handler来更新ui。
答案 1 :(得分:0)
必须从UI线程调用invalidate()。请尝试调用postInvalidate()。
http://developer.android.com/reference/android/view/View.html#invalidate()