我有一个带有移动和缩放功能的 ImageView 自定义,以及按钮。如何在第一次单击 Button 时禁用 ImageVIew 上的触摸事件,并在第二次单击 Button 时启用 ImageVIew 上的触摸事件。谢谢。
问问题
11686 次
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 回答