2011-12-21 13 views
5

Tengo que girar un botón (o el texto en el interior, es el mismo) por grado aleatorio por codificación. ¿Hay algún botón.setRotate (x) en nivel de API inferior a 11?Gire un botón (o el texto dentro) en el código

+0

¿Qué le pasa a esta pregunta? –

+0

No muestra esfuerzo de investigación. Abra el documento de la clase 'Button', use la función de búsqueda de su navegador y escriba' rotation' en el campo de búsqueda y verá a qué me refiero. –

+0

He buscado mucho, pero la mayoría de las preguntas se refieren a la rotación de imágenes presionando el botón ... no gira el botón. en la documentación, encontré solo "setRotation (float) = rotation of the VIEW, in degree" .. No sé cómo implementar para girar el botón. button.setRotate (x) no funciona. –

Respuesta

4

Ok, eché un vistazo y la respuesta es: es complicado.

Puede girar el botón utilizando el antiguo marco de animación, p. como este:

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); 

El problema aquí es que el botón se ve rotado, pero no se puede hacer clic correctamente. Las coordenadas que activan el evento de clic son las que estaban en el área que el botón tenía antes de ser girada.

Dado que esta no es una solución muy buena, la mejor opción es escribir una vista personalizada que amplíe la clase Button y gire el lienzo de botones en onDraw(). También debe sobrescribir onMeasure() en este caso. Vea Custom Components para una introducción que hacer.

Aparte de eso, puede intentar interceptar los eventos de clic desde el diseño principal de los botones y desencadenar el evento apropiado cuando el clic ocurra dentro de las coordenadas actuales de los botones. Aunque esto es algo "hacky".

+0

mañana voy a probar! mis botones son cuadrados, por lo que podría funcionar. –

+1

agregando la información de pivote para centrar la animación, ¡es perfecto! Gracias RotateAnimation a = new RotateAnimation (0, 90, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); –

+0

por favor soy nuevo en android devlopment, ¿podría mostrarme cómo extender la clase de botón, con su código de rotación? – Mehdi

Cuestiones relacionadas