안녕하세요. 매번 도움 감사드려요^^
오늘의 난관은....
ImageView의 src로 지정해준 파일명을 알아오는 방법입니다...
음...다른방법이 있을꺼 같기도하여 제가 하려는것도 설명해 드리겠습니다..ㅠ
기존에 있는 버튼은 아무래도 디자인 효과가 떨어지잖아요?
그래서 ImageView에 제가 만든 png파일을 버튼으로 만드려고 합니다.
ImageView를 setOnClickListener로 하면 잘됩니다..
그런데 저는 ImageView를 누르면 사용자가 누르고있다는 것을 확인 시켜주기위해 ImageView를 누르고 있으면
이 ImageView의 그림을 좀더 진한 버튼으로 바꾸고 버튼을 안누르고 있으면 다시 원래의 버튼으로 돌아오게 하려고 합니다.
그래서 생각해본게 OnTouchListener를 사용하는건데요.
OnTouchListener로 버튼 누르고, 땔 때는 쉽게 하였는데... 다시 되돌아 가려니 문제가 되내요;;
만약 질문 그대로, 파일명을 가지고 왔다고 해도...
ImageView iv = (ImageView) v;
iv.setImageResource(R.drawable.filename);
이런식으로 하여야되는데... 파일명이 string형식이라면 R.drawable.stringname 이렇게는 또 되지 않을 것 같내요;;
웬지...다른방법이 필요할꺼같습니다.... ㅠㅠ 고수님들의 한마디 부탁드려요 ㅠ
ImageView 들을 배열방에 넣지않고 각각 버튼마다 OnTouchListener()를 설정하면 되겠지만, 같은 소스들의 반복이기 때문에.. 피하고싶어서 배열방을 이용하여 이렇게 묶어서 처리를 하려고하는데...잘안되내요;;; ㅠ
간단하게 Selector를 사용하시면 될듯 합니다.
Selector를 이용하시면 눌렀을때와 때었을때의 설정이 가능하지요.
알아보기 쉬운 간단한 예제를 찾는데 의외로 힘들더군요..^^;
댓글 감사합니다^^ 쉽게하는 방법이 있엇군요~ ㅎㅎㅎ
그런데,, 문제가 잇습니다. ㅠㅠ 무엇이 잘못되었는지 잘 안되내요...ㅠㅠㅠ
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/call_" />
<item android:drawable="@drawable/call" />
</selector>
음....
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/call_" />
이부분이 눌러졌을때 실행되어야 하는것 같습니다만... 이부분이 실행이 안되내요;; ㅠㅠㅠ
음..코드는 문제가 없어보이는데요..포커스때문일수도 있을듯 하니 다음코드에 이미지명만 변경하여 사용해보시기 바랍니다.
btn_selector.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/btn_1depth_click" />
<item
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/btn_1depth_nomal" />
<item
android:state_selected="true"
android:drawable="@drawable/btn_1depth_focus" />
</selector>
해당 xml을 res/drawable 폴더안에 넣어주고 layout코드에서 android:background="@drawable/btn_selector" 와 같이 설정해주시면 됩니다.




이미지버튼이 6개있어서... 이 버튼들을 하나의 배열방에 모두 넣었습니다...
당연히 이미지버튼들의 버튼에 적힌 글자가 다르므로... 다시 원래버튼으로 돌아가려고하니 잘 안되내요;;