在调用drawLine()之后,我在更新画布时遇到问题;
这是我的代码:
public class Map extends ActionBarActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Paint p = new Paint();
Log.v("Tag", "in here");
Log.v("Tag", Integer.toString(customView.lines.size()));
switch (item.getItemId()) {
case R.id.action_undo:
customView.lines.remove(customView.lines.size() - 1);
Canvas c = new Canvas();
for (Line line: customView.lines){
Log.v("Tag", "in here2");
c.drawLine(line.startX,line.startY,line.endX,line.endY,p);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
我希望在调用此方法后直接更新画布。但是,我知道如何执行此操作的唯一方法是使用invalidate()方法,这只能在View中完成。有关如何使这项工作的任何建议? Android开发很新。
谢谢!
答案 0 :(得分:0)
你没有吸引任何东西。 你需要实现一个自定义视图,你可能已经看过你的代码了,它允许你画一条线。
public class CustomDrawableView extends View {
protected void onDraw(Canvas canvas) {
for (Line line: customView.lines){
Log.v("Tag", "in here2");
c.drawLine(line.startX,line.startY,line.endX,line.endY,p);
}
}
}
在GitHub上查看以下代码: YetAnotherDrawableDemo
阅读以下链接: Canvas, Canvas and Drawables