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