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

时间:2018-07-03 09:23:36

标签: java android android-layout button

我遇到以下问题:我创建了一个扩展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来说是完美的,如果我按住按钮不放,事件会在一秒钟内触发多次。

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

这对我的理解有点奇怪。

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

1 个答案:

答案 0 :(得分:0)

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

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

data