Android: анимируйте представление, чтобы двигаться вверх в зависимости от значения - PullRequest
0 голосов
/ 09 мая 2018

У меня есть CollapsingToolbarLayout и AppBarLayout, и я вычислил процент от того, сколько пользователь прокручивает и выполняет определенные анимации с помощью этого кода:

appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {

            float totalScrollRange = Math.abs(appBarLayout.getTotalScrollRange());
            float offset = Math.abs(verticalOffset);
            float scrollOffsetPercentageReverse;
            float scrollOffsetPercentage;
            float percentage;

            if (offset > 0) {
                percentage = (offset / totalScrollRange) * 100;
            } else {
                percentage = 0;
            }

            int reverse = 100 - (int) percentage; // 100 = 0,
            if (reverse > 0) {
                scrollOffsetPercentageReverse = 255.0f * (reverse / 100.0f);
                scrollOffsetPercentage = 255 * (percentage / 100);

                mBookCoverThumb.setImageAlpha((int) scrollOffsetPercentageReverse);

            }

            float scalePercentage = reverse / 100.0f;

            mBookCoverThumb.setScaleX(scalePercentage);
            mBookCoverThumb.setScaleY(scalePercentage);

        }
    });

Как видите, я выполнил анимацию Scale и Alpha на mBookCoverThumb. Тем не менее, я хочу, чтобы он также анимировал движение вверх, основываясь на процентном значении, которое у меня есть, и наоборот, когда он возвращается на свое первоначальное место. Я пробовал view.animate().translationY(percentage) и view.setTranslateY(percentage), но я не думаю, что делаю это правильно. Есть предложения?

Вот текущее поведение:

enter image description here

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * mBookCover привязан к моему AppBarLayout, поэтому он перемещается немного выше, когда я выполняю прокрутку, но я считаю, что ограничения макета не позволяют ему прокручиваться дальше вверх.

...