1

我有一个带有移动和缩放功能的 ImageView 自定义,以及按钮。如何在第一次单击 Button 时禁用 ImageVIew 上的触摸事件,并在第二次单击 Button 时启用 ImageVIew 上的触摸事件。谢谢。

4

2 回答 2

2

我还没有尝试过。但是您可以通过以下方式进行操作:

创建一个公共布尔变量

public boolean isClickedFirstTime = true;

使您的 imageView 在 xml 中启用 true 和

onClick 你的按钮

 @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;
                }
}
于 2013-10-18T05:09:55.440 回答
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
}
于 2013-10-18T05:25:52.950 回答