Android Animation Alpha

Ich habe Animation

  
     

und Bildansicht

  

und Code:

final Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha);
final ImageView iv = (ImageView) findViewById(R.id.listViewIcon);
anim .setFillAfter(true);
iv.startAnimation(anim);

Am Anfang habe ich ImageView mit Alpha 0.2 und am Ende möchte ich ImageView mit Alpha 1. Aber es funktioniert nicht so - wenn die Animation startet, wird mehr Alpha hinzugefügt und die Animation endet mit Alpha 0.2

What do I have to change to animate my image from 0.2->1?

Ich habe mit verschiedenen Einstellungen überprüft - ich setze Android: alpha = "1.0", vonAlpa = "1.0" zuAlpha = "0.2" es funktioniert wie ich erwartet habe - von Alpha 1 bis 0,2. Es sieht so aus, als ob Alpha von ImageView mit Alpha aus Animation multipliziert wird ...

0
Das ist nicht der Fall. Alpha geht nicht auf 1. Wenn ich von 1 -> 0,2 animiere, funktioniert es gut und bleibt bei 0,2 (ich benutze Füllung nach). Wenn ich von 0,2 auf 1 animieren möchte, blendet es fast auf 0 und geht auf 0,2
hinzugefügt der Autor wioskamala, Quelle
Um zu verhindern, dass die Ansicht am Ende auf 0,2 Alpha zurückspringt, verwenden Sie das fillAfter -Attribut: developer.android.com/reference/android/view/animation/…
hinzugefügt der Autor Jave, Quelle
hast du fillEnabled auf true gesetzt?
hinzugefügt der Autor Jave, Quelle

5 Antworten

Hm...

Die Sache ist falsch und möglicherweise im richtigen Betrieb der Animationen in der Android-API.

Tatsache ist, dass, wenn Sie in Ihrem Code Alpha-Wert von 0,2 f setzt auf den Einstellungen in der XML-Datei für Android basiert bedeutet, dass:

0.2f = 0.2f of 0.2f (20% from 100%) ie from 0.2f/5 = 0.04f
1f = 0.2f

So your animation in fact works from 0.04f to 0.2f

flag setFillAfter (true) funktioniert sicherlich, aber Sie müssen wissen, dass ImageView am Ende Ihrer Animation stattdessen den Alpha-Wert 0.2f hat von einem, weil Sie 0,2f als geringfügig akzeptablen Wert in der Animation angeben (eine Art von maximalem Alpha-Kanal).

Wenn Sie also das gewünschte Ergebnis haben wollen, müssen Sie Ihre ganze Logik in Ihren Code einbringen und Animationen in Code manipulieren, statt in xml zu bestimmen.

Sie sollten wissen, dass Ihre Animationen direkt von zwei Dingen abhängen:

  • LayoutParams der animierten Ansicht
  • Animationsparameter.

Animationsparameter manipulieren Ihre LayoutParams in den Methoden setFillAfter \ setFillBefore .

0
hinzugefügt

Die Einstellung von alpha auf 1 vor dem Start der Animation funktionierte für mich:

AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f);
animation1.setDuration(500);
iv.setAlpha(1f);
iv.startAnimation(animation1);

Zumindest bei meinen Tests gibt es kein Flackern, weil Alpha eingestellt wurde, bevor die Animation gestartet wurde. Es funktioniert einfach gut.

0
hinzugefügt
Das hat auch bei mir funktioniert (edit: mein Fehler, ich habe xml Interferenzen: Android: alpha = "0"). Ich werde damit ein bisschen herumspielen, aber ich muss es bei 0 anfangen, damit das jetzt funktioniert. Vielen Dank.
hinzugefügt der Autor the_dude_abides, Quelle

Versuche dies

AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f);
animation1.setDuration(1000);
animation1.setStartOffset(5000);
animation1.setFillAfter(true);
iv.startAnimation(animation1)
0
hinzugefügt
Das gleiche Ergebnis wie in meinem Beispiel ...
hinzugefügt der Autor wioskamala, Quelle
Ich möchte Alpha nicht entfernen - Bild sollte mit Alpha 0,2 verblasst werden. Die Anwendung macht einige Sachen und wenn es soweit ist, möchte ich mein Bild in Alpha 1 animiert haben.
hinzugefügt der Autor wioskamala, Quelle
Ich habe es anders gemacht - anstatt Alpha im Layout oder setAlpha/setImageAlpha zu setzen, habe ich Animation 0.2-> 1 gemacht und auf Create gesetzt. Jetzt, wenn meine Animation ausgelöst wird, geht es perfekt von 0.2-> 1
hinzugefügt der Autor wioskamala, Quelle
Alpha von Bildansichtseigenschaften und uninsatll-App von Ihrem Gerät entfernen. putzen, bauen und wieder installieren. weil es meine Seite arbeitet
hinzugefügt der Autor Vaibhav Agarwal, Quelle
Bitte überprüfen Sie den bearbeiteten Code, der auf meinem Google Nexus 4 gut funktioniert. Mein imageview alpha ist 0.2 beim Start, aber nach dem Anwenden der Animation hat es sich in 1.0 geändert und Änderungen bleiben bestehen.
hinzugefügt der Autor Vaibhav Agarwal, Quelle
ohk..danke für die information..appie codierung ..
hinzugefügt der Autor Vaibhav Agarwal, Quelle
  

Remove android:alpha=0.2 from XML-> ImageView.

0
hinzugefügt

Der " setStartOffset " sollte kleiner sein, sonst startet die Animation in der Ansicht alpha 0.xf und wartet auf den Startoffset, bevor sie auf 1f animiert wird. Hoffe der folgende Code hilft.

AlphaAnimation animation1 = new AlphaAnimation(0.1f, 1f);

animation1.setDuration(1000);
animation1.setStartOffset(50);

animation1.setFillAfter(true);

view.setVisibility(View.VISIBLE);

view.startAnimation(animation1);
0
hinzugefügt