AndroidSurfaceView触摸屏工作不正常

AndroidSurfaceView触摸屏工作不正常,android,surfaceview,Android,Surfaceview,我正在创建一个国际象棋游戏,我正在使用flag变量来检查白色或黑色回合 首先,我创建了一个棋盘,使用表面视图并在画布上绘制位图来显示国际象棋的元素 但我的问题是,当我每次触摸画布时,它调用onDraw()-方法,即使我没有调用invalidate(),也没有在onTouch()中返回false 我注意到默认情况下,您总是(?)返回false。通常,如果您不知道返回什么(返回true意味着您使用了该触摸事件),请使用return super.onTouchEvent(事件)取而代之。但是,这可能与

我正在创建一个国际象棋游戏,我正在使用flag变量来检查白色或黑色回合

首先,我创建了一个棋盘,使用表面视图并在画布上绘制位图来显示国际象棋的元素

但我的问题是,当我每次触摸画布时,它调用
onDraw()
-方法,即使我没有调用
invalidate()
,也没有在
onTouch()中返回false


我注意到默认情况下,您总是(?)返回
false
。通常,如果您不知道返回什么(返回
true
意味着您使用了该触摸事件),请使用
return super.onTouchEvent(事件)取而代之。但是,这可能与您的问题无关。

这是一个问题,因为?njzk2说了什么。还有,问题是什么?问题是,当我触摸画布时,onDraw()正在创建,或者我正在调用invalidate(),或者没有。在同一布局中,您是否还有其他视图,并且您是否正在对它们进行任何更改?。如果布局发生任何更改,也将调用onDraw。实际上,您可以强制调用onDraw,但不能停止调用。调用onDraw不应该改变视图的状态,而应该绘制视图的状态。您应该在成员变量中保留单独的状态,并根据用户操作进行更改。不,我在完整屏幕上有一个画布,但当我在任何地方触摸它时,它都会重新绘制完整视图非常感谢您的回复,但我的疑问是,为什么在触摸画布时画布会重新绘制完整视图,尽管我没有调用invalidate()
@Override
public boolean onTouchEvent(MotionEvent event) {
    if(white){
        // Code for select
        // Code for move element
        // IF Invalid move ( Donot want to call onDraw() so i return here   -
        false and i did not call invalidate() but it redraw view)
    }else if(black){
        // same code for balck
    }
}