У меня есть 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)
, но я не думаю, что делаю это правильно. Есть предложения?
Вот текущее поведение:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * mBookCover
привязан к моему AppBarLayout
, поэтому он перемещается немного выше, когда я выполняю прокрутку, но я считаю, что ограничения макета не позволяют ему прокручиваться дальше вверх.