2012-06-02 14 views
6

Sono nuovo ad Android. Sto cercando di animare la barra di ricerca orizzontale, ma non ho potuto fare così lontano. Voglio solo un'animazione dove la barra di ricerca mostra i progressi in una certa durata, diciamo 1 minuto. Qualcuno può suggerire/dare idee/snippet di codice su come devo animare la barra di ricerca standard?Come utilizzare l'animazione per animare la barra di ricerca

Che tipo di animazione come objectanimator o valueAnimation devo utilizzare? Devo definire un metodo di esecuzione (Non sono sicuro!) Per animare il pollice per passare alla posizione successiva?

Grazie in anticipo.

risposta

13

Un modo per farlo è quello di utilizzare un ValueAnimator:

final SeekBar seekBar = findViewById(R.id.seekBar); 
ValueAnimator anim = ValueAnimator.ofInt(0,seekBar.getMax()); 
anim.setDuration(1000); 
anim.addUpdateListener(new AnimatorUpdateListener() { 

     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      int animProgress = (Integer) animation.getAnimatedValue(); 
      seekBar.setProgress(animProgress); 
     } 
    }); 

Un altro modo potrebbe essere (havent prova di questo):

final SeekBar seekBar = findViewById(R.id.seekBar); 
ObjectAnimator anim = ObjectAnimator.ofFloat(seekBar, "progress", 0,seekBar.getMax()); 
anim.setDuration(10000); 
anim.start(); 
+0

Si noti che entrambi i metodi suggeriti richiedono a nido d'ape (API 11, aka 3.0) o successivo. –

+5

quando si tenta di utilizzare la seconda opzione che Seekbar non rispondeva alla vista guardando i log, mi è stato dato l'errore di avviso _ "Metodo setProgress() con tipo float non trovato sulla classe di destinazione android.widget.seekbar." _ Questo è poiché il modo in cui viene impostata la sintassi corrente 'ObjectAnimator' si aspetta che l'istanza SeekBar abbia un metodo' setProgress (float val) 'ma suppongo che SeekBar abbia solo un metodo' setProgress (int val) '. per ottenere questo funziona utilizzare 'ObjectAnimator.ofInt' invece di' ObjectAnimator.ofFloat' quando si tratta di SeekBars –

+0

@MarquisBlount man, grazie, ho avuto il problema "Metodo setProgress() con tipo float non trovato sulla classe di destinazione X." e il tuo commento è stato utile :) –

Problemi correlati