2016-07-18 17 views
3

Ich habe eine Animation wie folgt aus:Android - getAlpha() von Animation anzeigen

Animation fadeOut = new AlphaAnimation(1, 0); 
fadeOut.setInterpolator(new DecelerateInterpolator()); 
fadeOut.setDuration(350); 
myView.startAnimation(fadeOut); 

ich versuche ist seine Alpha Durring die Animation als solche zu erhalten:

System.out.println(myView.getAlpha()); 

Es ist jedoch immer gibt während der gesamten Animation "1.0" zurück. Wie kann ich den tatsächlichen Alpha-Wert von myView während der Animation erhalten?

+1

Siehe auch 'Transformation' Klasse unter Verwendung von Alpha abzurufen direkt von Ihrem 'AlphaAnimation' anstelle von' View' zB 'fadeOut.getTransformation (time, myTransformation);' 'myTransformation.getAlpha();': https://sourcegraph.com/android.googlesource.com/platform/frameworks/base/-/info/JavaArtifact/AndroidSDK/-/ android/view/animation/Umwandlung: type/getAlpha –

+0

Danke, aber was ist getDrawingTime()? Der Compiler kann diese Methode nicht auflösen. – BlackJack

+1

Versuchen Sie, eine neue Klasse 'Transformation.java' hinzuzufügen, wie hier zu sehen: https://sourcegraph.com/android.googlesource.com/platform/frameworks/base/-/blob/core/java/android/view/animation/Transformation .java Dann folgen Sie dem ersten Beispiel in: https://sourcegraph.com/android.googlesource.com/platform/frameworks/base/-/info/JavaArtifact/AndroidSDK/-/android/view/animation/Transformation:type/ getAlpha –

Antwort

5

Wenn Sie Transformation mit Ihrer AlphaAnimation verwenden, können Sie den Alphawert möglicherweise direkt von Ihrem AlphaAnimation Objekt abrufen, anstatt von View.

Zweck Transformation der Verwendung:

Definiert die Transformation zu einem Zeitpunkt einer Animation angewendet werden.


Schritte:

  1. Erstellen Sie eine neue Klasse Transformation.java wie in https://sourcegraph.com/android.googlesource.com/platform/frameworks/base/-/blob/core/java/android/view/animation/Transformation.java gezeigt.

  2. Initialisieren eines Transformation Objekt:

    private Transformation myTransformation; 
    mTransformation = new Transformation(); 
    
  3. Code verwenden:

    Animation fadeOut = new AlphaAnimation(1, 0); 
    fadeOut.setInterpolator(new DecelerateInterpolator()); 
    fadeOut.setDuration(350); 
    
  4. die Zeit Steigen Sie an dem die Zeichnung der Ansicht Hierarchie gestartet (in Millisekunden):

    final long time = myView.getDrawingTime(); 
    
  5. Holen Sie sich die Transformation, die zu einem bestimmten Zeitpunkt angewendet werden soll. Schließlich erhält den tatsächlichen Alpha-Wert während der Animation:

    fadeOut.getTransformation(time, myTransformation); 
    final float myAlphaValue = myTransformation.getAlpha(); 
    

Ressourcen: https://sourcegraph.com/android.googlesource.com/platform/frameworks/base/-/blob/core/java/android/widget/ProgressBar.java#L1699 https://developer.android.com/reference/android/view/animation/Animation.html https://developer.android.com/reference/android/view/animation/Transformation.html