티스토리 뷰
어플을 개발하다보면,
애니메이션을 사용할 일이 의외로 많다.(UI 디자이너들이 좋아한다 ㅜㅜ)
그냥 애니메이션은 Listener가 있기 때문에 별다른 어려움이 없었으나
FrameAnimation의 경우 골머리가 아팠다.
특히 FrameAnimation이 여러변 변경 되어야할 경우들이 있는데,
변경 타이밍 잡기가 까다로웠다.
최근에는 Lottie 라이브러리를 사용하면서,
해당 클래스는 버려졌지만, 아까워서 남겨놔야겠다 ㅜㅜ
FrameAnimation이 한 사이클 돌 때마다 콜백으로 전달해준다.
public class CallBackAnimationDrawable extends AnimationDrawable {
public interface OnAnimDrawableCallback {
void onAnimationOneShotFinished();
}
private OnAnimDrawableCallback adListener;
private Handler timingHandler = null;
public CallBackAnimationDrawable(AnimationDrawable aniDrawable) {
for (int i = 0; i < aniDrawable.getNumberOfFrames(); i++) {
this.addFrame(aniDrawable.getFrame(i), aniDrawable.getDuration(i));
}
timingHandler = new Handler(Looper.getMainLooper());
}
public void setAnimDrawableListener( OnAnimDrawableCallback callback ) {
this.adListener = callback;
}
public OnAnimDrawableCallback getAnimDrawableListener() {
return adListener;
}
@Override
public boolean selectDrawable(int index) {
if( index != 0 && index == getNumberOfFrames()-1 ) {
timingHandler.postDelayed(resultListenerRunnable, this.getDuration(index));
}
return super.selectDrawable(index);
}
private Runnable resultListenerRunnable = new Runnable() {
@Override
public void run() {
if( adListener != null ) adListener.onAnimationOneShotFinished();
}
};
}
'Android Memo' 카테고리의 다른 글
Glide 모듈을 사용 한 비동기 이미지를 포함하는 노티피케이션 띄우기 (0) | 2018.12.07 |
---|---|
Android ViewPager 내부 View에 클릭 이벤트가 있을 경우 해당 View 페이징이 안되는 증상. (0) | 2018.11.16 |
안드로이드 Sol Prime 단말 fontFamily 설정 오류 (0) | 2018.11.06 |
Android Dialog Show 할때 Animation 적용하기 (0) | 2018.10.24 |
Android Oreo 백그라운드에서 서비스 실행에 관한 고찰... (0) | 2018.10.24 |
- Total
- Today
- Yesterday
- startForegroundService
- AnimationDrawable
- 문자열
- String append
- notification
- glide
- buildToolsVersion 31.0.0
- FrameAnimation
- Android Custom Dialog
- Android 더블 클릭
- fontFamily
- android o
- targetSdkVersion 31
- ViewPager
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |