1

我有可缩放的图像,我正在使用ScaleGestureDetector.SimpleOnScaleGestureListener. 我需要实施以下项目:

  1. 单击时会出现带有图片信息的 Toast。
  2. 双击图像正在缩放。

我有一些问题。在双击之前始终是单击并且图片正在缩放,但出现 Toast。有什么办法可以避免单击吗?我没有足够的智慧来解决这个问题。

PS不能使用OnDoubleTapListener,因为使用ScaleGestureDetector.SimpleOnScaleGestureListener.

UPD

case MotionEvent.ACTION_UP:
    firstTime = System.currentTimeMillis();
    if (Math.abs(firstTime-secondTime) < 300L) {
    // scale my matrix
    ---//---
    DONE = true; //this flag symbolize, that toast doesn't appear (false - appears)
    }
    else if (!DONE) {
         // making toast
    }
    secondTime = firstTime;
    break;

当 DoubleTap 启用图像缩放但出现 toast 时

4

2 回答 2

2

@matt5784,谢谢。我能够解决我的问题。

case MotionEvent.ACTION_UP:
    float xDiff =  Math.abs(curr.x - start.x);
    float yDiff =  Math.abs(curr.y - start.y);
    firstTime = System.currentTimeMillis();
    if (Math.abs(firstTime-secondTime) > 200L) {
        myHand.postDelayed(mRun, 200);
    }
    else if (!DONE) {
        //scale my matrix
        DONE = true; //this flag symbolize, that toast doesn't appear (false - appears)
    }
    secondTime = firstTime;
    break;

Handler myHand = new Handler();
private Runnable mRun = new Runnable() {
    @Override
    public void run() {
        if (!DONE) {
                     // make toast
        }
    } 
于 2012-05-27T17:24:11.970 回答
0

我建议实施延迟,其中信息不会在单击时立即弹出,但只有在合理的时间内没有遇到第二次点击时才会显示(可能是双击的阈值) . 即,如果设置为在 0.2 秒内将任何轻按注册为双击,则在您等待 0.2 秒并确定没有双击之前不要显示信息。

替代解决方案(可能不太有用) - 让双击/缩放功能调用使信息框消失的任何功能。但是,它可能仍会在很短的时间内弹出,这可能看起来很愚蠢/有问题。

于 2012-05-24T14:47:40.780 回答