menu

안드로이드 앱의 버튼에 프레임 애니메이션을 넣으려고 시도했던 것에서 시작되었다.

일단 개발자 사이트에 있는 예제에는 아래처럼 배경에다가 애니메이션을 넣는 것으로 되어 있더라.

findViewById(R.id.view).setBackground(getDrawable(R.drawable.background));

근데 아래의 빨간 밑줄... API 레벨 16 이상에서 사용 가능하다고 한다. 내 앱 최소 설정은 14.

...뭐 짜증나지만 코드를 좀 수정했다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
    findViewById(R.id.view).setBackground(getDrawable(R.drawable.background));
else 
    findViewById(view).setBackgroundDrawable(getDrawable(R.drawable.background));

띠요용! 밑줄을 없엣더니 이번엔 취소선이... 하나를 막으면 다른 하나에서 튀어나오고 점점 코드는 몸집이 불어나는 괴현상이 어김없이 발생. 이건 달리 할 수있는 것이 없어서 //noinspection deprecation 써주고 넘어갔다.

AnimationDrawable a = (AnimationDrawable) $(view).getBackground();
a.setOneShot(true);
a.start();

이러고 위 코드 써주니깐 애니메이션도 잘 되는 것 같았다. 그란데 역시나 오류는 마치 지방간처럼 몰래 숨어있다가 나타나는 법. 멀쩡히 되던 코드도 단말기를 바꾸니까 오류를 뿜어내기 시작함. 예전에 쓰던 전화기가 API 19여서 잘 되나 켜봤더니 역시나 강제종료되버림.

setBackground()랑 setBackgroundDrawable() 둘 다 NoSuchMethodError 가 로그에 찍히는데 원인을 모름(지금도 이유 모름ㅡㅡ)

그래서 고심끝에, 배경말고 이미지 리소스를 이용하면 어떨까하는 묘안을 떠올리게 되고...

((ImageView) findViewById(R.id.view)).setImageDrawable(getDrawable(R.drawable.image));

이렇게 했더니 아예 안 됨.

여기저기 검색해보다 아래처럼 바꿈.

((ImageView) findViewById(R.id.view)).setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), getDrawable(R.drawable.image));

이랬더니 이미지는 바뀜. 근데 프레임애니메이션이 안 됨.

스스로를 질책하며 자괴감에 빠져있던 그때, 알콜성 음료가 뇌에 작용하자 놀랍도록 신비하게 해결책이 보이기 시작!

예전에 이미지 버튼 만들 때 분명 지금 필요한 코드를 썼던 것이 기억남. 바로 Ctrl+F 해서 Image로 검색 돌림. 결과 엄청 많이 나옴;; 하나씩 살펴 봄. 코드 발견함. 적용함.

((ImageView) findViewById(R.id.view)).setImageResource(R.drawable.image);

AnimationDrawable a = (AnimationDrawable) ((ImageView) findViewById(R.id.view)).getDrawable();
a.setOneShot(true);
a.start();

존나 잘 됨...

좀 허탈했지만 그래도 결과물에 만족. 

기념으로 만들었던 애니메이션 중 몇개를 첨부한다.


끝.

퍼가지 말고, 링크로 공유하세요. 자세한 건 공지에.

퍼가지 마세요...
링크로 공유하세요 ㅠㅠ
부탁할게요 ^_<~*

test 3-1

test 3-2

test 3-3

test 4-1

test 4-2

test 4-3

모든 글 보기
공지
방명록
Share to...

페이스북 공유

트위터 공유

구글+ 공유

카카오스토리 공유

밴드 공유

Follow & Contact

Facebook

Twitter

Mail

RSS 구독

2007-2016 © JinH