布局上的onTouch事件每次单击仅注册一次触摸

derteufelqwe

我有以下问题:我创建了一个扩展ConstraintLayout的新类,并且我重写了onTouchEvent函数以使Layout动画化。

@Override
    public boolean onTouchEvent(MotionEvent event) {

        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(this, "scaleX", 0.85f);
                ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(this, "scaleY", 0.85f);
                scaleDownX.setDuration(100);
                scaleDownY.setDuration(100);

                AnimatorSet scaleDown = new AnimatorSet();
                scaleDown.play(scaleDownX).with(scaleDownY);

                scaleDown.start();
                break;

            case MotionEvent.ACTION_CANCEL:
                Log.d("arne", "CANCEL");
                // Beide Cases lösen das Event aus
                // ACTION_CANCEL minimiert den Button auch, wenn man den Knopf nicht loslässt, sondern weg wischt
            case MotionEvent.ACTION_UP:
                ObjectAnimator scaleUpX = ObjectAnimator.ofFloat(this, "scaleX", 1f);
                ObjectAnimator scaleUpY = ObjectAnimator.ofFloat(this, "scaleY", 1f);
                scaleUpX.setDuration(100);
                scaleUpY.setDuration(100);

                AnimatorSet scaleUp = new AnimatorSet();
                scaleUp.play(scaleUpX).with(scaleUpY);

                scaleUp.start();
                break;
        }

        return super.onTouchEvent(event);
    }

这对于Buttons来说是完美的,如果我按住按钮不放,Event将在一秒钟内触发多次。

但是在ConstraintLayout上,它仅触发一次,就像onClick事件一样。

我的理解有点奇怪。

您对此问题有解决方案吗?

derteufelqwe

好的,我终于找到了解决方案。

您只需要将布局设置为可点击即可。

android:clickable="true"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章