android 구성 요소 애니메이션 이동 후 원래 위치 변하지 않는 해결 방법
2908 단어 android 기초 지식
인터넷에서 찾아보니 해결 방법은 모두 애니메이션이 끝난 후에 LayoutParams를 다시 설정하는 것이다. 여기서 반드시 주의해야 한다. 설정이 끝난 후에 애니메이션을 반드시clearAnimation()를 제거해야 한다. 그렇지 않으면 두 설정이 겹쳐진다.
AnimatorSet animationSet = new AnimatorSet();
ObjectAnimator animator = ObjectAnimator.ofFloat(mainLayout, "translationY", 0, 25);
animationSet.playTogether(animator);
animationSet.setDuration(300);
animationSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mainLayout.getLayoutParams();
params.topMargin = params.topMargin + 25;
mainLayout.setLayoutParams(params);
mainLayout.clearAnimation();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
animationSet.start();
테스트 결과 2.3.3 버전과 이 버전 이하의 버전이 이동한 후에 수동으로 위치를 이동해야 하는 문제가 하나 더 발견되었다. 그러나 4.x 이상의 시스템은 더 이상 수동으로 이동할 필요가 없기 때문에 다음과 같이 판단을 추가합니다.
AnimatorSet animationSet = new AnimatorSet();
ObjectAnimator animator = ObjectAnimator.ofFloat(mainLayout, "translationY", 0, 25);
animationSet.playTogether(animator);
animationSet.setDuration(300);
if(Build.VERSION.SDK_INT<14) { // android4
animationSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mainLayout.getLayoutParams();
params.topMargin = params.topMargin + 25;
mainLayout.setLayoutParams(params);
mainLayout.clearAnimation();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
animationSet.start();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android의 문자열 판단 조건에 대한 일반적인 쓰기판단 조건을 많이 쓰는 사람도 있고, 잘못된 판단 방법을 쓰는 사람도 있습니다.다음은 문자열을 어떻게 쓰는지 판단하는 조건과 흔히 볼 수 있는 오류를 총결해 보겠습니다. 1. 두 문자열의 내용이 같은지 판단 만약 (...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.