Qual é a melhor maneira de obter um efeito de animação elástica / rebatida no ViewPager?
Eu quero exibir umViewPager
com um efeito deslizante de salto / elástico. Suponho que isso seja possível usando alguma combinação de umPageTransformer
e umBounceInterpolator
.
O que eu não sei équão. Até agora, fui incapaz de conseguir isso.
Um exemplo típico dePageTransformer
seria algo como isto:
public class TypicalPageTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(View view, float position) {
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 0) { // [-1,0]
// Use the default slide transition when moving to the left page
view.setAlpha(1);
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1);
} else if (position <= 1) { // (0,1]
// Fade the page out.
view.setAlpha(1 - position);
// Counteract the default slide transition
view.setTranslationX(pageWidth * -position);
// Scale the page down (between MIN_SCALE and 1)
float scaleFactor = MIN_SCALE
+ (1 - MIN_SCALE) * (1 - Math.abs(position));
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
} else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
}
A questão é: como trazemos umaInterpolator
(de qualquer tipo) na imagem aqui?De onde tiramos oAnimation
objeto para oViewPager
animação de, para definir umInterpolator
para isso?
Eu já me referi aos seguintes posts:
android VIewpager Como obter o efeito vinculado.
Adicione o efeito "Rubber Band" no android enquanto altera o plano de fundo do aplicativo.
O terceiro post tem uma resposta que menciona exatamente essa abordagem, mas não fornece nenhum detalhe sobre como.
Alguém sabe exatamente como vamos combinar umBounceInterpolator
com umPageTransformer
? esteparece ser uma abordagem orgânica e coerente para esse problema, mas é mesmo possível? Ou existe outra solução lógica para isso?
Referências:
Personalize oViewPager
comPageTransformer
.N.B:
istodevemos possível obter um efeito de animação elástica / de salto simplesmente combinando umInterpolator
e umPageTransformer
e sem precisar estender oViewPager
. Outras abordagens também são bem-vindas, mas forneça uma solução detalhada com código, não apenas um esboço.