【Android】Physics-based Animations (Google I/O '17)

10425 단어 Android
Google I/O 2017의 안드로이드 애니메이션 Spring to Life에 발표된 Physics-based Animation(물리적 애니메이션)에 대한 요약입니다.(LT용 자료이기도 하다)

Physics-based Animations


이른바 Physics-based Animation


물리 법칙에 기초한 애니메이션을 가리킨다.
(예) Spring Animation

장점

  • 자연스러운 외관
  • 물리적으로 이해하기 쉽고 전체적으로 매끄러워진다
  • 과정 수정
  • 애니메이션 목표가 바뀌었을 때 추세를 유지하면서 부드럽게 멈출 수 있음
  • 시각적 불협화감의 경감
  • 실시간으로 부드럽게 움직이면 전체적인 불협화음을 줄일 수 있다
  • 비물리적 애니메이션과 물리적 애니메이션의 차이


    비물리적 기초
    물리적 기초


    ObjectAnimator 애니메이션 사용
    physics-based API 사용 애니메이션
    비물리적 기본 애니메이션Animator의 애니메이션)을 사용하여 대상이 변경된 후 애니메이션을 중지하고 대상이 변경된 시점의 위치를 시작점으로 새 대상에 대한 애니메이션을 시작합니다.
    물리 애니메이션이 목표를 변경할 때 새로운 방향으로 이동할 가속도는 원시 속도의 영향을 받아 연속적으로 새 목표로 이동한다.
    비물리 애니메이션 속도도

    물리 애니메이션 속도도

    사용법

    build.gradle에 다음과 같은 내용을 보충한다.(I/O 발표 시 베타1, 2017/06/18 시 베타2)
    dependencies {
        compile "com.android.support:support-dynamic-animation:26.0.0-beta2"
    }
    
    API level 16(Jelly Bean 4.1.x 계열)을 지원합니다.

    관련 클래스


    카테고리
    설명
    android.support.animation
    애니메이션 View의 주요 API입니다.물리적 기반 애니메이션을 만들고 관리하는 클래스를 포함합니다.
    DynamicAnimation
    물리 애니메이션 패키지의 기본 클래스입니다.모든 애니메이션의 라이프 사이클 및 공통 설정을 관리합니다.
    SpringAnimationhttps
    DynamicAnimation 클래스의 하위 클래스입니다.스프링 애니메이션을 만듭니다.
    SpringForce
    애니메이션에 사용되는 감쇠비와 강도와 같은 스프링 속성의 카테고리를 정의합니다.
    FlingAnimation
    DynamicAnimation 클래스의 하위 클래스입니다.최초의 운동량을 가지고 천천히 속도를 줄이는 비행 애니메이션을 만들다.

    Spring Animation


    Spring Animation은


    애니메이션은 각 프레임에 적용되는 스프링의 힘을 기준으로 값과 속도를 계산합니다.
    용수철의 힘은 쇠퇴와 강도의 특성이 있다.
    (예) 놓기 스프링 애니메이션

    기본용법

    SpringAnimation 대상을 만들고 실행합니다.
    final View img = findViewById(R.id.imageView);
    
    // Setting up a spring animation to animate the view’s translationY property with the final spring position at 0.
    final SpringAnimation anim = new SpringAnimation(img, DynamicAnimation.TRANSLATION_Y, 0);
    
    // Starting the animation
    anim.start();
    

    감쇠율 설정(바운드 설정)

    //Setting the damping ratio to create a low bouncing effect.
    anim.getSpring().setDampingRatio(DAMPING_RATIO_LOW_BOUNCY);
    
    High bounce
    Medium bounce
    Low bounce
    No bounce




    강성 설정

    //Setting the spring with a low stiffness.
    anim.getSpring().setStiffness(STIFFNESS_LOW);
    
    High stiffness
    Medium stiffness
    Low stiffness
    Very low stiffness




    Chained Spring Animation


    Spring Animation을 조합하여 사용하면 여러 View를 체인처럼 애니메이션할 수 있습니다.

    Fling Animation


    애니메이션은 마찰력을 사용하여 객체 속도에 비례합니다.
    FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);
    

    참고 자료


    Android Animations Spring to Life (Google I/O '17) - YouTube
    https://www.youtube.com/watch?v=BNcODK-Ju0g
    Animator | Android Developers
    https://developer.android.com/reference/android/animation/Animator.html
    ObjectAnimator | Android Developers
    https://developer.android.com/reference/android/animation/ObjectAnimator.html
    android.support.animation | Android Developers
    https://developer.android.com/reference/android/support/animation/package-summary.html
    DynamicAnimation | Android Developers
    https://developer.android.com/reference/android/support/animation/DynamicAnimation.html
    SpringAnimation | Android Developers
    https://developer.android.com/reference/android/support/animation/SpringAnimation.html
    SpringForce | Android Developers
    https://developer.android.com/reference/android/support/animation/SpringForce.html
    FlingAnimation | Android Developers
    https://developer.android.com/reference/android/support/animation/FlingAnimation.html
    Physics-based Animations | Android Developers
    https://developer.android.com/topic/libraries/support-library/preview/physics-based-animation.html

    좋은 웹페이지 즐겨찾기