마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 이미지 버튼관련 질문입니다

0 추천

이미지 버튼을 이용하여 구현을 하는데

이미지를 png파일로 만들어 원하는 부분만 이미지를 남기고 나머지 부분은 투명하게 처리하였습니다

저는 이미지 버튼으로 구현을 하면 투명 부분은 없어지고 이미지에 맞게 버튼이 생성되는 줄 알았는데

버튼은 그대로 네모로 생기고 투명한 부분을 눌러도 버튼이 눌러지더라고요ㅠㅠ

예를들어 동그라미가 있는데 동그라미 부분만 누르고 싶습니다 도와주세요

android:adjustViewBounds="true"
android:scaleType="fitXY"                      이걸 쓰면 이미지에 맞게 버튼이 만들어 진다하던데 안되네요
CSP_lab (390 포인트) 님이 2015년 3월 10일 질문

3개의 답변

+1 추천
 
채택된 답변
익명님께서 말씀하셨듯, 모든 버튼은 사각형이에요.

만드신 배경이 투명한 이미지의 사이즈가 있겠죠. 가로세로 픽셀수 요. 동그라미 이미지 지만

실제로 적용된것은 투명한 네모바탕에 동그라미가 들어있을뿐 인것이죠. 동그라미로 보이지만 사실은 네모라는것.

 

가로100px 세로100px 의 이미지를 기본으로 버튼을 만들었다면 가로세로 100px의 버튼이 나오고 말씀하신데로

사각형 부분을 터치하면 클릭이 되게됩니다.

 

동그라미를 예로들어서, 온클릭리스너가 아닌 터치리스너를 구현해야합니다.

터치리스너를 구현해서 좌표값 계산을 하여, 터치된 부분이 동그라미 영역 안쪽인지 바깥쪽인지 구별을 한 후,

안쪽이라면 원하시는 처리를, 아니라면 안하면 됩니다.

 

쉬운예를 들어서, 반지름 50의 원이 있다고 칩시다. 그리고 이 원의 중심점의 좌표를 알고있구요. 그걸 (x1, y1) 이라고 하죠.

 

내가 화면 어느부분을 터치했습니다. 그곳의 좌표가 (x2, y2) 입니다.

피타고라스의 정리를 활용하여, (x2-x1)^2 + (y2-y1)^2  을 계산하면 x1, y1 에서 x2, y2 까지 거리의 제곱이 나오게됩니다.

즉, 위 식의 계산결과가 원의 반지름의 제곱값인 50^50 = 2500보다 작으면 원 내부를 터치한것이고, 2500보다 크면 원 바깥을 클릭한것이죠. 어떤부분을 터치했던, 원의 중심점과의 거리가 반지름보다 작으면 원의 내부이고, 그렇지않으면 원의 외부 인것입니다.

2500보다 작다면 원하시는처리를, 아니면 안하시면 됩니다.
아시리 (8,400 포인트) 님이 2015년 3월 10일 답변
CSP_lab님이 2015년 3월 10일 채택됨
+1 추천
모든 안드로이드 뷰는 사각형입니다.

원 부분만 클릭가능하게 하려면 터치이벤트를 직접 처리하면 됩니다.
익명사용자 님이 2015년 3월 10일 답변
답변 감사합니다!
죄송하지만 조금만 더 자세하게 말씀해 주실수 있나요?
아직 초보라 그런지 바로 이해를 못하겠네요ㅠㅠ
0 추천
imagebutton의 백그라운드 속성을 transparent로 주세요.

android:background ="#00FFFFFF"

 

scaleType은 지우셔도 됩니다.
이드로이드 (22,930 포인트) 님이 2015년 3월 10일 답변
...