2012-04-21 17 views
5

Nach einer TranslateAnimation ist der OnClickListener in der übersetzten Ansicht nicht übersetzt. Ich habe versucht, getHitRect in einem benutzerdefinierten LinearLayout zu überschreiben, aber ohne Erfolg. Ich habe auch versucht eine touchdelegate und alle anderen Vorschläge auf das gesamte Internet ohne Erfolg :)Ansichtsanimation ändert sich nicht Berührungsfläche

mich
TranslateAnimation open = new TranslateAnimation(0, displayWidth - ivTimelineWidth, 0, 0); 
open.setDuration(1000); 
open.setFillAfter(true); 
llMapContent.startAnimation(open); 

Bitte helfen :)

Julien

Antwort

7

gefunden zu verwenden Wenn ich das richtig das Problem bin zu verstehen, Sie Ich möchte etwas anklicken, nachdem es übersetzt wurde, und es registriert nicht das OnTouch des Etwas. Dieses Problem tritt auf, weil TranslateAnimation das Objekt nicht tatsächlich verschiebt, nur die Pixel auf dem Bildschirm. Sie würden das onTouch aufrufen, wenn Sie den Bereich berühren, in dem sich das Element befand. Um tatsächlich das Objekt zu verschieben, anstatt die Pixel auf dem Bildschirm ich diesen Code-Schnipsel empfehlen:

MarginLayoutParams marginParams = new MarginLayoutParams(someobject.getLayoutParams()); 
marginParams.setMargins(xx, xx, xx, xx); 
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams); 
someobject.setLayoutParams(layoutParams); 

sollten Sie wahrscheinlich dies in den onAnimationEnd oder onAnimationStart Methoden. Hoffe das hilft.

+0

Danke, es scheint interessant, aber meine Ansicht verschwindet am Ende der Animation mit Ihrem Code-Schnipsel ... – Jul

+0

haben Sie den fillAftertrue Teil behalten – testingtester

+0

Ja, ich behielt es. – Jul