멋 진 속성 애니메이션 감상 분석 (Property Animation)
오늘 우 리 는 안 드 로 이 드 에서 비교적 재 미 있 는 애니메이션 효 과 를 배 울 것 이다.
첫째, 애니메이션 의 분류: View Animation, Drawable Animation, Property Animation.
각자 실현 할 수 있 는 효과: View Animation 은 비교적 간단 하고 View 의 기본 애니메이션 효과 만 실현 할 수 있 습 니 다. 예 를 들 어 translation (이동), alpha (페이드아웃), rotate (회전), scale (크기 조정) 등 입 니 다.다른 효 과 를 내 고 싶다 면 Property Animation 을 사용 하 는 것 도 고려 해 야 한다.
2. Property Animation 의 간단 한 사용.
1.ObjectAnimator.
. ofInt, ofFloat, ofObject 를 제 공 했 는데 이 몇 가지 방법 은 모두 애니메이션 작용 의 요소, 작용 의 속성, 애니메이션 의 시작, 끝, 그리고 중간의 임의의 속성 값 을 설정 하 는 것 이다.다음은 데모 하 나 를 통 해 ObjectAnimator 에 대해 자세히 말씀 드 리 겠 습 니 다.우선 우 리 는 main. xml 에 Button 을 쓰 는 프로젝트 를 새로 만 들 었 습 니 다.main 함수 에 다음 코드 를 쓰 십시오.
우 리 는 이러한 애니메이션 을 실현 합 니 다. Button 을 클릭 하여 Button 을 오른쪽 아래 로 이동 시 킵 니 다. 그래서 우 리 는 네 가지 실현 방법 이 있 습 니 다.
// :animation ,
TranslateAnimation animationX=new TranslateAnimation(0, 500, 0, 0);
TranslateAnimation animationY=new TranslateAnimation(0,0,0,500);
AnimationSet set=new AnimationSet(false);
set.addAnimation(animationX);
set.addAnimation(animationY);
set.setDuration(3000);
set.setFillAfter(true);
button.startAnimation(set);
// : !!!
ObjectAnimator.ofFloat(button, "translationX", 0F,500F).setDuration(3000).start();
ObjectAnimator.ofFloat(button, "translationY", 0F,500F).setDuration(3000).start();
// : PropertyValuesHolder ( )
PropertyValuesHolder holder1=PropertyValuesHolder.ofFloat("translationX", 0,500);
PropertyValuesHolder holder2=PropertyValuesHolder.ofFloat("translationY", 0,500);
ObjectAnimator.ofPropertyValuesHolder(button, holder1,holder2).setDuration(3000).start();
// : AnimatorSet ,
ObjectAnimator animator1=ObjectAnimator.ofFloat(button, "translationX", 0F,500F);
ObjectAnimator animator2=ObjectAnimator.ofFloat(button, "translationY", 0F,500F);
AnimatorSet set=new AnimatorSet();
set.playTogether(animator1,animator2);//
// set.playSequentially(animator1,animator2);//
// set.play(animator1).with(animator2);//
// set.play(animator2).after(animator1);// animator2 animator1
set.setDuration(3000);
set.start();
어 떻 습 니까? 우 리 는 애니메이션 을 실 현 했 을 뿐만 아니 라 간단 한 코드 로 네 가지 방식 을 실 현 했 습 니 다.
다음은 애니메이션 이벤트 에 대한 감청 을 살 펴 보 겠 습 니 다. 우 리 는 Button 이동 이 끝 난 후에 Toast 를 호출 하여 "animator over" 라 는 글 자 를 보 여 줍 니 다. 우 리 는 방법 4 를 선택 하여 감청 효 과 를 추가 합 니 다. 다른 유사 한 것 은 다음 과 같은 코드 를 추가 합 니 다.
set.addListener(new AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
Toast.makeText(MainActivity.this, "animator over", Toast.LENGTH_SHORT).show();
}
@Override
public void onAnimationCancel(Animator animation) {
}
});
물론 이 모니터 코드 가 너무 많다 고 생각 하고 그렇게 많은 방법 을 실현 하고 싶 지 않다 면 다음 과 같은 방법 을 사용 하 셔 도 됩 니 다.
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
Toast.makeText(MainActivity.this, "animator over", Toast.LENGTH_SHORT).show();
}
});
너무 깔끔 한 거 아니 야?
2. ValueAnimator 다음은 또 다른 중요 한 animator 로 들 어 갑 니 다.우선, 오 브 젝 트 애 니 메 이 터 와 의 관 계 를 살 펴 보 자.
public final class ObjectAnimator extends ValueAnimator {
private static final boolean DBG = false;
// The target object on which the property exists, set in the constructor
。。。。。。。
분명히 ObjectAnimator 는 ValueAnimator, 즉 ObjectAnimator 가 ValueAnimator 를 포장 한 것 이다.
주의: ValueAnimator 자 체 는 어떠한 애니메이션 도 실현 할 수 없습니다. 이것 은 애니메이션 변화 가 발생 하 는 변화 값 입 니 다. 다음은 button 의 text 를 0 에서 애니메이션 의 진도 에 따라 100 으로 증가 시 키 는 기능 을 실현 합 니 다. 다음 코드 를 추가 합 니 다.
ValueAnimator animator=ValueAnimator.ofInt(0,100);
animator.setDuration(3000);
animator.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Integer integer=(Integer) animation.getAnimatedValue();
button.setText(""+integer);
}
});
animator.start();
오케이, 이렇게 됐어.
3. Layout Animation 과도 유형 은 모두 네 가지 가 있 습 니 다.
LayoutTransition. APPERING 뷰 그룹 에 뷰 가 나타 날 때 이 뷰 에 설 치 된 애니메이션
LayoutTransition.CHANGE_APPEARING 은 View 가 View Group 에 나타 날 때 View 는 다른 View 위치 에 영향 을 주 고 다른 View 가 설정 한 애니메이션 에 영향 을 줍 니 다.
LayoutTransition. DISAPEARING View 가 ViewGroup 에서 사 라 졌 을 때 이 View 에 설 치 된 애니메이션
LayoutTransition.CHANGE_DISAPPEARING 하나의 View 가 View Group 에서 사 라 졌 을 때 이 View 는 다른 View 위치 에 영향 을 주 고 다른 View 가 설정 한 애니메이션 에 영향 을 줍 니 다.
Layout Transition. CHANGE 는 View 가 나타 나 거나 사라 져 서 다른 View 위치 에 영향 을 미 친 다음 에 다른 View 에 설 치 된 애니메이션 이 아 닙 니 다.
애니메이션 이 누구 에 게 설정 되 어 있 는 지 주의 하 십시오. 이 View 는 다른 View 입 니 다.
마지막 으로 데모 다운로드 주소:http://download.csdn.net/detail/nsgsbs/8525995
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SwiftUI에서 Lottie를 사용하여 풍부한 애니메이션을 쉽게 실현해보세요이하의 기사를 이전 썼지만, 최근 SwiftUI를 사용해 Lottie를 이용했으므로 그 방법에 대해서 써 간다. Lottie에 관한 설명은 여러가지 기사에서도 되고 있으므로 여기서는 언급하지 말고, SwiftUI상에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.