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?

  • AktionMode über Symbolleiste anzeigen
  • Duplizieren von Fragmenten mit RecyclerView erscheint in ViewPager nach dem Swiping
  • Holen Sie sich den Aktivitätsnamen dynamisch - android
  • Wie man Daten von der Aktivität zum Fragment übergibt
  • Bildkompression wie Whatsapp und andere Boten auf Android
  • App installieren Größe gleich auf verschiedenen Gerätetypen
  • TextView ist nicht auf OpenGl Curl View Effect klicken
  • Mehrere Ansichten OnTouch Events
  • Verwenden eines SVG als Hintergrund in Android
  • Auf Google App Engine kann ich ein Google OAuth 2 Token und ein SACSID Token beziehen, das ich mit Android AccountManager bekomme?
  • Ändern Sie die Android KeyBoard-Sprache
  • Bester Moment / Ort für die Einstellung eines AlarmManagers
  • 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.