How to make the textview blinking
AndroidAndroid AnimationTextviewAndroid Problem Overview
Guys i have a textview which i need it to be blinking please help me with it.
<TextView
android:id="@+id/usage"
android:layout_marginTop="220dip"
android:layout_marginLeft="45dip"
android:layout_marginRight="15dip"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Google "
android:textColor="#030900"/>
I want the google text to be blinking
Android Solutions
Solution 1 - Android
You can use this:
TextView myText = (TextView) findViewById(R.id.myText );
Animation anim = new AlphaAnimation(0.0f, 1.0f);
anim.setDuration(50); //You can manage the blinking time with this parameter
anim.setStartOffset(20);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);
myText.startAnimation(anim);
It's the same answer I gave in this post https://stackoverflow.com/questions/3450839/blinking-text-in-android-view/11991435
Hope this helps!
Solution 2 - Android
Use XML Animations for this purpose :
R.anim.blink
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="600"
android:repeatMode="reverse"
android:repeatCount="infinite"/>
</set>
Blink Activity: use it like this :-
public class BlinkActivity extends Activity implements AnimationListener {
TextView txtMessage;
Button btnStart;
// Animation
Animation animBlink;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blink);
txtMessage = (TextView) findViewById(R.id.txtMessage);
btnStart = (Button) findViewById(R.id.btnStart);
// load the animation
animBlink = AnimationUtils.loadAnimation(this,
R.anim.blink);
// set animation listener
animBlink.setAnimationListener(this);
// button click event
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtMessage.setVisibility(View.VISIBLE);
// start the animation
txtMessage.startAnimation(animBlink);
}
});
}
@Override
public void onAnimationEnd(Animation animation) {
// Take any action after completing the animation
// check for blink animation
if (animation == animBlink) {
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
}
Let me know if you have any queries..
Solution 3 - Android
Edited
It is a deprecated answer to Android before version 3.0
honeycomb, please uses SolArabehety's answer or look at this thread.
The only reason I keep this answer is to historical reasons before android 3.0 Android animations had a lot of problems, this "bad" solution work at that time, nowadays it is unthinkable to use it, so just go for an animation solution, don't use this code.
Original Answer
package teste.blink;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;
public class TesteBlinkActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
blink();
}
private void blink(){
final Handler handler = new Handler();
new Thread(new Runnable() {
@Override
public void run() {
int timeToBlink = 1000; //in milissegunds
try{Thread.sleep(timeToBlink);}catch (Exception e) {}
handler.post(new Runnable() {
@Override
public void run() {
TextView txt = (TextView) findViewById(R.id.usage);
if(txt.getVisibility() == View.VISIBLE){
txt.setVisibility(View.INVISIBLE);
}else{
txt.setVisibility(View.VISIBLE);
}
blink();
}
});
}
}).start();
}
<TextView
android:id="@+id/usage"
android:layout_marginTop="220dip"
android:layout_marginLeft="45dip"
android:layout_marginRight="15dip"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Google "
android:textColor="#030900"/>
Solution 4 - Android
Don't need set for this. Just alpha:
anim/flash_leave_now.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="900"
android:fromAlpha="1.0"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toAlpha="0.2"/>
And in code:
mTextView.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.flash_leave_now));
Solution 5 - Android
Create an AlphaAnimation and apply it to the textview in the activity where you setup the textview. The blinking would be accomplished by repeating an animation from 1.0 alpha to 0.0 alpha to 1.0 alpha.
Edit: Google provideth.
Solution 6 - Android
Just use the <blink/>
tag.
<blink
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/usage"
android:layout_marginTop="220dip"
android:layout_marginLeft="45dip"
android:layout_marginRight="15dip"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Google "
android:textColor="#030900"/>
</blink>
Solution 7 - Android
You can make an animation or maybe why not making it View.VISIBLE and View.INVISIBLE with a timer? I think the better way is the animation with alpha indeed :)
Solution 8 - Android
Courtesy to the top answer, this is what i did:
textBlink = new TimerTask() {
int countdown = 10;
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (countdown <= 0) {
timer.cancel();
textview.setVisibility(View.GONE);
} else {
textview.setVisibility(textview.getVisibility() == View.VISIBLE?View.GONE:View.VISIBLE);
countdown--;
}
}
});
}
};
then somewhere on the code:
timer = new Timer();
timer.scheduleAtFixedRate(textBlink,0,500);
This will do a blink effect for 5 seconds. Recommended for if you don't want the fadeIn-fadeOut effect.
Solution 9 - Android
private fun blink() {
val handler = Handler()
Thread(Runnable {
val timeToBlink = 500 //in milissegunds
try {
Thread.sleep(timeToBlink.toLong())
} catch (e: Exception) {
}
handler.post(Runnable {
if (usage.visibility == View.VISIBLE) {
usage.visibility = View.INVISIBLE
} else {
usage.visibility = View.VISIBLE
}
blink()
})
}).start()
}
Solution 10 - Android
public final class BlinkEffectUtils {
private static BlinkEffectUtils blinkEffect;
public enum PROPERTY_TYPE {
BACKGROUND_COLOR,
TEXT_COLOR
}
private BlinkEffectUtils() {
}
public static BlinkEffectUtils getInstance(Context context) {
if (blinkEffect == null) {
blinkEffect = new BlinkEffectUtils();
}
return blinkEffect;
}
public void setBlinkEffect(Object targetView, PROPERTY_TYPE property_type, int duration, int defaultColor, int effectColor) {
String propertyName = "";
switch (property_type) {
case TEXT_COLOR:
propertyName = "textColor";
break;
case BACKGROUND_COLOR:
propertyName = "backgroundColor";
break;
}
@SuppressLint("ObjectAnimatorBinding")
ObjectAnimator anim = ObjectAnimator.ofInt(targetView, propertyName,
effectColor,
defaultColor);
anim.setDuration(duration);
anim.setEvaluator(new ArgbEvaluator());
anim.setRepeatMode(ValueAnimator.REVERSE);
anim.setRepeatCount(ValueAnimator.INFINITE);
anim.start();
}
}
Solution 11 - Android
Here is my helper implementation using an alpha animation:
public void blinkText(final TextView text_to_animate, int durationMillis) {
final AlphaAnimation fade_out = new AlphaAnimation(1.0f, 0.0f);
//ScaleAnimation scale_it = new ScaleAnimation(1.0f, 1.25f, 1.0f, 1.25f);
fade_out.setDuration(durationMillis);
final AlphaAnimation fade_in = new AlphaAnimation(0.0f, 1.0f);
//ScaleAnimation scale_it = new ScaleAnimation(1.0f, 1.25f, 1.0f, 1.25f);
fade_in.setDuration(durationMillis);
fade_out.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
if (recording == true)
text_to_animate.startAnimation(fade_in);
}
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
});
fade_in.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
if (recording == true)
text_to_animate.startAnimation(fade_out);
}
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
});
text_to_animate.startAnimation(fade_out);
}