Sviluppo un widget basato su ViewGroup
e il mio problema è che ho bisogno di salvare la posizione degli elementi dopo la fine dell'animazione. Ho chiamato setFillAfter(true)
nel mio oggetto di animazione che ho creato AnimationListener
e nella sua chiamata al metodo onAnimationEnd
View.layout(l,t,r,b)
per impostare la posizione dopo l'animazione, perché voglio che l'animazione inizi dalla posizione del nuovo oggetto la prossima volta. Ma in questo caso sembra che gli oggetti siano disposti due volte. Se non utilizzo View.layout(l,t,r,b)
alla fine dell'animazione, l'animazione successiva inizia dalla posizione precedente. Ecco il mio codice:Cambia posizione di visualizzazione dopo la fine dell'animazione
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);
}
}
Vi prego di darmi un consiglio come dovrei resettare la posizione della vista di conseguenza alla posizione finale dell'animazione?
cambiando posizione significa che vuoi impostarlo in BOTTOM o TOP nel layout, vuoi così .. –
non BOTTOM o TOP, ma in calcestruzzo X, coordinate Y che sono definite da 'view.lay out() 'metodo – teoREtik