J'ai une vue de défilement et lorsque l'utilisateur la fait défiler, je veux changer la couleur d'arrière-plan lentement et progressivement. Comment puis-je atteindre les objectifs suivants?
0
Mickey
3 nov. 2019 à 20:08
1 réponse
Utilisez un NestedScrollView
et joignez un OnScrollChangeListener
. Combinez-le ensuite avec un ARGBEvaluator
pour générer une couleur et définissez-le comme arrière-plan. Je vais de mémoire, mais quelque chose comme:
final ArgbEvaluator evaluator = new ArgbEvaluator();
final colorStart = Color.GREEN;
final colorEnd = Color.BLUE;
nestedScrollView.setOnScrollChangedListener((view, scrollX, scrollY, oldX, oldY) -> {
final float height = (float) v.getHeight();
if(height <= 0) return;
final float progress = (float)((float)scrollY/v.getHeight());
background.setBackgroundColour((int)evaluator.evaluate(progress, startColor, endColor);
});
0
PPartisan
3 nov. 2019 à 17:17