2011-11-07 20 views
6

Tengo el botón, que giré 45 grados utilizando la animación de rotación y aplicado en el oyente clic que brinda un mensaje.Onlclick oyente no funciona correctamente ..?

Cuando hago clic en la parte superior se muestra el 50% de la tostada del botón. Pero cuando hago clic en el 50% inferior del botón, no aparece nada.

aquí código de animación.

<?xml version="1.0" encoding="utf-8"?> 
<rotate 
xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="45" 
    android:toDegrees="45" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="0" android:fillAfter="true"> 
</rotate> 

df

Gracias de antemano .....!

Respuesta

3

Estoy bastante seguro de que esto es una limitación de la animación en Android. Lo arreglaron en 3.0 en adelante implementando un nuevo sistema de animación.

leer aquí: http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

"Por último, las animaciones anteriores cambió la apariencia visual de los objetos de destino ... pero no ha cambiado realmente de los propios objetos Es posible que haya funcionado en este problema Vamos.. Supongamos que quiere mover un Botón de un lado de la pantalla al otro. Puede usar una Animación de Traducir para hacerlo, y el botón se deslizará felizmente al otro lado de la pantalla. Y cuando termine la animación, lo hará Con mucho gusto volverá a su ubicación original. Así que encuentra el método setFillAfter (true) en Animation y lo intenta de nuevo. Esta vez el botón permanece en su lugar en la ubicación en la que fue animado. Y puede verificarlo haciendo clic en él - ¡Hola! ¿Cómo es que el botón no está haciendo clic? El problema es que la animación cambia donde se dibuja el botón, pero no donde el botón existe físicamente dentro del contenedor. Si desea hacer clic en el botón, tendrá que hacer clic en la ubicación en la que solía vivir. O bien, como solución más efectiva (y solo un poco más útil para sus usuarios), tendrá que escribir su código para realmente cambiar la ubicación del botón en el diseño cuando finaliza la animación.

Es por estas razones, entre otras, que decidimos ofrecer un nuevo sistema de animación en Honeycomb, uno basado en la idea de "animación de propiedades".

+0

setFillAfter (cierto) he hecho esto. funciona bien para la parte superior, no para la parte inferior ¿por qué ...? – Noby

+0

+1 Porque esta respuesta es correcta. @Noby, setFillAfter (true) solo garantiza que el dibujo permanecerá en su estado final después de la animación. Sin embargo, no cambia el hecho de que el sistema de animación anterior a la versión 3.0 nunca cambia los límites reales del objeto, por lo que su instancia de Button aún vive en su rectángulo original ... aunque se haya dibujado de forma diferente. El rectángulo original es donde se capturarán los eventos táctiles. – Devunwired

Cuestiones relacionadas