通过onTouchEvent更改画布的颜色

时间:2014-05-22 14:55:36

标签: java android eclipse canvas android-sdk-tools

我想在用户触摸屏幕后立即更改画布的背景色。

这是我的onDraw。在这里,我为变量指定一种颜色,然后在画布上使用颜色变量。这很完美。

@Override
    protected void onDraw(Canvas canvas) {

        int backgroundColour = Color.BLACK;
        canvas.drawColor(backgroundColour);
}

这是我的onTouchEvent。在这里,我检查用户是否触摸屏幕(我检查了这个并且开关识别出触摸了屏幕)。变量colourRed在文档顶部启动,并且与变量backgroundColour具有相同的代码,但以红色为颜色。

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN :
        canvas.drawColor(colourRed);
        invalidate();
        return true;
    }
    return super.onTouchEvent(event);
}

但是每当我触摸屏幕时,应用程序都会崩溃。我知道它与

有关
canvas.drawColor(colourRed);

但我不知道如何修复代码,以便当用户触摸屏幕时背景会改变颜色。

1 个答案:

答案 0 :(得分:0)

您是否将传递的canvas对象存储到onDraw(),然后在其他方法的上下文中使用它?这在Android中是不允许的。

您应该在setBackgroundColor(Color.RED);中使用onTouchEvent()。或者看看State List Drawables以达到同样的效果。