Событие onTouch в макете, регистрирующее только одно касание за клик - PullRequest
0 голосов
/ 03 июля 2018

У меня следующая проблема: я создал новый класс, расширяющий ConstraintLayout, и переопределяю функцию onTouchEvent для анимации макета.

@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);
    }

Это работает безупречно для кнопок, и если я удерживаю кнопку нажатой, событие срабатывает несколько раз в секунду.

Но в ConstraintLayout он срабатывает только один раз, точно так же, как событие onClick.

Это немного утомительно в моем понимании.

У вас есть решение этой проблемы?

1 Ответ

0 голосов
/ 04 июля 2018

Хорошо, я наконец нашел решение.

Вам просто нужно сделать свой макет кликабельным.

android:clickable="true"
...