2010-08-10 6 views
30

Wie zeige ich blinkender Text in android.blinkender Text in Android-Ansicht

Danke euch allen.

+0

Haben Sie versucht, die Änderung der Farbe des Textes in jeder Sekunde zum Beispiel gut funktionieren? weil ich nicht glaube, dass Sie das mit dem Framework tun können. oder vielleicht können Sie eine Webansicht mit einem Blink-Tag verwenden ... – Sephy

+0

Sie könnten einen Thread erstellen, der die Sichtbarkeit von textView zwischen View.VISIBLE und View umschaltet.UNSICHTBAR –

+0

Eigentlich glaube ich nicht, dass Sie einen WebView wie Sephy vorgeschlagen haben können; Webkit gibt das Tag (zumindest in Chrome) nicht aus. Denn nervig blinkender Text bei deinen Nutzern ist ein wirklich schlechter Weg, um ihre Aufmerksamkeit zu bekommen, und sie werden dich nicht dafür mögen. –

Antwort

11

Erstellen Sie eine Ansichtsanimation dafür. Sie können eine Alpha-Überblendung von 100% auf 0% in 0 Sekunden und wieder zurück in einem Zyklus durchführen. So handhabt Android es intelligent und Sie müssen nicht mit Threading und verschwenden CPU verschwenden.

Mehr auf Animationen hier:
http://developer.android.com/reference/android/view/animation/package-summary.html

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

+0

Was ist der beste Weg, um den Text blinken zu lassen? –

26

Eigentlich gibt es ein Osterei blink-Tag für diese in ICS! :) Ich empfehle eigentlich nicht, es zu benutzen - war wirklich amüsiert, es in der Quelle zu finden, obwohl!

<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> 
+0

Funktionierte nicht für mich: 'E/AndroidRuntime (19645): verursacht durch: android.view.InfllateException: Binär-XML-Datei Zeile # 9: Fehler beim Aufblasen der Klasse blink' –

+0

Es ist nicht dokumentiert - ich habe es von Quelle Tauchen ICS gefunden. Sieht aus wie die Änderung am 17.05.2011 eingeführt wurde. Nicht sicher, welche SDK-Nummer auch zugeordnet wird. –

+1

Oh, und wenn das nicht offensichtlich war - ich bin mir ziemlich sicher, dass das "blink" -Tag ein Osterei ist. Ich behaupte nicht ernsthaft, dass es die richtige Lösung ist! :) –

5

Es kann durch Zugabe eines ViewFlipper erfolgen, die zwei Textviews wechselt und FadeIn und Fadeout Animation kann angewendet werden, wenn sie wechseln.

Layout-Datei:

<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> 

Aktivität Code:

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

Sie können diese verwenden:

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

hoffe, das hilft!

+1

wirklich einfach und wirklich nützlich –

+2

Kopieren-Einfügen und Bingo! Danke Sany für das Teilen dieser! –

5

Die Verwendung von Threads in Ihrem Code verschwendet immer mehr CPU-Zeit und verringert die Leistung der Anwendung. Sie sollten nicht ständig Threads verwenden. Verwenden Sie, wenn nötig.

Verwendung XML Animationen für diesen Zweck:

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 Aktivität: es wie folgt verwendet werden: -

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) { 

    } 

} 

Let me wissen, wenn Sie Fragen haben ..

+0

Wie kann ich es mit 3 Farben blinken dank im Voraus! –

+0

@ We'reAllMadHere Ich würde vorschlagen, Sie Value Animator für diese Aufgabe verwenden, ist es sehr http://stackoverflow.com/questions/15582434/using-a-valueanimator-to-make-a-textview-blink-different-colors –

+0

Dies ist eine sehr klare Möglichkeit, es zu tun, aber es animiert die ganze TextView einschließlich seiner Hintergrundfarbe, wenn nicht transparent. Gibt es eine Möglichkeit, nur den 'Text' in' TextView' zu blinken –

0
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; 

erstellen nun Methode

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

Jetzt Update-Methode erstellen

es zu blinken
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(); 
} 

} 

Jetzt