Android: Animation in der Galerieansicht?

Wenn ich das Galerie-Widget verwende , wie bekomme ich die Bilder zu sagen, skalieren & glühen auf ausgewählt und verkleinert & un-glühen auf unselektiert ?

Alle Tutorials, die ich gesehen habe, haben diesen Effekt, aber ich kann es nicht sehen …

  • Android L ignoriert Formen als ziehbarer Hintergrund
  • Wann ist FracePagerAdapter's getItem aufgerufen?
  • Hinzufügen von Ansichten in einer bestimmten Reihenfolge und Speichern dieser Reihenfolge
  • EdgeEffekt auf AppBarLayout
  • Wie rufe ich Startaktivität an oder rufe Absicht von onitemclick Ereignis der Listenansicht im Fragment an?
  • Android Material Design in Eclipse
  • Gibt es eine Art Animation , die ich der Galerie anbringen muss?

  • Wie bekomme ich den Spaltenwert von sqlite cursor?
  • Android benachrichtigen, wenn das Telefonbuch aktualisiert wird (Content Observer)
  • Nur einige Benutzer melden "Resource Not Found" Fehler. Macht das Sinn?
  • Wie kann ich HTML-Seiten erstellen, die ihre Bilder automatisch auf verschiedene mobile Bildschirmgrößen anpassen?
  • Application-Integrated "Feedback senden"
  • Best Practice, um die Elternaktivität eines Fragments zu verweisen?
  • 3 Solutions collect form web for “Android: Animation in der Galerieansicht?”

    Hoffe das ist hilfreich. Ich schaffe es, die schrumpfen / wachsen Lösung mit dem Gallery Widget zu "simulieren". Da sie die getScale() , werden die Dinge ein bisschen kompliziert. Ich denke, das ist doch nicht die beste Lösung, aber zumindest kann ich damit leben.

    Was ich gefunden habe, ist, dass die Gallery den Fokus EXTREM BAD verwaltet. Also, der erste Ansatz war, einen ImageView Zuhörer auf die ImageView , aber kein Glück dort. Fokus ist ein MESS dort … in Bezug auf das ausgewählte Bild ist es nicht die aktuell fokussierte Ansicht. Ich habe eine Mail an Android-Entwickler-Mailing-Liste über einige Fehler auf API doc (bezüglich der focusSearch() -Methode und einigen Fokus-Contants gesendet).

    Hier ist meine Lösung für dieses Problem:

    Erstellen Sie eine Animationsressource, um das Bild zu "wachsen":

     <?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:fromXScale="1.0" android:toXScale="1.10" android:fromYScale="1.0" android:toYScale="1.10" android:duration="300" android:pivotX="50%" android:pivotY="50%" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fillAfter="false"/> 

    Wenn du nicht bekommst, was das bedeutet, dann solltest du das weiterlesen

    Das wird unser "wachsen" -Effekt sein, und du wirst es retten müssen in: res/anim/grow.xml oder was auch immer nennt es euch (aber immer in res / anim dir).

    Sie können die Ressourcenanleitung von hier aus verfolgen, um eine Gallery zu erstellen. Der ImageAdapter ImageView jedes Mal eine ImageView wenn das Gallery Objekt getView() . Ein Workaround, den Sie implementieren können, ist das Hinzufügen einer Zeile zur Methode getView() , die eine View mit einer position identifiziert, auf diese Weise:

     ... i.setId(position); ... 

    Mit dieser Zeile, die der Methode getView() des ImageAdpater Objekts ImageAdpater , können Sie diese Ansicht in einem Listener dann eindeutig identifizieren:

     g.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected (AdapterView<?> parent, View v, int position, long id) { Animation grow = AnimationUtils.loadAnimation(YourActivity.this, R.anim.grow); View sideView = parent.findViewById(position - 1); if (sideView != null) ((ImageView)sideView).setLayoutParams(new Gallery.LayoutParams(150, 100)); sideView = parent.findViewById(position + 1); if (sideView != null) ((ImageView)sideView).setLayoutParams(new Gallery.LayoutParams(150, 100)); v.startAnimation(grow); v.setLayoutParams(new Gallery.LayoutParams(170, 150)); } public void onNothingSelected (AdapterView<?> parent) { System.out.println("NOTHING SELECTED"); } }); 

    HINWEIS: Sie können feststellen, dass alle Werte aus der Animation und aus den Layoutparametern von mir ausgewählt wurden. Dies ist, weil ich nicht zu reinigen Code für Sie. Und das ist nur ein Workaround der BAD-Fokus-Problem mit diesem Widget oder dem Android-View-System. Wenn der Fokus in Ordnung war, dann ist alles, was Sie tun müssen, ist ein Fokus ändern Zuhörer, der die Gros macht / schrumpfen, wenn es Fokus / unfokussiert wurde.

    Ich hoffe das kann Ihnen helfen, einen Weg für Ihr Problem zu finden,

    Grüße,

    New EDIT: Das ist der Zuhörer, den ich eingestellt habe, ich habe auch die Zeile i.clearAnimation() in der getView() Methode hinzugefügt:

     private class SelectListener implements AdapterView.OnItemSelectedListener { private Animation grow; private int last; public SelectListener() { grow = AnimationUtils.loadAnimation(RouteGallery.this, R.anim.grow); last = 0; } public void onItemSelected (AdapterView<?> parent, View v, int position, long id) { View sideView = parent.findViewById(last); if (sideView != null && last != position) sideView.clearAnimation(); v.startAnimation(grow); last = position; } public void onNothingSelected (AdapterView<?> parent) { } } 

    Sie müssen einen ImageSwitcher verwenden. Der ImageSwitcher verfügt über Methoden zum Einstellen der In- und Out-Animationen (wenn das Bild ausgewählt und abgewählt oder ausgewählt und ersetzt wird).

    Der folgende Link hat ein gutes Tutorial, wie man es in Verbindung mit der Galerie benutzt.

    Ich habe eine ähnliche Animation wie folgt implementiert:

     final Animation shrink = AnimationUtils.loadAnimation(activity, R.anim.shrink); shrink.setFillAfter(true); gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // This iterates through the views which are currently displayed on screen. for (int k=0; k<gallery.getChildCount(); k++){ // Do whatever else you want, here. // This is how you get a particular element of a view ImageView background = (ImageView) gallery.getChildAt(k).findViewById(R.id.menu_item_background); //clear animation gallery.getChildAt(k).clearAnimation(); } // Scale the selected one view.startAnimation(shrink); } @Override public void onNothingSelected(AdapterView<?> adapterView) {} }); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.