Android Animation Flicker

Ich habe durch so viele Threads auf dieses Thema geschleppt, dass ich auf dem Flimmern, das in Android 2.2 entsteht, wenn es um AnimationListeners geht, aber ich kann nicht ganz mein Problem lösen.

Was ich habe, ist ein LinearLayout 'Popover', dass der Benutzer berührt, um sich um etwa 100 Pixel zu bewegen, und berührt wieder, um es wieder zu verschieben. Ich habe endlich an dem ersten Teil ohne Flimmern gearbeitet (dank der Anregung, clearAnimation () auf die Ansicht anzupassen, die animiert wird), aber wenn man das Gegenteil macht (dh die Ansicht rückwärts verschieben), gibt es ein Flimmern an der Anfang. Ich kann nicht wirklich clearAnimation () in der onAnimationStart () -Methode anrufen, da es nicht animieren wird!

  • In-App-Kauf entfernen Anzeigen
  • Wie funktioniert Android App / Signatur Überprüfung?
  • Beschleunigen gradle build in multidex Anwendung
  • Verkleinern Sie die Bitmap in Android
  • Android - Verknüpfen, AutoLink entfernen Textfarbe ändern auf Berührung
  • Ist es möglich, eine ListView ohne ListActivity in Mono Android zu verwenden?
  • Natürlich funktioniert jede Animation perfekt, wenn ich setFillAfter () ohne Animations-Listener benutzt habe, aber dann bewegt sich der Touch-Bereich der Ansicht nicht (weil die Ansicht selbst nicht "tatsächlich" verschoben hat).

    Jede Hilfe wäre sehr dankbar.

    this.popoverTab.setOnClickListener(new OnClickListener() { public void onClick(View v) { popoverTab.setClickable(false); popoverTab.setFocusable(false); if (popoverHidden) { Log.d(TAG, "About to show popover"); // the popover is currently hidden, show it. TranslateAnimation animation = new TranslateAnimation(0, 0, 100, 0); animation.setDuration(700); animation.setFillBefore(true); animation.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { footer.layout(footer.getLeft(), (footer.getTop() - 100), footer.getRight(), footer.getBottom()); } }); footer.startAnimation(animation); } else { Log.d(TAG, "About to hide popover"); // the popover is showing, hide it. TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 100); animation.setDuration(700); animation.setFillAfter(true); animation.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { footer.clearAnimation(); footer.layout(footer.getLeft(), (footer.getTop() + 100), footer.getRight(), footer.getBottom()); } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { } }); footer.startAnimation(animation); } // invert. popoverHidden = !popoverHidden; popoverTab.setClickable(true); popoverTab.setFocusable(true); } }); 

  • Wie bestimmt Canvas seine Clip-Grenzen?
  • In Android, wie man Google Analytics Event Tracking auf Button klicken
  • Release AudioRecord android, wenn andere App-Anfrage für die Aufnahme
  • Design Android EditText, um Fehlermeldung zu zeigen, wie von Google beschrieben
  • So stellen Sie die androide Eigenschaft layout_alignParentBottom auf eine Schaltfläche dynamisch ein
  • Verwenden der Kamera im Android-Emulator
  • 5 Solutions collect form web for “Android Animation Flicker”

    Ich hatte das gleiche Problem und nach wenigen Tagen fand ich die Lösung … thanx to:

    http://www.mail-archive.com/android-developers@googlegroups.com/msg67535.html

    Ich habe eine Lösung für dieses Problem herausgefunden. Der Hinweis kam aus der Tatsache, dass bei der Darstellung der Ansicht alles gut funktionierte. Anscheinend, wenn die Animation läuft, wird das Update, das durch die Show gezwungen wird, im Hintergrund passiert und verursacht das Flimmern nicht. Hinzufügen einer kurzen Animation zum Backend des onAnimationEnd (), wenn wir die Ansicht verstecken, macht das Flackern weg.

    Hier ist die neue onAndimationEnd () im Arbeitscode

      public void onAnimationEnd(Animation animation) { animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 0.0f); animation.setDuration(1); mPlayer0Panel.startAnimation(animation); } 
     @Override public void onAnimationEnd(Animation animation) { footer.clearAnimation(); } 

    Das hat für mich gearbeitet

    Sie sollten nicht clearAnimation() auf onAnimationEnd() .

    Versuche dies:

    1. Verwenden Sie setFillBefore(true) und setFillAfter(true) auf beiden Animationen
    2. Legen Sie beim Start und beim Beenden der beiden Animationen die richtigen Layout-Eigenschaften fest

    Ich suchte nach allen Stackoverflow-Posten für Animationsproblem (flimmern und träge). Ich fand keine perfekte Antwort. Aber ich habe die Lösung für die gleiche gefunden, die wie unten ist,

    OnStart der Animation verwenden,

     view_you_want_to_animate.setDrawingCacheEnabled(true); 

    OnEnd der Animation verwenden,

     view_you_want_to_animate.setDrawingCacheEnabled(false); 

    Jetzt hat meine Ansicht kein Flimmern oder träge Verhalten, wenn meine Ansicht animiert. Es funktioniert gut für mich.

    Alrite, ich hatte das gleiche Problem, das mich danach gesucht hat, ich bin in diesem Beitrag gelandet. Gefunden eine Lösung für meine Ausgabe, dachte, meine Lösung zu teilen.

    Ich hatte viele Animationen laufen, aber Flackern begann vor kurzem, aber als ich das Problem auffiel, fand das Flackern nach dem Zeichnen der Liste der Animationen unter einer for- Schleife. (Anordnungsliste)

    Ich habe einfach hinzugefügt, um den Fehler zu vermeiden, um das Problem zu vermeiden, nachdem ich es gefunden habe, das Problem; Einige der Animationen wurden auf Fliege entfernt, aber es gab nicht genug Zeit für einen Thread zu aktualisieren, so dass die Schleife noch versuchte und fehlgeschlagen, aber nicht gezeigt, stattdessen flackerte, aber unter versuchen und fangen auf die Array-Liste Zeichnung fix mein Problem.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.