ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Lottie 라이브러리
    개발/안드로이드 2020. 6. 24. 19:18

     

    서비스 출시 막판 디자인 작업에선 다이나믹하고 아기자기한 애니메이션 효과를 주고 싶어하는 디자이너와 물리적 효과 구현의 어려움과 잠재적인 에러 때문에 주저하는 개발자 사이에 보이지 않는 갈등이 존재하곤 했었는데, 손쉽게 애니메이션 효과를 줄 수 있는 Lottie 라이브러리가 나오면서 조금이나마(?) 해소됐다. Lottie 라이브러리는 기존 Animator 클래스에 있는 함수와 속성 변수를 거의 그대로 가져다 쓰면서도 애니메이션 효과로 디자이너 분이 작업해둔 json 파일만 붙여두면 되기 때문에 사용하기가 정말 쉽다. 이번 포스트에서는 lottie json 파일을 안드로이드에서 사용하는 방법에 대해서만 간단히 소개하려고한다.

     

    1. 라이브러리 임포트 

     

    현재 최신 버전은 3.4.0 까지 릴리즈 됐다. build.gradle에 추가해준다

    dependencies {
      implementation 'com.airbnb.android:lottie:$lottieVersion'
    }

     

    2. XML 파일에 Lottie 추가

     

    새롭게 추가된 속성은 app:lottie_fileName 정도다. 여기에 Lottie 애니메이션 효과를 줄 파일을 넣으면 된다. 이 파일은 프로젝트에 app/src/main/assets 에 넣어두면 된다. 여기에 안넣어두면 이 파일 못찾는다고 앱이 크래쉬 날 수 있으니 주의하자.

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <com.airbnb.lottie.LottieAnimationView
            android:id="@+id/fr_lottie_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:lottie_fileName="img_lottie.json"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"/>
    
    </androidx.constraintlayout.widget.ConstraintLayout>

     

    3. 자바 파일에서 애니메이션 실행 

     

    앞서 XML 파일에서 선언해둔 뷰 오프젝트를 직접 실행 해주면 된다. 상황에 따라서 어느 시점에 이 애니메이션을 실행할지 결정할 수 있다. 메인쓰레드에서 playAnimation() 함수만 실행하면 자동적으로 동작한다.

     

    class LottieFragment : Fragment() {
        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
            super.onViewCreated(view, savedInstanceState)
    
            fr_lottie_view.playAnimation()
        }

    실행해보면 아래 gif 처럼 실행된다.

    4. 여러가지 옵션 

     

    단순히 애니메이션을 실행하는 것 뿐만 아니라 여러가지 옵션을 줄 수 있다. 옵션도 무수히 많은데 자주쓰는 것들만 소개해보면 이런 것들이 있다.

     

    4.1 무한 재생하기

     

    애니메이션을 몇번 재생할지 결정하는 변수인데 이 값을 -1로 주면 무한대로 재생하게 할 수 있다. 로딩 애니메이션을 표현할때 유용하다

     

    fr_lottie_view_infinite.apply { repeatCount = -1 }

     

    4.2 거꾸로 재생하기

     

    애니메이션 스피드를 조정할 수 있는 변수인데 이 값을 -1f로 설정하면 거꾸로 재생할 수 있다. 값은 -1f ~ 1f 사이이고 물론 속도도 조절 가능 하다.

    fr_lottie_view_reverse.apply { speed = -1f }

     

    두 효과를 적용한 결과 아래 그림처럼 하나는 무한대로, 다른 하나는 반대로 돌아가게 된다

    '개발 > 안드로이드' 카테고리의 다른 글

    RxJava - combineLatest  (0) 2020.06.28
    status bar 영역 덮는 view 만들기  (0) 2020.06.24
    MediaCodec - Encoding  (0) 2020.06.21
    MediaCodec - Decoding  (0) 2020.05.24
    MediaCodec - Getting Started  (1) 2020.05.24

    댓글

Designed by Tistory.