Изменить позицию просмотра после окончания анимации

Я разрабатываю виджет на основе ViewGroup , и моя проблема в том, что мне нужно сохранять положение элементов после окончания анимации. Я вызвал setFillAfter (true) в своем объекте анимации, который я создал AnimationListener , и в его вызове метода onAnimationEnd View.layout (l, t, r, б) , чтобы установить позицию после анимации, потому что я хочу, чтобы в следующий раз анимация начиналась с позиции нового элемента. Но в этом случае похоже, что предметы раскладываются дважды. Если я не использую View.layout (l, t, r, b) в конце анимации, следующая анимация начинается с предыдущей позиции. Вот мой код:

private void scrollUp() {
    for(int i = 0; i < getChildCount(); i++) {
        final View child = getChildAt(i);
        final int index = i; 
        final int newleft = child.getLeft() + mOffsetBetweenItems;
        final int newTop = child.getTop() - mOffsetBetweenItems;
        TranslateAnimation scrollUp = new TranslateAnimation(0, mOffsetBetweenItems, 0, -mOffsetBetweenItems);          
        scrollUp.setDuration(1500);
        scrollUp.setFillAfter(true);        
        scrollUp.setAnimationListener(
            new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {}

                @Override
                public void onAnimationRepeat(Animation animation) {}

                @Override
                public void onAnimationEnd(Animation animation) {
                    child.layout(newleft, newTop, newleft + child.getMeasuredWidth(), newTop + child.getMeasuredHeight() );
                }
            }
        );

        child.startAnimation(scrollUp);
    }
}

Пожалуйста, дайте мне совет, как мне сбросить позицию представления в соответствии с конечной позицией анимации?

8
задан teoREtik 13 December 2011 в 13:41
поделиться