1

即时通讯我的翻译动画,我在android中创建的动画运行后,我已经设置的任何clicklisteners保持在他们在之前导致异常问题的确切坐标后,我花了一个问题几天研究这个问题,还没有找到解决办法,我发现一些建议包括改变我的目标开发水平为4.0和更改myLayout.layout(x,x,x,x),这些都不适合我,任何有关如何将此代码更改为使任何clicklistener随布局移动的建议?Android翻译动画导致Clicklistener问题

upperView = (LinearLayout) findViewById(R.id.upperView); 
    hiddenMenu = (LinearLayout) findViewById(R.id.hiddenMenu); 

    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    Integer width = metrics.widthPixels; 

    upperView.getLayoutParams().width = width; 
    hiddenMenu.getLayoutParams().width = (int) (width * 0.75); 

    int theDistance = hiddenMenu.getLayoutParams().width; 

    //Run animation 
    TranslateAnimation anim = new TranslateAnimation(0, theDistance - 0 , 0, 0); 
    anim.setDuration(1000); 
    anim.setFillAfter(true); 
    upperView.startAnimation(anim); 
+0

试图找到一种方法来“真”位置动画应该结束移动视图对象;即实现动画结束的收听者并改变其重力或其他,并且使翻译效果非持续,以这种方式不依赖于翻译的位置。 – 2013-03-18 15:57:53

回答

0

有几件事你需要知道。 android或较老的sdk会将点击监听器保持在对象的原始位置,您必须在新位置创建一个不可见视图以便点击或使用较新的sdk

+0

为了更好地解释这一点,该视图与旧版SDK中的对象不同。即如果您有图标,物理视图仅在其原始对象仍然保留在该位置的情况下移动。您也可以在AnimationListener的帮助下移动原始对象。 – DarthCoder 2013-03-18 16:21:00

0

问题是,TranslateAnimation不能修改视图的真实位置,只能翻译视图的绘制位置。

尝试使用PropertyAnimation来做到这一点。 他们已经定位到实际查看,而不是仅仅定位视图的绘制位置。

UPDATE: 尝试使用类似

upperView.animate().setDuration(1000).translationX(theDistance - 0); 
+0

应该是一个评论,因为它不是一个工作解决方案。 – ElmoVanKielmo 2013-07-08 14:29:48

+0

@ElmoVanKielmo,有一个“工作解决方案” – acvilarim 2013-07-11 23:41:29

+0

现在确实是;) – ElmoVanKielmo 2013-07-12 06:56:24