플링 기반 애니메이션에서는 이동 시 물체의 속도에 영향을 줍니다. 이를 사용하여 객체의 속성에 애니메이션을 적용하고 애니메이션을 점차 종료할 수 있습니다 초기 모멘텀이 있고 점차적으로 느려집니다. 이 애니메이션의 속도가 충분히 낮으면 애니메이션이 종료됩니다 기기 화면에 눈에 띄는 변화가 없습니다.
![](https://developer.android.google.cn/static/images/guide/topics/graphics/fling-animation.gif?authuser=0000&hl=ko)
관련 주제에 대해 알아보려면 다음 가이드를 읽어보세요.
AndroidX 라이브러리 추가
물리학 기반 애니메이션을 사용하려면 프로젝트에 AndroidX 라이브러리를 추가해야 합니다. 방법은 다음과 같습니다.
- 앱 모듈의
build.gradle
파일 열기 - AndroidX 라이브러리를
dependencies
섹션에 추가합니다.Groovy
dependencies { implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0' }
Kotlin
dependencies { implementation("androidx.dynamicanimation:dynamicanimation:1.0.0") }
플링 애니메이션 만들기
FlingAnimation
클래스를 사용하면
플링 애니메이션입니다. 플링 애니메이션을 제작하려면
FlingAnimation
클래스의 인스턴스
애니메이션으로 만들 객체와 객체의 속성을 제공합니다.
Kotlin
val fling = FlingAnimation(view, DynamicAnimation.SCROLL_X)
자바
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);
속도 설정
시작 속도는 애니메이션 속성의 속도를 정의합니다. 애니메이션 시작 시 자동으로 변경됩니다. 기본 시작 속도: 0으로 설정합니다. 따라서 시작 속도를 정의해야 합니다. 애니메이션이 바로 종료되지 않도록 할 수 있습니다.
고정 값을 시작 속도로 사용하거나 이를 기준으로 설정할 수 있습니다. 속도입니다. 고정 값을 제공하기로 선택하는 경우 값을 초당 dp 단위로 정의한 다음 픽셀로 변환해야 합니다. 높은 초당 입출력 작업 수를 요구하는 애플리케이션에 특히 적합합니다 초당 dp로 값을 정의하면 폼 팩터와 관계없이 작동합니다. 자세한 내용은 초당 픽셀 수로 변환하려면 전환 중 초당 dp 수에서 초당 픽셀 수로 스프링 애니메이션.
속도를 설정하려면 setStartVelocity()
메서드를 호출하고
속도를
초당 픽셀 단위로 설정할 수 있습니다 이 메서드는 다음 위치에 플링 객체를 반환합니다.
속도가 설정됩니다
참고:
GestureDetector.OnGestureListener
및
검색 및 계산할 VelocityTracker
클래스
속도를 각각 조정할 수 있습니다.
애니메이션 값 범위 설정
원하는 경우 애니메이션의 최소값과 최대값을 설정할 수 있습니다. 속성 값을 특정 범위로 제한합니다. 이 범위 컨트롤은 고유한 속성이 있는 속성에 애니메이션을 적용할 때 지정할 수 있습니다 (0~1).
참고: 플링 애니메이션의 값이 애니메이션이 종료됩니다.
최솟값과 최댓값을 설정하려면 setMinValue()
를 호출합니다.
setMaxValue()
메서드를 사용합니다.
두 메서드 모두 사용자가 값을 설정한 애니메이션 객체를 반환합니다.
마찰 설정
setFriction()
메서드를 사용하면 애니메이션의
더욱 어려워질 수 있습니다 애니메이션에서 속도가 얼마나 빨리 감소하는지를 정의합니다.
참고: 애니메이션에서는 기본 마찰 값 1을 사용합니다.
이 메서드는 애니메이션에서 마찰 값을 사용하는 객체를 반환합니다. 제공합니다
샘플 코드
아래 예에서는 가로 플링을 보여줍니다. 캡처된 속도
속도 추적기는 velocityX
이고 스크롤 경계는
0으로 설정하고
max스크롤을 설정해야 합니다. 마찰은 1.1로 설정됩니다.
Kotlin
FlingAnimation(view, DynamicAnimation.SCROLL_X).apply { setStartVelocity(-velocityX) setMinValue(0f) setMaxValue(maxScroll) friction = 1.1f start() }
자바
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X); fling.setStartVelocity(-velocityX) .setMinValue(0) .setMaxValue(maxScroll) .setFriction(1.1f) .start();
최소 표시 변경 설정
픽셀로 정의되지 않은 맞춤 속성에 애니메이션을 적용할 때는 사용자에게 표시되는 애니메이션 값의 최소한의 변경입니다. 그것은 애니메이션 종료에 적합한 임계값을 결정합니다.
애니메이션을 적용할 때는 이 메서드를 호출할 필요가 없습니다.
DynamicAnimation.ViewProperty
왜냐하면
최소 표시 변경은 속성에서 파생됩니다. 예를 들면 다음과 같습니다.
- 기본 최소 표시 변경 값은 보기에 대해 1픽셀입니다.
속성(예:
TRANSLATION_X
,TRANSLATION_Y
,TRANSLATION_Z
,SCROLL_X
,SCROLL_Y
입니다. ROTATION
와 같이 회전을 사용하는 애니메이션의 경우 표시되는 최솟값은ROTATION_X
,ROTATION_Y
입니다.MIN_VISIBLE_CHANGE_ROTATION_DEGREES
또는 1/10픽셀이어야 합니다.- 불투명도를 사용하는 애니메이션의 최소 표시 변경은 다음과 같습니다.
MIN_VISIBLE_CHANGE_ALPHA
또는 1/256입니다.
애니메이션의 최소 표시 변경을 설정하려면
setMinimumVisibleChange()
메서드를 호출하고 다음 중 하나를 전달합니다.
최소 표시 상수 중 하나 또는 계산해야 하는 값
를 참조하세요. 이 값을 계산하는 방법에 관한 자세한 내용은
자세한 내용은
표시되는 최소 변경 값 계산
섹션으로 이동합니다.
Kotlin
anim.minimumVisibleChange = DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE
자바
anim.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE);
참고: 광고에 애니메이션을 적용할 때만 값을 전달해야 합니다. 맞춤 속성을 만들 수 있습니다.
최소 표시 변경 값 계산
맞춤 속성의 최소 표시 변경 값을 계산하려면 공식:
최소 표시 변경 = 맞춤 속성 값 범위 / 범위 애니메이션 픽셀
예를 들어 애니메이션을 적용할 속성은 0부터 100입니다. 이는 200픽셀 변경에 해당합니다. 공식에 따라 100 / 200이고 0.5픽셀입니다.