如何禁用和重新启用触摸事件

时间:2013-10-18 05:05:34

标签: android ontouchevent

我有一个带有移动和缩放设置的ImageView自定义,以及Button。如何在首先单击按钮时禁用ImageVIew上的触摸事件,并在单击按钮秒时在ImageVIew上启用触摸事件。 感谢。

2 个答案:

答案 0 :(得分:2)

我还没试过。但你可以用以下方式做到:

制作一个公共布尔变量

public boolean isClickedFirstTime = true;

在xml和

中启用imageView

单击按钮

 @Override
        public void onClick(View v) {
    if (v.getId() == R.id.button_id) { //whatever your id of button

    if(isClickedFirstTime)
                {
                imageView.setEnabled(false);
                isClickedFirstTime = false;
                }
                else
                {
                  imageView.setEnabled(true);
                  isClickedFirstTime = true;
                }
}

答案 1 :(得分:1)

我建议您使用布尔值或枚举(下面的ViewState)来帮助您管理活动的状态。进入onTouchEvent回调后,只需返回活动没有所需的状态。

这是一个非常简短的例子,说明如何做到这一点:

private enum ViewState {
    LOADING,    // Just an example of other states you could have
    VIEWING,
    EDITING;
}

private ViewState eViewState = ViewState.VIEWING;

/**
 * Event attached to your button.
 */
@Override
public void onClick(View v) {
    if (eViewState == ViewState.EDITING)
        eViewState = ViewState.VIEWING;
    else
        eViewState = ViewState.EDITING;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // Touch events should not be recorded if you're not editing anything.
    if (eViewState != ViewState.EDITING)
        return false;

    // ...
    // The rest of your code to scale, zoom, translate, etc
}