私はViewGroup
に基づいてウィジェットを開発しています。問題はアニメーションの終了後にアイテムの位置を保存する必要があることです。アニメーションオブジェクト内にsetFillAfter(true)
を呼び出しました。AnimationListener
を作成しました。onAnimationEnd
メソッドコールView.layout(l,t,r,b)
でアニメーションの後に位置を設定すると、次回新しいアイテムの位置からアニメーションを開始します。しかし、この場合は、アイテムが2回レイアウトされているように見えます。アニメーションの最後に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);
}
}
アニメーションの終了位置に応じてビューの位置をリセットする方法を教えてください。
変更するよりも、一例であり、表示位置が自動変更しますpositionは、レイアウトのBOTTOMまたはTOPに設定することを意味します。 –
はBOTTOMまたはTOPではありませんが、具体的なX、Y座標は 'view.lay out() 'メソッド – teoREtik