Android Animate Alpha во время анимации перетаскивания теперь работает - PullRequest
0 голосов
/ 28 октября 2019

Я добавил функцию перетаскивания в компонент, используя ViewDragHelper, и я пытаюсь добавить анимацию затухания к компоненту, чтобы, когда пользователь касается экрана и перетаскивал его, он изменял альфа-компонент компонента с помощью анимации. Проблема состоит в том, что анимация ожидает остановки взаимодействия с пользователем, а затем применяет анимацию, чтобы во время перехода компонента вы не видели альфа-анимацию,

override fun clampViewPositionVertical(child: View, top: Int, dy: Int): Int {
        if(top < verticalRange)
            return verticalRange
        backgroundView.animate().alpha((backgroundView.alpha - 0.05).toFloat()).duration = 10
        return top
    }

Событие при касании:

 override fun onTouchEvent(event: MotionEvent): Boolean {
            return if (isDragEnabled && (isControlScreenLayoutTarget(event) || isMoving)) {
                viewDragHelper.processTouchEvent(event)
                true
            } else {
                super.onTouchEvent(event)
            }
        }

1 Ответ

0 голосов
/ 29 октября 2019

Вы не должны начинать анимацию с clampViewPositionVertical(). Этот метод вызывается, чтобы вернуть границы, куда будет перемещаться представление, фактически прокручивать.

Вместо этого вам следует подождать, пока не будет выпущено представление, другими словами, запустить анимацию, как только проверка диапазона будет выполнена в onViewReleased().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...