Después de girar una línea lineal, los eventos onclick no cambian de posición después de la rotación

Tengo un linear linearout vertical con tres visiones de imagen clickable dentro del linearlayout. Cuando giro el lineal de 90 grados usando una animación simple surge el problema. Las vistas de imagen se rotan correctamente, pero los eventos onclick para las vistas de imagen no se giran junto con el linearlayout y permanecen en la posición original como antes de la animación.

A continuación se muestra mi código java principal

westplayer = (LinearLayout) findViewById(R.id.linearLayout_west); // Create an animation instance Animation an = new RotateAnimation(0.0f, 180.0f, 32, 180); // Set the animation's parameters an.setDuration(0); // duration in ms an.setRepeatCount(0); // -1 = infinite repeated an.setRepeatMode(Animation.REVERSE); // reverses each repeat an.setFillAfter(true); // keep rotation after animation // Apply animation to linearlayout westplayer.setAnimation(an); 

El código anterior maneja la parte de animación. El código siguiente sigue la animación y se supoze para actualizar las posiciones de disposición, pero no funciona para mí.

  // Update Layout int top=westplayer.getTop(); int bottom=westplayer.getBottom(); int left=westplayer.getLeft(); int right=westplayer.getRight(); westplayer.layout(left, top , right, bottom ); 

El xml es como sigue:

  <LinearLayout android:id="@+id/linearLayout_west" android:layout_width="42dp" android:layout_height="250dp" android:layout_alignParentLeft="true" android:layout_below="@+id/linearLayout_north" android:duplicateParentState="false" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/imageViewW1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/spades_14" /> <ImageView android:id="@+id/imageViewW2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/spades_14" android:layout_marginTop="-15dp" /> <ImageView android:id="@+id/imageViewW3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/spades_14" android:layout_marginTop="-15dp" /> </LinearLayout> 

Tengo el código de disposición de la actualización de esto y también encontré otra solución que también he intentado esto y todavía no resultados positivos. Necesito esto para trabajar con API 10 . Cualquier ayuda es muy apreciada

Sí, obtuvo el resultado esperado.

Dado que la animación en android sólo intenta aplicar una matriz de transformación en el mapa de bits de la vista, no cambia la posición y el tamaño de la vista.

Así que después de su animación, aunque setFillAfter(true) para que la vista parezca girada, pero de hecho la vista todavía está en el mismo lugar y no se mueve un poco.

El problema que enfrenta, es porque se utiliza una animación Tween. La vista girará y sólo se moverá la parte visible. Pero las posiciones del ImageView permanecerán iguales a las definidas en el diseño. Es por eso que el área seleccionable permanece igual.

Para redefinir la posición, de acuerdo con la animación tendrá que utilizar una animación de propiedades , como un ObjectAnimator o un ValueAnimator . Con esto las propiedades definidas en xml serán actualizadas. Ahora las áreas clickable se mueven junto con las vistas.

  • OpenGL al activar Android Phone
  • Cómo rotar un lienzo en un punto específico usando android.graphics.Camera.rotateX (angle)
  • Cómo rotar un dibujable por ObjectAnimator?
  • Rotar vídeo con mp4parser de acuerdo con la cámara utilizada
  • Android - ¿Cómo diseñar un tipo de diseño de Rotary Dialer / Rotary Dialer?
  • Comprensión adicional setRetainInstance (true)
  • Cómo girar el botón de acción flotante sin girar la sombra?
  • Rotar una matriz de bytes YUV en Android
  • Imagen fuera de límites después de la transformación en la vista
  • Cómo rotar el mapa de bits correctamente?
  • ¿Por qué querría alguna vez `setRetainInstance (false)`? - O - La forma correcta de manejar la rotación del dispositivo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.