2011-10-06 4 views
6

Voglio essere in grado di fare un'animazione di testo e modificare la dimensione del testo in un TextView. Ho letto che ci sono animazioni di proprietà in Android ma se qualcuno conosce un codice semplice che può fare questo per me o un esempio da qualche parte lo apprezzerò profondamente. Grazie in anticipo!animazione della dimensione del testo di TextView

+0

correlati [Animazione della dimensione del testo di Android TextView e non dell'intera TextView] (// stackoverflow.com/a/30324368) – Tushar

risposta

15

scale.xml

<?xml version="1.0" encoding="utf-8"?> 
<set 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
      android:fromXScale="1.0" 
      android:fromYScale="1.0" 
      android:toXScale="2.0" 
      android:toYScale="2.0" 
      android:duration="3000"></scale> 
</set> 

Una funzione in un'attività:

private void RunAnimation() 
{ 
    Animation a = AnimationUtils.loadAnimation(this, R.anim.scale); 
    a.reset(); 
    TextView tv = (TextView) findViewById(R.id.firstTextView); 
    tv.clearAnimation(); 
    tv.startAnimation(a); 
} 

estratto e modificato dal here

+1

Grazie, mi ha aiutato molto. Ma stavo anche girovagando si poteva fare con un'animazione di proprietà sul testo, e non con l'intera vista del testo? – Sandra

+0

'scale.xml' va sotto **/res/anim/** – gnB

3

Che ne dici di this link? In particolare gli esempi di scala. Fornisce codice sorgente e video per diversi tipi di animazioni Android.

+1

Grazie per la tua rapida r esponse e per il link. Controllerò. – Sandra

+0

Non fare affidamento sul collegamento poiché potrebbe ridursi in futuro. Aggiungi la parte rilevante del link alla risposta. –

5
Animation animation=new TranslateAnimation(0,480,0,0); 
animation.setDuration(5000); 
animation.setRepeatMode(Animation.RESTART); 
animation.setRepeatCount(Animation.INFINITE); 
text.startAnimation(animation); 
// applying animation to textview object.. 

Se si utilizza evento pulsante per visualizzare l'animazione poi mettere il codice all'interno di onClick() altrimenti usa il metodo override suWindowFocusChanged (HasFocus booleana) per avviare l'animazione

1
classe

Usa ValueAnimator in Android

final float startSize = o; // Size in pixels 
    final float endSize = 30; 
    final int animationDuration = 1000; // Animation duration in ms 

    ValueAnimator animator = ValueAnimator.ofFloat(startSize, endSize); 
    animator.setDuration(animationDuration); 

    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator valueAnimator) { 
      float animatedValue = (float) valueAnimator.getAnimatedValue(); 
      tv.setTextSize(animatedValue); 
     } 
    }); 

    animator.start(); 

riferimento questo link ValueAnimator

Un'altra soluzione è che applicare l'animazione scala TextView o il suo layout genitore

ScaleAnimation scaleAnimation = new ScaleAnimation(0.7f, 1.1f, 0.7f, 1.1f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f, 
        ScaleAnimation.RELATIVE_TO_SELF, 0.5f); 
scaleAnimation.setDuration(600); 
viewZoom.startAnimation(scaleAnimation); 
+0

Codice copiato da [questa risposta] (http://stackoverflow.com/a/30324368/2025923) – Tushar

+0

Non funziona uniformemente su OnePlus3T ( –