[android] Android에서 뷰를 애니메이션하고 새로운 위치 / 크기를 유지하는 방법은 무엇입니까?

현재 Android 앱에 뷰가 있고 뷰가 프레임 애니메이션을 재생하고 있습니다. 보기를 애니메이션하여 크기를 150 %로 늘리고 싶습니다. 배율 애니메이션을 적용하고 배율 애니메이션이 완료되면 뷰어가 나머지 활동 수명주기 동안 새 크기를 유지하기를 원합니다. 안타깝게도 지금 스케일 업 애니메이션이 완료되면 뷰가 원래 크기로 돌아갑니다. 새로운 애니메이션 변형을 유지하려면 어떻게해야합니까?

나는 사용하고있다

myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));

감사!



답변

애니메이션 xml 의 루트 요소 에 아래 속성을 추가해야합니다 .

android:fillAfter="true"
android:fillEnabled="true"


답변

코드에서 애니메이션을 구성하고 이와 같은 속성을 설정해보십시오.

anim.setFillEnabled(true);
anim.setFillAfter(true);


답변

애니메이션을 xml 에 넣으려면 다음이 필요할 수 있습니다.

<set
android:fillEnabled="true"
android:fillAfter="true"
xmlns:android="http://schemas.android.com/apk/res/android">

<translate
    android:fromYDelta="0"
    android:toYDelta="-20%p"
    android:duration="7000" />

</set>

https://stackoverflow.com/a/6519233/371749

다른 답변에 감사드립니다.
🙂 행운을 빕니다!


답변

요즘에는 매우 쉬워졌습니다.

view.animate().x(valueX).y(valueY).setDuration(500).start();

(이 스 니펫에서는 ViewPropertyAnimator가 사용되었습니다).

여러 다른 옵션을 추가 할 수도 있습니다.

보기가 새 위치에 배치됩니다.


답변

편집 : Qlimax의 답변이 더 좋지만 OP가 확인 표시를 변경하기 위해 반환되지 않았고 수락 된 답변을 삭제할 수 없기 때문에 여기에 복사하겠습니다 : 그냥 fillAfter = true fillEnabled = true 설정

내 원래 대답 (작동하지만 비교하면 약간 우스꽝 스럽습니다)은 다음과 같습니다.

애니메이션 후 예상대로 작동하려면 적어도이 스레드 에 따라 onAnimationEnd핸들러 를 작성하고 거기에서 뷰의 “실제”(변환 전) 경계를 최종 결과와 일치하도록 수동으로 조정해야합니다. 스케일 애니메이션.


답변

실제로 사용중인 애니메이션이 Android 프레임 워크에 포함 된 것 같아서 어떤 것도 변경할 수 있는지 잘 모르겠습니다.
그러나 설명서의 예제를 따라 자신 만의 애니메이션을 만들 수 있습니다 . 그리고 애니메이션이 끝난 후에도 스케일링을 유지하려면 android : fillAfter = “true”를 넣어야합니다.


답변

android : fillAfter = “true”를 SET 태그에 넣습니다. 애니메이션 태그에 넣으면 “전환 매개 변수”또는 “매개 변수를 애니메이션하는 동안 / 중”으로 제한됩니다. SET의 매개 변수는 애니메이션이 완료된 후 찾고있는 변환을 적용합니다.