web-dev-qa-db-fra.com

Texte clignotant dans la vue Android

Comment afficher Texte clignotant sous Android.

Merci à tous. 

31
David Prun

Vous pouvez utiliser ceci:

TextView myText = (TextView) findViewById(R.id.myText );

Animation anim = new AlphaAnimation(0.0f, 1.0f);
anim.setDuration(50); //You can manage the time of the blink with this parameter
anim.setStartOffset(20);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);
myText.startAnimation(anim);

J'espère que cela t'aides!

109
SolArabehety

En fait, il existe une étiquette clignotante œuf de Pâques dans ICS! :) Je ne recommande pas réellement de l'utiliser - était VRAIMENT amusé de le trouver dans la source!

<blink xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">
    <TextView 
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="I'm blinking"
        />
</blink>
26
Bill Phillips

Créez une animation de vue pour elle. Vous pouvez créer un fondu alpha de 100% à 0% en 0 seconde et vice-versa. De cette façon, Android le gère intelligemment et vous n'avez pas à vous soucier de threading et de perte de temps CPU.

Plus sur les animations ici:
http://developer.Android.com/reference/Android/view/animation/package-summary.html

Didacticiel:
http://developerlife.com/tutorials/?p=343

11
CodeFusionMobile

L'utilisation de threads dans votre code gaspille toujours le temps processeur et diminue les performances de l'application. Vous ne devriez pas utiliser les discussions tout le temps. Utilisez si nécessaire.

Utilisez des animations XML à cette fin:

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>

Activité de clignotement: utilisez-le comme ceci: -

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(getApplicationContext(),
                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) {

    }

}

Faites-moi savoir si vous avez des questions..

5
Gaurav Arora

Cela peut être fait en ajoutant un ViewFlipper qui alterne deux TextViews et une animation Fadein et Fadeout peut être appliquée lorsqu’ils changent.

Fichier de mise en page:

<ViewFlipper Android:id="@+id/flipper" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:flipInterval="1000" >

<TextView Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:gravity="center_horizontal" Android:text="TEXT THAT WILL BLINK"/>

<TextView Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:gravity="center_horizontal" Android:text="" />

</ViewFlipper>

Code d'activité:

private ViewFlipper mFlipper;
mFlipper = ((ViewFlipper)findViewById(R.id.flipper));
mFlipper.startFlipping();
mFlipper.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(), Android.R.anim.fade_in));
mFlipper.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(), Android.R.anim.fade_out));
5
Anenth
If you want to make text blink on canvas in bitmap image so you can use this code
we have to create two methods 
So first, let's declare a blink duration and a holder for our last update time: 
private static final  int BLINK_DURATION = 350; // 350 ms
private long lastUpdateTime = 0; private long blinkStart=0;

maintenant créer la méthode

    public void render(Canvas canvas) {
    Paint paint = new Paint();
    Paint.setTextSize(40);
    Paint.setColor(Color.RED);
    canvas.drawBitmap(back, width / 2 - back.getWidth() / 2, height / 2
            - back.getHeight() / 2, null);
    if (blink)
        canvas.drawText(blinkText, width / 2, height / 2, Paint);
}

Maintenant, créez la méthode de mise à jour pour clignoter

public void update() {
if (System.currentTimeMillis() - lastUpdateTime >= BLINK_DURATION
        && !blink) {
    blink = true;
    blinkStart = System.currentTimeMillis();
}
if (System.currentTimeMillis() - blinkStart >= 150 && blink) {
    blink = false;
    lastUpdateTime = System.currentTimeMillis();
 }

}

Maintenant ça marche bien

0