Is there any way, in code, to make a button flash continually and then stop flashing when pressed?
android - How can I make a button flash?
Asked Answered
There are several, depending on what kind of flashing you mean.
You can, for example, use alpha animation and start it as your button first appears. And when the user clicks button, in your OnClickListener
just do clearAnimation()
.
Example:
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();
}
});
}
Alex: thanks for swift solution. I am learning Android with my first app and had not got around to animation - shall do so now. –
Cobby
Will this work with a menu item as well? If so, might I ask how? –
Glittery
You can use this code and as well as you can also decide the blink timing of button via mAnimation.setDuration(200);.The code is as follows.
@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();
}
});
}
© 2022 - 2024 — McMap. All rights reserved.