보기 애니메이션 시스템을 사용하여 보기에서 트윈 애니메이션을 실행할 수 있습니다. 트윈 애니메이션 는 시작 지점, 종료 지점, 크기, 회전 및 다른 일반적인 측면에 대해서도 다룹니다.
트윈 애니메이션은 일련의 간단한 변환 (위치, 크기, 회전,
및 투명도)를 설정할 수 있습니다. 따라서 TextView
객체가 있으면 텍스트를 이동, 회전, 증가 또는 축소시킬 수 있습니다. 만약
배경 이미지인 경우 배경 이미지는 텍스트와 함께 변환됩니다. animation package
에서는 트윈 애니메이션에서 사용되는 모든 클래스를 제공합니다.
일련의 애니메이션 명령어는 XML 또는
Android 코드 레이아웃을 정의할 때처럼, XML 파일은 더 읽기 쉽고
교체가 가능하기 때문에 재사용이 가능합니다. 아래 예에서는 XML을 사용합니다. (받는사람
XML 대신 애플리케이션 코드에서 애니메이션을 정의하는 방법에 관한 자세한 내용은
AnimationSet
클래스 및 기타 Animation
서브클래스).
애니메이션 지침에 따라 수행하려는 변환을 정의하고 발생하는 데 걸리는 시간을 확인할 수 있습니다 변환은 순차적이거나 동시적일 수 있음 - 예를 들어 TextView의 콘텐츠를 왼쪽에서 오른쪽으로 이동한 다음 180도 또는 텍스트를 동시에 이동 및 회전할 수 있습니다. 각 변환은 해당 변환에 적용되는 매개변수 집합 (크기의 시작 크기 및 종료 크기) , 회전의 시작 각도 및 종료 각도 등), 그리고 공통된 집합 매개변수 (예: 시작 시간 및 소요 시간)를 지정합니다. 여러 가지 변환을 수행하기 위해 동일한 시작 시간을 지정합니다. 순차적으로 만들려면 시작 시간을 계산하세요 이전 변환 기간을 더한 값입니다.
애니메이션 XML 파일은 Android의 res/anim/
디렉터리에 있습니다.
살펴보겠습니다 파일에는 단일 루트 요소가 있어야 합니다. 이 요소는 단일
<alpha>
, <scale>
, <translate>
<rotate>
, 보간기 요소 또는 <set>
요소를 사용하여
이 요소의 그룹 (다른 <set>
가 포함될 수 있음) 기본적으로 모든
동시에 적용됩니다. 순차적으로 발생하게 하려면
아래 예와 같이 startOffset
속성을 지정해야 합니다.
ApiDemos 중 하나에서 다음 XML을 사용하여 스트레칭하고 동시에 회전 및 뷰 객체를 회전할 수 있습니다.
<set android:shareInterpolator="false"> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" android:toXScale="1.4" android:fromYScale="1.0" android:toYScale="0.6" android:pivotX="50%" android:pivotY="50%" android:fillAfter="false" android:duration="700" /> <set android:interpolator="@android:anim/decelerate_interpolator"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" android:fillBefore="false" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" /> </set> </set>
화면 좌표 (이 예에서는 사용되지 않음)는 왼쪽 상단 모서리에 있는 (0,0)입니다. 증가하기만 하면 됩니다.
pivotX 같은 일부 값은 객체 자체 또는 있습니다. 원하는 내용에 적합한 형식을 사용하세요(상위 요소를 기준으로 50% 인 경우 '50', 또는 '50%' 50%).
Interpolator
를 할당하여 시간에 따른 변환 적용 방법을 판별할 수 있습니다. Android에는 여러 Interpolator 서브클래스가 포함되어 있습니다.
다양한 속도 곡선 지정(예: AccelerateInterpolator
)
변환이 천천히 시작해서 속도를 높이도록 지시합니다 각각은 특성 값을 가지며
적용됩니다.
이 XML은 res/anim/
에 hyperspace_jump.xml
로 저장됩니다.
디렉터리가 있는 경우 다음 코드는 이 디렉터리를 참조하고 레이아웃의 ImageView
객체에 적용합니다.
Kotlin
AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation -> findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation) }
자바
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); spaceshipImage.startAnimation(hyperspaceJumpAnimation);
startAnimation()
의 대안으로
로 애니메이션을 만들고 Animation.setStartTime()
를 사용하여 뷰에 애니메이션을 할당합니다.View.setAnimation()
XML 구문, 사용 가능한 태그 및 속성에 관한 자세한 내용은 애니메이션 리소스를 참조하세요.
참고: 애니메이션이 이동하거나 크기가 조절되는 방식과 관계없이 애니메이션이 포함된 View의 경계가 이에 맞게 자동으로 조정되지 않습니다. 그래도 애니메이션은 여전히 보기의 경계를 벗어나 그려지며 잘리지 않습니다/ 그러나 애니메이션이 상위 View의 경계를 초과하면 자르기가 발생합니다.