2012-04-21 37 views
5

在TranslateAnimation之后,翻译的视图上的OnClickListener不会被翻译。我尝试在自定义LinearLayout中重写getHitRect,但没有成功。我还试图用一个touchdelegate和所有其他建议整个互联网上找到没有成功:)查看动画不会更改触摸区域

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

请帮我:)

朱利安

回答

7

如果我理解正确你的问题,你想要在翻译完成后点击某个东西,而不是注册某件东西的onTouch。发生此问题是因为TranslateAnimation实际上不移动对象,只是屏幕上的像素。如果触摸物品所在的区域,您可以调用onTouch。要真正移动的对象,而不是屏幕上的像素我建议使用此代码段:

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

你或许应该把这个在onAnimationEndonAnimationStart方法。希望这可以帮助。

+0

谢谢,它似乎interessant,但我的看法消失在动画的结尾使用您的代码段... – Jul 2012-04-21 23:31:21

+0

你保留fillAftertrue部分 – testingtester 2012-04-22 00:02:37

+0

是的,我保留它。 – Jul 2012-04-22 10:04:41