2011-12-21 2 views
5

임의의 각도로 코드를 작성하여 버튼 (또는 내부 텍스트)을 회전해야합니다. 거기에 어떤 button.setRotate (x) API 수준에서 낮은 11 ??코드에서 버튼 (또는 텍스트 내부)을 회전하십시오.

+0

이 질문에 무엇이 잘못 되었나요? –

+0

연구 노력이 없습니다. 'Button' 클래스 문서를 열고 브라우저의 검색 기능을 사용하고 검색 필드에'rotation'을 입력하면 의미를 알 수 있습니다. –

+0

나는 많은 것을 수색했다. 그러나 대부분의 질문은 버튼을 눌러 이미지를 회전시키는 것에 관한 것이다. 문서에서 "setRotation (float) = VIEW의 회전"을 발견했습니다 .. 버튼을 회전시키기 위해 구현하는 방법을 모르겠습니다. button.setRotate (x)가 작동하지 않습니다. –

답변

4

좋아, 해답은 다음과 같습니다. 복잡합니다.

오래된 애니메이션 프레임 워크를 사용하여 버튼을 회전 할 수 있습니다 (예 : like :

Button button = (Button) findViewById(R.id.button); 

// rotation from 0 to 90 degrees here 
RotateAnimation a = new RotateAnimation(0, 90); 
a.setFillAfter(true); 
a.setDuration(0); 
button.startAnimation(a); 

여기에서 문제는 버튼이 회전 된 것처럼 보이지만 제대로 클릭 할 수 없다는 것입니다. 클릭 이벤트를 발생시키는 좌표는 버튼이 회전하기 전의 영역에있는 좌표입니다.

아주 좋은 해결책은 아니기 때문에 가장 좋은 방법은 Button 클래스를 확장하고 버튼 캔버스를 onDraw()으로 회전시키는 사용자 지정보기를 작성하는 것입니다. 이 경우 onMeasure()도 무시해야합니다. 소개 방법은 Custom Components을 참조하십시오.

버튼 부모 레이아웃에서 클릭 이벤트를 가로 채고 버튼이 현재 좌표 내에서 클릭이 발생했을 때 적절한 이벤트를 발생 시키려고 할 수는 있습니다. 이것은 다소 "해커"입니다.

+0

내일 내가 시험해 볼 것이다! 내 단추가 사각형이므로 작동 할 수 있습니다. –

+1

애니메이션을 중심으로 피벗 정보를 추가하면 완벽합니다! 고맙습니다. RotateAnimation a = new RotateAnimation (0, 90, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); –

+0

새로운 메신저 안드로이드 devlopment하시기 바랍니다, 그 회전 코드와 함께 버튼 클래스를 확장하는 방법을 보여줄 수 있습니까? – Mehdi

관련 문제