在设置其位置动画后,检测哪个视图被点击

时间:2013-02-26 11:16:39

标签: android animation touch viewgroup translate-animation

我有一个包含RelativeLayout的ScrollView。 RelativeLayout包含一些其他视图组,这些视图组最初都位于同一位置(彼此重叠)。向下滑动手势会将这些视图组向下推,以便通过使用TranslateAnimation可以看到每个视图组的顶部150px(顶部卡片移动到屏幕底部,下一张卡片向下移动150px以上等)。

我已经为每个视图组附加了一个触摸侦听器,它看起来似乎被触发了,但是只有当我点击视图组的原始位置而不是它被移动到的位置时它才会触发。看到它们最初都在彼此之上,我总是在OnTouch方法中获得顶级视图组。

如何在动画制作后让视图真正进入新的位置?

CODE:

private void setViewgroupVerticalPosition(ViewGroup cardViewGroup,
        int position) {
    // Animates the ViewGroup to the correct vertical position.
    TranslateAnimation ta = new TranslateAnimation(0, 0, 0, position);
    ta.setDuration(500);
    ta.setFillAfter(true);
    ta.setAnimationListener(this);
    cardViewGroup.startAnimation(ta);
    /*
    cardViewGroup.layout(cardViewGroup.getLeft(), position, cardViewGroup.getRight(), position + (cardViewGroup.getBottom() - cardViewGroup.getTop()));
    cardViewGroup.forceLayout();
    cardViewGroup.invalidate();
    */
}

在每个ViewGroup上运行之后,在原始位置点击是触发OnTouch事件的唯一方法......

1 个答案:

答案 0 :(得分:0)

根据您正在开发的Android版本,您的动画可能会产生意外结果。请参阅此问题和回复here。请注意Chet Haase的评论。