Rotar el diseño relativo con los botones: las áreas de eventos táctiles no giran

Quiero rotar un RelativeLayout como este:

De esto:

Introduzca aquí la descripción de la imagen

A esto:

Introduzca aquí la descripción de la imagen

He intentado hasta ahora:

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

Y este es mi archivo .java :

 RotateAnimation rotateAnim = (RotateAnimation)AnimationUtils.loadAnimation(this, R.anim.rotate); RelativeLayout layout = (RelativeLayout)findViewById(R.id.buttonLayout); layout.startAnimation(rotateAnim); 

Esto es realmente girar mi diseño de botones, pero el área de toque de botones no giran. Quiero decir que la vista de botones realmente se parece a 90 grados rotados, pero el área de toque permanecerá igual.

¿Y consejo? ¿Mi camino (sin LayoutAnimationController ) está bien?

¡10X por adelantado!

Sólo para aclarar las respuestas anteriores, en android hay dos tipos de animaciones, animación de vista y animación de propiedad, la primera – anima la vista sin cambiar la vista en sí, lo que significa que después de que final se debe establecer las vistas a la forma en que quería . Este último – cambia las propiedades de la vista en sí (ancho, altura, X, Y y etc …) mientras anima.

En su caso, este último es el derecho de elegir.

Además, la animación de la propiedad tiene un mejor rendimiento (utiliza vsync) por lo que si su aplicación admite ics y superior y se puede utilizar, siempre será mejor opción.

Aquí se anima la representación de la vista, por lo que los botones y la vista están en realidad en el mismo lugar.
Para mover las vistas, utilice el ViewPropertyAnimator :

 layout.animate().rotation(90).start(); 
 RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.main); int w = mainLayout.getWidth(); int h = mainLayout.getHeight(); mainLayout.setRotation(270.0f); mainLayout.setTranslationX((w - h) / 2); mainLayout.setTranslationY((h - w) / 2); ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) mainLayout.getLayoutParams(); lp.height = w; lp.width = h; mainLayout.requestLayout(); 

Y diseño

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:id="@+id/main" android:layout_height="match_parent" android:background="#ffcc88" tools:context=".TestRotateActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Test" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" /> <Button android:id="@+id/rotate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Rotate" android:layout_centerInParent="true" /> </RelativeLayout> 
  • Ejecutar AVD está dando error
  • Tratando de entender los márgenes en LinearLayout dentro de ScrollView
  • Fragmento de Android: ¿se mueve de una vista a otra?
  • Adición de un TableLayout dinámico con bordes en una aplicación para Android
  • "No se encontró ningún identificador de recurso para el atributo 'showAsAction' en el paquete 'android'"
  • Sombra debajo de Actionbar-compat al usar rellenos
  • Contenido de la aplicación va detrás de la barra de navegación en android L
  • Android: Agregar una vista de forma programática omite algunos atributos de estilo
  • Cómo ejecutar "callOnClick ()" para Android API 8?
  • Centrar verticalmente RecyclerView en fragmento
  • Cambiar el color de fondo de edittext en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.