Erstellen von Animationen auf ImageView beim Ändern der Bildressource

Ich habe nur ein ImageView in meinem Layout und ich ändere seine Ressource, wenn ein Gastage Event erkannt wurde. Ich möchte nur eine Animation zeigen, während ich die Ressource von ImageView ändere. Kann ich ViewFlipper mit one ImageView verwenden?

  • Cordova App - Build-Tool-Fehler - Gradle
  • Löschen Sie die Daten der Anwendung programmgesteuert
  • Graue Schaltflächen beim Hinzufügen von Aktionen zu Benachrichtigungen in Jelly Bean
  • AsyncTask "Nur der ursprüngliche Thread, der eine Ansichtshierarchie erstellt hat, kann seine Ansichten berühren."
  • Firebase füge neues Kind mit dem angegebenen Namen hinzu
  • Android: Lassen Sie Benutzer Bild oder Video aus der Galerie auswählen
  • Element muss als Fehler für Tag-Form deklariert werden
  • Wie kann ich Android Manifest-Berechtigungen anpassen?
  • So aktivieren Sie Firebase Crash Reporting - Android
  • Wie konvertiere ich Bitmap zu PNG und dann zu base64 in Android?
  • Android widget update period milles funktioniert nicht
  • Android 4.4.X: taskAffinity & launchmode vs. Aktivität Lebenszyklus
  • 4 Solutions collect form web for “Erstellen von Animationen auf ImageView beim Ändern der Bildressource”

    Für eine einzelne Bildansicht können Sie diese Helferfunktion nutzen:

     public static void ImageViewAnimatedChange(Context c, final ImageView v, final Bitmap new_image) { final Animation anim_out = AnimationUtils.loadAnimation(c, android.R.anim.fade_out); final Animation anim_in = AnimationUtils.loadAnimation(c, android.R.anim.fade_in); anim_out.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} @Override public void onAnimationEnd(Animation animation) { v.setImageBitmap(new_image); anim_in.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} @Override public void onAnimationEnd(Animation animation) {} }); v.startAnimation(anim_in); } }); v.startAnimation(anim_out); } 

    Ich denke, ImageSwitcher ist die beste geeignete Komponente für die Aufgabe.

    Hier ist ein Beispiel mit ImageSwitcher wie @Konstantin Burov vorgeschlagen:

    ImageSwitcher dieses ImageSwitcher Element deinem xml-Layout hinzu:

     <ImageSwitcher android:id="@+id/slide_trans_imageswitcher" android:layout_width="match_parent" android:layout_height="wrap_content"> </ImageSwitcher> 

    Erstellen von Animationen in res/anim/ :

    Out Animation:

     //left_to_right_out.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700"/> </set> 

    Und in Animation:

     //left_to_right_in.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="-100%" android:toXDelta="0%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700"/> </set> 

    Initialisieren Sie sie in Ihrem Code:

      Animation in = AnimationUtils.loadAnimation(this, R.anim.left_to_right_in); Animation out = AnimationUtils.loadAnimation(this, R.anim.left_to_right_out); 

    Initialisieren Sie Ihren ImageSwitcher :

     private ImageSwitcher imageSwitcher; imageSwitcher = (ImageSwitcher)findViewById(R.id.slide_trans_imageswitcher); 

    Füge die Animationen dazu bei:

     imageSwitcher.setInAnimation(in); imageSwitcher.setOutAnimation(out); 

    Jetzt jedes imageSwitcher , wenn Sie eine imageSwitcher für imageSwitcher , wird es in einer imageSwitcher umschalten.


    Zum Beispiel können wir das Bild alle X Sekunden ändern:

     private int animationCounter = 1; private Handler imageSwitcherHandler; imageSwitcherHandler = new Handler(Looper.getMainLooper()); imageSwitcherHandler.post(new Runnable() { @Override public void run() { switch (animationCounter++) { case 1: imageSwitcher.setImageResource(R.drawable.image1); break; case 2: imageSwitcher.setImageResource(R.drawable.image2); break; case 3: imageSwitcher.setImageResource(R.drawable.image3); break; } animationCounter %= 4; if(animationCounter == 0 ) animationCounter = 1; imageSwitcherHandler.postDelayed(this, 3000); } }); 

    Überlegen Sie die Verwendung von Rotate3dAnimation in der API-Demo-App. Ansicht> Animation> 3D-Übergang

    Sie können diese Frage auch auf SO überprüfen

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