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