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

ImageButton의 배경을 불투명과 투명으로 전환하는 방법은 무엇일까요?

0 추천

Android 2.3.6 휴대폰에서 테스트하고 있습니다. 

 

ImageButton 3개를 화면에 놓고서 

하나의 버튼을 선택할 때 마다 투명과 불투명 효과를 줘서 

어느 버튼을 선택했는지를 표현하려고 합니다. 

 

backGround의 alpha 값을 0도 줘보고 100도 줘보고 했는데요. 

투명으로만 바뀌고 불투명으로 복원이 안되네요. 

 

올바른 방법은 무엇일까요? 

 


	void selectGui(View view)
	{
		if (view == up_btn)
		{
			up_btn.getBackground().setAlpha(45);
			stop_btn.getBackground().setAlpha(100);
			down_btn.getBackground().setAlpha(100);
		}
		else if (view == stop_btn)
		{
			up_btn.getBackground().setAlpha(100);
			stop_btn.getBackground().setAlpha(45);
			down_btn.getBackground().setAlpha(100);
		}
		else if (view == down_btn)
		{
			up_btn.getBackground().setAlpha(100);
			stop_btn.getBackground().setAlpha(100);
			down_btn.getBackground().setAlpha(45);
		}
	}

 

 

 

 

지능도시 (280 포인트) 님이 2013년 7월 15일 질문

3개의 답변

0 추천
아예 다 안되시는건가요? 아님 초기 업 버튼은 되는데 그 다음부터 안되는 건가요?

 

잘은 모르지만 45가 불투명이고 100이 투명이라면 처음에 업 버튼 눌러서 불투명으로 바뀌고

 

스탑버튼을 눌러서 상태를 바꿔주려면 중간에 초기 상태가 있어야 하지 않을까요?

 

예를 들면 모든 버튼이 100인 상태가 초기상태라고 한다면

45 100 100에서 -> 100 45 100으로 바뀌려면 45 100 100에서 -> 100 100 100 ->100 45 100 이런식으로 중간에 초기값을 거쳐야 하는건 아닐까 하는 제 생각입니다.

 

도움이 안되었다면 죄송..

제 답변을 많이 참고 하시진 마세요..그냥 추측성 답변이라..다른 분들의 답변을 다 해보시고 안되면 그 때 해보시는게..
브루스웨인 (8,580 포인트) 님이 2013년 7월 15일 답변
댓글 감사합니다~ ^^
0 추천
RadioGroup + ToggleButton
aucd29 (218,390 포인트) 님이 2013년 7월 15일 답변
0 추천

배경색이 지정 되어 있지 않아서 입니다.

백그라운드 정의시 알파값만 주시고 배경은 주시지 않으니 백그라운드를 다시 불투명으로 만들때 불투명을 줄 배경의 색이

없어 이러한 현상이 나오는 것이죠.

즉 답은 알파값만 넣는 것이 아니라 원하시는 배경 색도 같이 정의를 해주셔야 한다는 겁니다.

up_bt.setBackgroundColor(new Color().argb(255, 255, 0, 0));
stop_bt.setBackgroundColor(new Color().argb(100, 255, 0, 0));
down_bt.setBackgroundColor(new Color().argb(100, 255, 0, 0));

위와 같이 하시면 될 듯합니다.

참고사항

그리고 컬러와 알파 값은 0~100까지가 아니라 0~255를 순환 합니다.

 

ThisPlus (46,920 포인트) 님이 2013년 7월 16일 답변
댓글 감사합니다.

처음에 색상을 줘보았는데 버튼의 모양 (그라데이션, 테두리 모양) 등이
모두 사라지고 밋밋한 색상으로만 채워지기에
기존 모양은 살리고 싶어서 투명도만 조절하고 싶거든요.

참고로, new Color().argb()보다 Color.argb()가 더 좋은 듯 합니다.
...