Comment afficher Texte clignotant sous Android.
Merci à tous.
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!
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>
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
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..
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));
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