drcarter의 HelloWorld!

안드로에드에서 버튼에 대한 효과를 주는 방법이 있습니다.
ImageButton에 효과를 주는 방법인데... 구글 안드로이드 개발 사이트에서도 명시 되어 있습니다.
그런데 보면서 좀... 혼라?? 스러웠다고 해야 할까요... 그래서 좀 정리를 해볼려고 합니다.

To indicate the different button states (focused, selected, etc.), you can define a different image for each state. E.g., a blue image by default, an orange one for when focused, and a yellow one for when pressed. An easy way to do this is with an XML drawable "selector."

영어는 잘 못하지만.. 대충 내용은 focused, selected, normal 상태의 버튼을 정의하고 싶으면 xml에다 selector라는 것을 사용해서 미리 정의라하는... 그런 내용이죠... 버튼 색상이 나오는데... 그것에 대한 내용은 
이 두 곳에 가시면 설명을 볼 수 있습니다.

그리고는 설명에서는 이렇게 xml을 정의하라고 나옵니다.
      
                
                
            

그리고는 res/drawable/ 폴더에다가 만들어서 사용하라는 내용은 있는데... 저의 짧은 지식으로는 정확하게 이해하기가 힘들더군요... 

예전에는 안드로이드 개발할 때 /res 밑에 drawable 폴더가 1개밖에 없었던 기억이 있었는데... 지금은 기본 프로젝트를 생성해도 /res 밑에 drawable 폴더가 "/res/drawable-hdpi", "/res/drawable-mdpi", "/res/drawable-ldpi" 이렇게 3개가 존재합니다. 구글 document에서는 /res/drawable/ 에다가 xml을 만들라고 합니다...
그럼 그렇게 하면 됩니다... ㅜㅜ/// 정말 말 그대로 하면 되는데... 괜히 /res/drawable-hdpi... mdpi... ldpi... 이런데다가 만들어봐서 했는데 안되더군요 ㅋㅋ

그림에서 보는 것 처럼.. /res/drawable/ 폴더를 만들고 그 곳에 원하는 xml파일을 만듭니다... 예를 들어서 
"play_button.xml"이라는 파을을 만들고 안의 내용을
      
                
                
            

이렇게 안의 내용을 정의 해 두고...
play_button_pressed와 play_button_focused.. 그리고 play_button_normal은... drawable-hdpi, mdpi, ldpi에 paly_button_pressed.png, play_button_focused.png, play_button_noraml.png 로 된 이미지 파일이 있어야 합니다. 

그런 다음에... Layout에서 ImageButton을 만들고 그곳에서 ImageButton의 property의 "Background"에다가
@drawable/play_button 이라고 입력하면 끝납니다.

이 방법때문에... 좀 힘들게 진행했네요... 어떻게 보면...정말 간단한건데...

이젠... 이생각이 듭니다... 그럼 ImageButton마다 일일이 이런 xml을 파일을 만들어 줘야 하는건지... 그럼 하나의 Activity안에 ImageButton이 10개면... 버튼 10개에 대한 xml을 따로 만들어 줘야 하는건지... ㅎㅎ
더 쉽게 하는 방법이 있는지 찾아 봐야 겠습니다... ㅜㅜ///
허접한 설명이였습니다 ㅎ


Comment +13

  • 양은경 2010.05.19 19:07 신고

    왜 저는 Item에서 에러가 날까요??? 저 selector라는 것이 없는데 Item이라는 객체(?)도 없습니다.
    xml에 자꾸 에러가 나니 이거 어떻게 사용해야 하는지 모르겠네요

  • 양은경 2010.05.24 11:02 신고

    소스 첨부 해주시면 감사하죠 ㅠㅠ
    사실 저는 Tab메뉴의 스타일을 바꾸려고 하는데 위 소스를 응용하려고 하거든요
    뭐랄까 그럴듯하게 만들어보고 싶네요 ^^

    • http://drcarter.tistory.com/entry/Android-이미지-버튼-예제

      제 블로그에 소스 첨부한 글을 다시 올려뒀습니다. :)
      2.1 버전으로 되어 있구요... drawable 폴더안에 있는 xml 파일 내용을 참고해보세요... 그럼 이미지버튼 클릭했을 때 이미지가 변경되는 것이 확인 될 것입니다.
      그럼 즐거운 하루 되세요 ㅋ

  • sooilDev 2010.06.14 12:15 신고

    좋은 정보 얻고 갑니다^^
    안드로이드는 역시 대소문자를 조심해야할듯 싶어요 ㅎ 그대로 붙여넣었다가 에러가 ㅋ;;;

  • 잘 보고 갑니다. 테스트 해보고 성공하면 또 댓글 달겠습니다.

    • 감사합니다... 머 생각나는 거나 팁이라도 빨리 채워나가야 하는데.. 요즘은 시간이 잘 안생기네요 ^^

  • ^^ 2010.07.04 23:45 신고

    감사합니다...정말로 감사합니다..

  • 좋은 정보 감사합니다~
    맨 밑에 쓰신 것 처럼 버튼 하나에 xml파일 하나를 일일이 생성해줘야 하는지..
    xml파일 하나로 여러개의 버튼에 적용시킬 방법을 찾아보려 하는데 좀처럼 쉽지 않네요.
    만약 찾게 되면 제 블로그에 소식좀 알려주시면 감사하겠습니다 ^^;

    • 저도 여러개의 버튼을 적용 하고 싶은데 방법은 잘 모르겠습니다... 지금은 그냥 일일이 생성해 주고 있어서... 나중에 방법을 찾게 되면 포스팅 해 드릴게요 ^^

  • 지나가던사람 2010.10.11 10:47 신고

    감사합니다. 이걸 해결하지 못해서 골머리를 썩였었는데 덕분에 깔끔하게 해결되었습니다. 감사합니다.