【发布时间】:2012-06-02 08:24:51
【问题描述】:
我正在开发一个允许用户将图像上传到我的服务器的 Android 应用程序。在选择屏幕上,我允许他们使用双指缩放来缩放图像,然后他们通过点击它来选择图像。我在实现时遇到了两个问题。
我遇到的第一个问题是当我使用OnClickListener 来检测图像何时被点击时。只要我的手指在图像上,这就会阻止我放大或缩小图像。我是这样实现的:
setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
ToggleSelection();
invalidate();
}
});
因为我希望他们即使用手指在图像上也能缩放图像,所以我决定采用第二种方法。我添加了一个OnTouchListener。
setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
int i = event.getAction();
Log.d("TouchInfo123","Event action: " + i);
switch(i & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_UP:
{
ToggleSelection();
invalidate();
break;
}
}
return false;
}
});
然后我注意到event.getAction() 总是返回0,即MotionEvent.ACTION_DOWN 的值。所以我转而听 MotionEvent.ACTION_DOWN 有效。有点。
我现在遇到的问题是,当我去缩放图像时,如果我的手指触摸其中一张图像,它会切换选择,这真的很烦人。
我希望能够做以下两件事之一:
使用OnClickListener,但允许我的ScaleGestureDetector 缩放图像,即使我的手指正在触摸图像
或
让OnTouchListener 与MotionEvent.ACTION_UP 一起工作,这样我就知道它们在触发触摸事件时不会缩放。
有什么建议吗?
【问题讨论】:
标签: java android ontouchlistener onclicklistener