📱 Android
[Android] 이미지뷰에 apng 파일 적용하기
콩드로이드
2024. 11. 17. 20:05
APNG는 애니메이션을 지원하는 PNG 파일 형식으로, GIF보다 더 나은 품질과 효율성을 제공하는 파일입니다
우선 대중적인 APNG4Android 라이브러리를 사용하겠습니다
https://github.com/penfeizhou/APNG4Android
GitHub - penfeizhou/APNG4Android: Android animation support for APNG & Animated WebP & Gif & Animated AVIF, High performance
Android animation support for APNG & Animated WebP & Gif & Animated AVIF, High performance - penfeizhou/APNG4Android
github.com
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);
}
});