我有一个游戏 View ,它是View类的扩展。在此 View 中,我使用 Canvas 绘图对象,用户可以与它们进行交互。
该 View 已加载到 Activity 的布局中。当在布局中单击一个按钮时,我想禁用所有用户对游戏 View 的输入。
我尝试使用
gameView.setEnabled(false);
gameView.setClickable(false);
但是用户仍然可以与 Canvas 对象进行交互。
仅供引用:Gameview类也实现以下接口(interface)。
public class Gameview extends View implements OnGestureListener,
OnDoubleTapListener, OnScaleGestureListener, AnimationListener
最佳答案
在您的GameView中,像这样实现onTouchEvent()。
public class GameView extends View {
public boolean isTouchable() {
return isTouchable;
}
public void setTouchable(boolean isTouchable) {
this.isTouchable = isTouchable;
}
private boolean isTouchable= true;
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public GameView(Context context) {
super(context);
}
//// ... Your Code
@Override
public boolean onTouchEvent(MotionEvent event) {
if(isTouchable){
return super.onTouchEvent(event); // Enable touch event
}
return false; // Block touch event
}
}
如何使用?
gameView.setTouchable(false); // to disable touch
gameView.setTouchable(true); // to enable touch