반응형
Lottie
설명
- Lottie란 벡터 애니메이션을 앱에 적용할 수 있게 만들어주는 것을 말한다.
- git 애니메이션보다 훨씩 작은 용량으로 제작되어 리소스를 대폭 줄일 수 있다.
- 벡터 기반이라 크기에 대한 해상도 저하가 없다.
- 사용자 행동에 반응하는 인터랙션 애니메이션이 가능하다.
- lottiefiles 사이트에서 json 파일로 다운받아 사용 가능하다.
코드
build.gradledependencies {
...
implementation 'com.airbnb.android:lottie:3.6.0' // 추가
}
assets/heart.json
- lottiefiles 사이트에서 heart 입력 후 마음에 드는 파일 찾아 다운로드해서 assets 디렉토리에 저장
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="main"
type="com.example.android_example.MainActivity" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<com.airbnb.lottie.LottieAnimationView
android:layout_width="100dp"
android:layout_height="100dp"
app:lottie_autoPlay="true"
app:lottie_fileName="heart.json"
app:lottie_loop="true" />
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/animationView"
android:layout_width="100dp"
android:layout_height="100dp"
app:lottie_fileName="heart.json" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{main.onClick}"
android:text="click" />
</LinearLayout>
</layout>
MainActivity
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.lifecycleOwner = this
binding.main = this
}
fun onClick(view: View) {
// 처음(0f)부터 중간(0.5f)까지 1초(1000)동안 애니메이션 진행
val animator = ValueAnimator.ofFloat(0f, 0.5f).setDuration(1000)
animator.addUpdateListener { animation ->
binding.animationView.progress = animation.animatedValue as Float
}
animator.start()
}
}
참고
반응형
'Development > Android' 카테고리의 다른 글
[Android] Build APK (0) | 2021.02.09 |
---|---|
[Android] Retrofit (0) | 2021.02.09 |
[Android] Http Network (0) | 2021.02.09 |
[Android] File IO (0) | 2021.02.09 |
[Android] Permission (0) | 2021.02.09 |