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가 확인 표시를 변경하기 위해 반환되지 않았고 수락 된 답변을 삭제할 수 없으므로 여기에 복사하겠습니다 : just set fillAfter = true fillEnabled = true
내 원래 대답 (작동하지만 비교하면 약간 우스꽝 스럽습니다)은 다음과 같습니다.
애니메이션 후에 예상대로 작동하려면 적어도이 스레드 에 따라 onAnimationEnd
핸들러 를 작성하고 거기에서 뷰의 "실제"(변환 전) 경계를 최종 결과와 일치하도록 수동으로 조정해야합니다. 스케일 애니메이션.
실제로 사용중인 애니메이션이 Android 프레임 워크에 포함 된 것 같아서 그 안에있는 어떤 것도 변경할 수 있을지 모르겠습니다.
그러나 설명서의 예제를 따라 자신 만의 애니메이션을 만들 수 있습니다 . 애니메이션이 끝난 후에도 스케일링을 유지하려면 android : fillAfter = "true"를 입력해야합니다.
android : fillAfter = "true"를 SET 태그에 넣습니다. 애니메이션 태그에 넣으면 "전환 매개 변수"또는 "매개 변수를 애니메이션하는 동안 / 중"으로 제한됩니다. SET의 매개 변수는 애니메이션이 완료된 후 찾고있는 변환을 적용합니다.
'development' 카테고리의 다른 글
반응에서 아래로 스크롤하는 방법은 무엇입니까? (0) | 2020.10.06 |
---|---|
Null이있는 SQL Server 문자열 연결 (0) | 2020.10.06 |
Linq OrderBy 인수를 어떻게 동적으로 지정합니까? (0) | 2020.10.06 |
문자열에서 특수 문자를 바꾸는 방법은 무엇입니까? (0) | 2020.10.06 |
“0”과“1”을 거짓과 참으로 변환하는 방법 (0) | 2020.10.06 |