在ActionBarActivity中更新画布

时间:2015-02-10 19:52:07

标签: android canvas

在调用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开发很新。

谢谢!

1 个答案:

答案 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

阅读以下链接: CanvasCanvas and Drawables