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é?
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();
}
});
}
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();
}
});
}
Vous pouvez également utiliser Frame Animation