APNG는 애니메이션을 지원하는 PNG 파일 형식으로, GIF보다 더 나은 품질과 효율성을 제공하는 파일입니다
우선 대중적인 APNG4Android 라이브러리를 사용하겠습니다
https://github.com/penfeizhou/APNG4Android
implementation 'com.github.penfeizhou.android.animation:apng:2.24.0'
✅ 주의사항
앱의 빌드 과정에서 aapt가 APNG 파일을 압축하고 프레임 정보를 수정하게 되어, 재생 시 비정상적인 동작이 발생할 수 있기때문에 raw나 assets 폴더에 넣기
raw폴더나 aasets 폴더에 넣은 apng 파일을 AssetStreamLoader로 선언해줍니다
AssetStreamLoader assetLoader = new AssetStreamLoader(context, "wheel.png");
위에서 선언한 loader로 drawable을 만들어줍니다
// Create APNG Drawable
APNGDrawable apngDrawable = new APNGDrawable(assetLoader);
imageView에 setImageDrawable을 사용해서 넣어줍니다
이 때, 자동으로 재생되니 주의가 필요합니다
loopLimit : 반복횟수 제한
registreAnimationCallback : Animation Listener를 등록해줍니다
// Auto play
imageView.setImageDrawable(apngDrawable);
// Not needed.default controlled by content
apngDrawable.setLoopLimit(10);
// Implement Animatable2Compat
drawable.registerAnimationCallback(new Animatable2Compat.AnimationCallback() {
@Override
public void onAnimationStart(Drawable drawable) {
super.onAnimationStart(drawable);
}
});
'📱 Android' 카테고리의 다른 글
[Android] binding 즉시 업데이트 하기 executePendingBindings (0) | 2024.11.21 |
---|---|
[Android] Multipart / Presigned url (0) | 2024.11.14 |
[Android] 앱 배포 실패, 그 원인은 SoLoader ? (ft.giphy) (4) | 2024.10.11 |
[Android / Glide] Glide override / Glide 이미지 크기 조정 (1) | 2024.10.08 |
[Android] onBackPressedDispatcher 뒤로가기 제어하기 (ft. DialogFragment) (1) | 2024.09.19 |