ViewGroup
을 기반으로 위젯을 개발하고 있는데, 문제는 애니메이션이 끝난 후에 항목의 위치를 저장해야한다는 것입니다. 애니메이션 오브젝트에서 setFillAfter(true)
을 호출했습니다. 다음에 AnimationListener
을 만들고 onAnimationEnd
메소드 호출 View.layout(l,t,r,b)
을 호출하여 애니메이션 이후에 위치를 설정합니다. 다음에 새 항목의 위치에서 애니메이션을 시작하고 싶기 때문입니다. 하지만이 경우 항목이 두 번 배치 된 것처럼 보입니다. 애니메이션 끝에서 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);
}
}
애니메이션의 끝 위치에 따라 뷰의 위치를 어떻게 재설정해야합니까?
가 변경하는 대신,
Project -> properties -> Android
에서 API 레벨을 변경 position은 레이아웃에서 BOTTOM 또는 TOP에 설정하기를 원한다는 의미입니다. –은 BOTTOM 또는 TOP가 아니고, 뷰의 view.lay로 정의 된 구체적인 X, Y 좌표입니다. out()'메쏘드 – teoREtik