본문 바로가기

ANDROID

[안드로이드] 아이콘 스왑 애니메이션을 만들고 싶을 때, 두 개의 핸들러를 둘 것.

메인 메뉴에서 선택에 따라 선택된 아이콘들이 스왑되도록, 


즉 기존에 선택된 아이콘은 본래 자리로 되돌아가고


새로 선택한 아이콘이 중앙에 자리하도록 하는 것이었는데,


기존에 한 개의 핸들러에서 수행하니 핸들러 내부의 모든 코드를 수행하게 되어


아이콘들이 스왑되지 않고 전부 제자리로 가버리는 골치아픈 문제가 있었다.


게다가 핸들러 안에서 다시 자기 자신으로 메세지를 보내는 재귀적 구조때문에 이런 현상이


더 두드러지게 생기는건 아닐까 싶었다.



해결책으로 별도의 핸들러를 선언해두고, 재귀적으로 메세지를 보내지 않고 별도의 핸들러로


메세지를 보내 아이콘 해재를 할 수 있도록 했다.


그리고 별도로 기존에 선택된 아이콘이 어떤 아이콘인지 저장하는 플래그 변수를 하나두어


이렇게 저장된 플래그 변수를 별도의 핸들러로 보내도록 했다.


결과는 성공적이다.



메세지 기반이 아닌 변수를 검사해 기능을 수행하는 방식으로 하다보니 


이런 문제로 골머리를 썩혔던 것 같다. 어쨌거나 향후에 비슷한 문제가 있을 시


재귀적 핸들러 사용 자제, 변수 검사보다는 메세지 자체를 더 애용하도록 하는


그런 방안으로 코딩을 하면 보다 개발이 수월할 것으로 보인다 :)