Rotar el diseño relativo con los botones: las áreas de eventos táctiles no giran
Quiero rotar un RelativeLayout
como este:
De esto:
- Android consigue el ancho completo para el cuadro de diálogo personalizado
- Cómo convertir Vista a Bitmap en android?
- ¿Cómo crear un diseño doblado personalizado con imageview y texto android?
- Cómo saber cuál es el soporte de teléfono que diseño (hdpi, mdpi y xhpi)?
- Cómo hacer la alineación del título de la pestaña a la izquierda en TabLayout en Android
A esto:
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!
- Cómo alinear mediante programación un Android TextView a la derecha de otro TextView
- Cómo escribo una fracción en el estudio android
- Android, setSelected () y state_selected
- El fragmento ViewPager no funciona en la segunda vez dentro del fragmento del cajón de navegación correctamente
- Animación de Android para girar una vista y congelarla después de la rotación
- Tratando de entender la jerarquía de la vista
- Usando un RelativeLayout para dividir verticalmente dos fragmentos uniformemente
- RelativeLayout no maneja "toLeftOf" y / o toRightOf correctamente
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>
- Cómo agregar una etiqueta de propiedad dentro de la etiqueta de destino en build.xml en hormiga
- Activar y desactivar la pantalla mediante programación en android