2012-04-21 16 views
5

Dopo un TranslateAnimation, OnClickListener sulla vista tradotta non viene tradotto. Ho provato a sovrascrivere getHitRect in un LinearLayout personalizzato ma senza successo. Ho anche cercato di utilizzare un touchdelegate e tutti gli altri suggerimenti trovato su tutta Internet senza successo :)L'animazione della vista non cambia area tattile

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

Please help me :)

Julien

risposta

7

Se io sto capendo il problema correttamente, vuoi cliccare su qualcosa dopo che è stato tradotto e non sta registrando l'onTouch di qualcosa. Questo problema si verifica perché TranslateAnimation non sposta effettivamente l'oggetto, ma solo i pixel sullo schermo. Chiameresti l'onTouch se tocchi l'area in cui si trovava l'oggetto. Per spostare l'oggetto in realtà, piuttosto che i pixel sullo schermo mi consiglia di utilizzare questo frammento di codice:

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

Probabilmente si dovrebbe collocare questo nei onAnimationEnd o onAnimationStart metodi. Spero che questo ti aiuti.

+0

Grazie, sembra interessante ma la mia vista scompare alla fine dell'animazione usando il tuo frammento di codice ... – Jul

+0

hai mantenuto il riempimentoAftertrue part – testingtester

+0

Sì, l'ho tenuto. – Jul

Problemi correlati