1

Nach der Dokumentation auf PropertyAnimator lesen, scheint es, wie wir jedes Objekt so lange animieren können, dass eine der folgenden erfüllt ist,Animieren von nicht-Ansicht Objekte in Android

  • die Setter-Methode zur Klasse hinzufügen, wenn Sie haben das Recht dazu.
  • Verwenden Sie eine Wrapper-Klasse, deren Rechte Sie ändern können. Der Wrapper erhält den Wert mit einer gültigen Setter-Methode und leitet sie an das ursprüngliche Objekt weiter.
  • Verwenden Sie stattdessen ValueAnimator.

Ich versuche, auf einem MenuItem Drawable oder einem StateListDrawable in einem Menü zu animieren. Da Zeichensätze nicht die Setter-Methode enthalten, habe ich mich gefragt, ob jemand den ValueAnimator für die Übersetzungs-Animation verwendet hat, könnte einige Beispiele liefern.

+0

gibt es eine Tonne Beispiele. hier ist eine: http://StackOverflow.com/questions/31130929/Animating-textviews-leftdrawable-using-objectanimator – muratgu

Antwort

0
ValueAnimator animator = ValueAnimator.ofFloat(0, 1); 
animator.setDuration(300); 
animator.setInterpolator(new CycleInterpolator(3)); 
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator animation) { 
     label.setTranslationX(((Float) animation.getAnimatedValue()) * 20); 
    } 
}); 
animator.start(); 

ValueAnimator ist sehr einfach und kann verwendet werden, um alles zu animieren. Sie müssen lediglich die Werte aktualisieren, die Sie benötigen, und die Ansichten in jedem Animationsrahmen manuell ungültig machen. Die obige Animation schüttelt ein Etikett dreimal.

+0

Danke! Dies funktioniert, wenn wir Werte aktualisieren und Ansichten in dem Objekt ungültig machen können, auf dem wir animieren möchten. Was passiert, wenn es sich um ein integriertes MenuItem handelt? Wird eine Wrapper-Klasse erstellt, die Menüelement umschließt? – jensiepoo

+0

Drawables verfügen über eine integrierte Methode zum Aktualisieren ihrer Eltern. Animiere das Zeichen einfach und rufe bei Bedarf invalidateSelf() auf. – Zielony