2010-08-03 10 views
8

Ich habe 2 ImageView s, dass ich von der Spitze des Bildschirms nach unten übersetzen. Diese Ansichten werden von XML entpackt und die Animation wird aus Java-Code hinzugefügt. Die Animation funktioniert perfekt, aber die onClickListener, die ich im Java-Code hinzugefügt habe, scheint nicht zu funktionieren. Ich habe fillAfter Attribut der Animation verwendet, um die iamges bei ihrer Ankunft nach der Übersetzung zu bleiben, aber diese Bilder sind nicht mehr anklickbar ... Ihre Position vor der Übersetzung bleibt jedoch klickbar ... Ich kann die Logik nicht sehen Dies. Könnte mir jemand dazu einen Rat geben?TranslateAnimated ImageView nicht anklickbar nach Animation [Android]

+0

Ok, meine Antwort hier: http://stackoverflow.com/questions/2125694/android-button-doesnt-antwort-nach-animation jetzt muss ich nur seine params richtig setzen, um seine position richtig zu bekommen ... – Sephy

+0

Allerdings scheint dies nicht kompatibel mit setFillAfter. Ich füge hinzu, um es zu entfernen, damit es funktioniert. – Sephy

+0

Ich hatte dieses Problem, und ich löste es nach einigen Recherchen. [1] [1] [Hier können Sie eine Antwort finden]: http://stackoverflow.com/questions/18333269/how-to-set-button-clickable-while-animating-on -android/18509197 # 18509197 – SteBra

Antwort

14

Dies ist, weil Animationen nur die Zeichnung des Widgets betrifft. Der tatsächliche Standort ist jedoch nicht betroffen. Es befindet sich noch in der vorherigen Version.

Um dieses Problem zu überwinden, müssen Sie die Layout-Parameter des Imageview manuell aktualisieren, indem Sie eine Animation Zuhörer Installation wie folgt:

Animation.setAnimationListener(new AnimationListener() { 
     public void onAnimationStart(Animation arg0) { 

     } 

     public void onAnimationRepeat(Animation arg0) { 
      //TODO Auto-generated method stub 
     } 

     public void onAnimationEnd(Animation arg0) { 
      android.widget.LinearLayout.LayoutParams params = new LayoutParams(
      android.widget.LinearLayout.LayoutParams.FILL_PARENT, 
      android.widget.LinearLayout.LayoutParams.WRAP_CONTENT); 
      params.topMargin = addLocationButton.getTop()-100; 

      ImageView.setLayoutParams(params); 
     } 
     }); 
+1

Nicht gut, weil nach der Animation in onAnimationEnd, wenn das Bild die Position von "setLayoutParams (params);" dann sehe ich ein Flackern. Ich hinzufügen, dass schwierig ist, die topmargin aus dem Prozentsatz der Immobilie toYDelta – oscaroxy

+4

, um die Flimmern löschen Sie \t \t \t \t \t \t \t animation.reset verwenden können(); .clearAnimation(); – slott