web-dev-qa-db-fra.com

android - Comment faire clignoter un bouton?

Existe-t-il un moyen, dans le code, de faire clignoter un bouton en continu puis d'arrêter de clignoter lorsqu'il est enfoncé?

41
ron

Il y en a plusieurs, selon le type de clignotement que vous voulez dire. Vous pouvez, par exemple, utiliser l'animation alpha et la démarrer dès que votre bouton apparaît pour la première fois. Et lorsque l'utilisateur clique sur le bouton, dans votre OnClickListener faites simplement clearAnimation().

Exemple:

public void onCreate(Bundle savedInstanceState) {
    final Animation animation = new AlphaAnimation(1, 0); // Change alpha from fully visible to invisible
    animation.setDuration(500); // duration - half a second
    animation.setInterpolator(new LinearInterpolator()); // do not alter animation rate
    animation.setRepeatCount(Animation.INFINITE); // Repeat animation infinitely
    animation.setRepeatMode(Animation.REVERSE); // Reverse animation at the end so the button will fade back in
    final Button btn = (Button) findViewById(R.id.your_btn);
    btn.startAnimation(animation);
    btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(final View view) {
            view.clearAnimation();
        }
    });
}
117
Alex Orlov

Vous pouvez utiliser ce code et vous pouvez également décider du moment du clignotement du bouton via mAnimation.setDuration (200);. Le code est le suivant.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    select=(Button)findViewById(R.id.bSelect);
    Animation mAnimation = new AlphaAnimation(1, 0);
    mAnimation.setDuration(200);
    mAnimation.setInterpolator(new LinearInterpolator());
    mAnimation.setRepeatCount(Animation.INFINITE);
    mAnimation.setRepeatMode(Animation.REVERSE); 
    select.startAnimation(mAnimation);
    select.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            v.clearAnimation();


        }
    });

}
13
Deepak Sharma

Vous pouvez également utiliser Frame Animation

1
bivy