微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android ScaleListener无法正常工作

如何解决Android ScaleListener无法正常工作

我有以下问题:我想检测和区分同一视图上的用户“触摸”和“单击”。我已经在其他视图上方的视图上注册了onTouch-Listener(参见代码)。

预期的行为::如果用户点击它,则onClick事件将被传递到其下方的视图。如果用户执行缩放手势,则下面的视图将被缩放。

使用侦听器查看

trackpad.setonTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view,MotionEvent motionEvent) {
            if(scaleDetector.onTouchEvent(motionEvent)) {
                Log.d("PadLayout","Scaling");
                return true;
            } else {
                Log.d("PadLayout","No Scale detected,this is a tap. Returning false.");
                return false;
            }
        }
    });

这是我的ScaleGestureDetector(“ scaleDetector”)中的ScaleListener:

private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
    float factor = 1;

    @Override
    public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
        factor *= scaleGestureDetector.getScaleFactor();
        factor = Math.max(1,Math.min(factor,ResourcesCompat.getFloat(getResources(),R.dimen.pad_large)));
        setPadScaleFactor(factor); // this method sets scaleX and scaleY

        return true;
    }

    @Override
    public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) {
        return true;
    }
}

代码的问题在于,它永远不会检测到敲击。我可以缩放视图,但是一旦点击它,它什么也没做。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。