TranslateAnimation auf Bildansicht (Android)

So, ich habe eine Bildansicht in mein layout und ich wollte schieben Sie ihn nach rechts oder Links, wenn der Benutzer swipe über die letzteren. Ich verwendet TranslateAnimation zu übersetzen Bildansicht, wie unten gezeigt.

ImageView logoFocus = (ImageView) findViewById(R.id.logoFocus);

Animation animSurprise2Movement = new TranslateAnimation(logoFocus.getLeft(), logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getTop());
animSurprise2Movement.setDuration(1000);
animSurprise2Movement.setFillAfter(true);
animSurprise2Movement.setFillEnabled(true);
logoFocus.startAnimation(animSurprise2Movement);

Ich habe diesen code in meinem Streichen Sie nach Rechts, und den gleichen code, aber mit getLeft()-150 für das Streichen nach Links Abschnitt. Es funktioniert wie erwartet, wenn ich swipe eine erste Zeit, aber wenn ich swipe in die andere Richtung, die Bildansicht geht zurück auf seine ursprüngliche position, dann schiebt in die andere Richtung, anstatt nur zu gleiten, um die ursprüngliche position.

Hab ich schon versucht, fügen Sie den folgenden in der onAnimationEnd Methode eines AnimationListener, die ich eingestellt habe, um die Animation, aber vergeblich.

MarginLayoutParams params = (MarginLayoutParams) logoFocus.getLayoutParams();
params.setMargins(logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getRight(), logoFocus.getBottom());
logoFocus.setLayoutParams(params);

Ich habe auch versucht die folgenden in der gleichen Methode, aber, dass weder funktionierte nicht wie erwartet.

((RelativeLayout.LayoutParams) logoFocus.getLayoutParams()).leftMargin += 150;
logoFocus.requestLayout();

Würde jemand mir bitte helfen? Die Lage scheint sich nicht zu ändern, nachdem die Animation, auch mit setFillAfter(true) und setFillEnabled(true) verwendet. Gibt es eine alternative zu der Verwendung TranslateAnimation?

Danke für jede Hilfe die ich bekommen kann. 🙂

  • Ja, Sie haben laufen in eine design-Einschränkung mit der TranslateAnimation API. Die animation ändert sich, wo die Bildansicht ist auf dem Bildschirm gerendert, aber es hat nicht wirklich ändern Sie die Position der Bildansicht in das layout. Die alternative ist die Verwendung die neue Objekt-basierte Animation-API, die eingeführt wurde mit Android 3.0 (android-developers.blogspot.com/2011/02/...)
  • Danke für die Antwort. Aber was ist, wenn ich die Entwicklung für Android 2.3 (API-level 9), funktioniert es nicht auf das Recht? Gibt es da keine andere Möglichkeit..? :/
  • Ich denke, Sie können manuell verschieben Sie die Artikel, die Sie gerade nicht finden, die richtige Zauberformel zu tun. Versuchen Sie, ein brand new LayoutParams auf die Bildansicht anstatt die Aktualisierung der aktuellen. Oops - sorry, dass ich verpasste den code, wo du das ausprobiert. Seien Sie versichert, es ist möglich, verschieben der Bildansicht in das layout programmatisch vielleicht eine andere person erkennen können, die Fehler in Ihrem code.
InformationsquelleAutor jpmastermind | 2012-10-19
Schreibe einen Kommentar