我有一个游戏 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

10-05 17:55