0

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

我为每个视图组附加了一个触摸监听器,它似乎被触发了,但是它只在我点击视图组的原始位置时触发,而不是它被移动到的位置。并且看到它们最初都在彼此之上,无论如何我只能在 OnTouch 方法中获得顶部视图组。

动画后如何让视图实际位于新位置?

代码:

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 事件的唯一方法......

4

1 回答 1

0

根据您正在为您开发的 android 版本,您的动画可能会产生意想不到的结果。在此处查看此问题和回复。请特别注意 Chet Haase 的评论。

于 2013-02-26T12:10:04.367 回答