📱 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);
    }
});