Desarrollo un widget basado en ViewGroup
y mi problema es que necesito guardar la posición de los elementos después del final de la animación. Llamé al setFillAfter(true)
en mi objeto de animación Creé AnimationListener
y en su método onAnimationEnd
llamo View.layout(l,t,r,b)
para establecer la posición después de la animación, porque quiero que la animación comience desde la posición del nuevo elemento la próxima vez. Pero en este caso, parece que los elementos se presentan dos veces. Si no uso View.layout(l,t,r,b)
al final de la animación, la siguiente animación comienza desde la posición anterior. Aquí está mi código:Cambiar la posición de la vista después del final de la animación
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);
}
}
Por favor, dame un consejo de cómo debería restablecer la posición de vista de acuerdo a la posición final de la animación?
cambiar posición significa que quiere establecerlo en FONDO o ARRIBA en el diseño, quiere que esto ... –
no sea INFERIOR o ARRIBA, sino en coordenadas X, Y concretas que están definidas por 'view.lay out() 'método – teoREtik