그러냐

버튼 누를 시 버튼 이미지 바꾸기 본문

android

버튼 누를 시 버튼 이미지 바꾸기

관절분리 2016. 1. 28. 11:03
반응형
안드로이드] 버튼 누를 시 버튼 이미지 바꾸기

이번엔 버튼 눌렀을 때(press) 누른 상태를 표현 하기 위해 이미지를 바꿔보는 예제입니다.

다른것도 그렇지만 특히 버튼은 눌렸음을 표현해 주지 않으면 이게 눌린건지 안눌린건지 .. 

그런 불상사를 막기위해 평상시 버튼 이미지 외에 눌렸을 때 이미지를 따로 준비하여

press 상태일 때 눌렸을 때의 이미지, 보통은 보통이미지 이런식으로 등록을 해주면 눌렀을 때

이미지가 바뀌며 사용자는 아, 이게 눌렸구나 알게되죠 사소한거지만 완성도를 높히는 길입니다.

제가 이제 설명할 방법은 솔직히 말씀드려서 정석인지 꼼수인지 잘모르겠습니다.. 

더 좋은 방법있으면 댓글로 알려주세요 ! 

전체 적인 흐름은 이렇습니다. 보통 메인 액티비티의 레이아웃이 R.layout.main 이라 한다면

main.xml에는 

 


 


보통 이런식으로 버튼이 있지요,  현재 버튼은 icon 이미지로 되어있습니다. 

보통 때와 눌렸을 때를 나누려면 다른 xml이 필요한데요 res/drawable-hdpi 폴더 안에 xml파일을 

하나 만듭니다. main_btn.xml 이라고 만든 후 그 안에 


 
이렇게 등록을 해줍니다. 보시다시피 눌림/안눌림을 android:state_pressed = "true/false" 로 

구분하며, 거기에 해당하는 이미지를 넣어 주시면 됩니다. 

그리고 마지막으로 아까 

main.xml에 아이콘 background 를 icon 으로 해놓은 것을 

 

 

 
background를 아까 drawable안에 만든 xml인 main_btn 으로 넣어줍니다. 저는 처음에 저 자리에 

이미지 파일 아닌 xml이 들어가 되게 신기했었다는... 무튼 저렇게 코딩을 하고 실행을 한다면  


잘됩니다 !  


추가로 press는 손가락으로 누르고 있을 때만 바뀌지만 누르고 이 후에도 계속 누른 상태로 

유지를 하는 방법은 간단합니다. 

 

 

 
이렇게 기본(drawable) , 눌렸을 때(pressed) , 누른 후(selected)로 구분하여 이미지를 등록해 

주시면 됩니다. 다만 pressed와 다른점은 selected는 xml이 외에 코드 상에서도 손을 봐야 하는데요

 

 

 
위 와 같이 해당 버튼이 클릭 되었을 때 setSelected(true)로 바꾸어 주셔야 합니다. 

반대로 이 버튼의 활성화 이미지를 다시 기본이미지로 바꾸고 싶을 때는 그 시점에서

setSelected(false) 로 주면 되겠죠 ,  


출처 : http://muzesong.tistory.com/44

 

 

반응형