How to make the textview blinking

AndroidAndroid AnimationTextview

Android 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();
    }

http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#ffffff">

<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);		
		
	}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGoofyView Question on Stackoverflow
Solution 1 - AndroidSolArabehetyView Answer on Stackoverflow
Solution 2 - AndroidGaurav AroraView Answer on Stackoverflow
Solution 3 - Androidademar111190View Answer on Stackoverflow
Solution 4 - AndroidPrakashView Answer on Stackoverflow
Solution 5 - AndroidNick CampionView Answer on Stackoverflow
Solution 6 - AndroidHounshellView Answer on Stackoverflow
Solution 7 - AndroidClimbatizeView Answer on Stackoverflow
Solution 8 - AndroidIrshuView Answer on Stackoverflow
Solution 9 - AndroideagerprinceView Answer on Stackoverflow
Solution 10 - AndroidCaner YılmazView Answer on Stackoverflow
Solution 11 - Androidcode4causeView Answer on Stackoverflow