Opracowuję widżet oparty na ViewGroup
i moim problemem jest to, że muszę zapisać pozycję elementów po zakończeniu animacji. Zadzwoniłem pod numer setFillAfter(true)
w obiekcie animacji, który utworzyłem: AnimationListener
iw jego wywołaniu View.layout(l,t,r,b)
, aby ustawić pozycję po animacji, ponieważ chcę, aby animacja zaczynała się od następnej pozycji nowego elementu. Ale w tym przypadku wygląda na to, że elementy są układane dwa razy. Jeśli nie użyję View.layout(l,t,r,b)
na końcu animacji, następna animacja rozpocznie się od poprzedniej pozycji. Oto mój kod:Zmiana położenia widoku po zakończeniu animacji
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);
}
}
Proszę dać mi poradę, jak powinienem zresetować pozycję widoku zgodnie z końcową pozycją animacji?
zmianę pozycja oznacza, że chcesz ustawić ją w DOLNYM lub TOP w układzie, chcesz tego .. –
nie BOTTOM ani TOP, ale w konkretnych współrzędnych X, Y, które są zdefiniowane przez 'view.lay out() 'method – teoREtik