Elemento compartido de animación de transición de elemento
Tengo una LoginActivity
que consta de dos botones Login y Registro . Estoy tratando de compartir el botón Registrar de LoginActivity
a RegistrationActivity
. La animación de la transición está sucediendo pero la animación no viene suavemente. El problema es el botón de registro está tomando toda la altura y el ancho de la LoginActivity
antes de pasar a RegistrationActivity
.
Aquí está la captura de pantalla del problema. Puede ver el botón Registro tomando toda la altura y el ancho del diseño:
- ¿Cómo se puede saber si una actividad se inicia sin una transición?
- Fragmento de elementos compartidos no funcionan con ViewPager
- Cómo implementar fragmento resizableable por arrastre de usuario (no animación de transición predefinida)
- Animar el cambio de diseño de la hoja inferior
- Cómo pasar de una pantalla a la siguiente con animación
Mi código de LoginActivity
donde estoy saltando a ResgitrationActivity
:
Intent intent = new Intent(LoginActivity.this, RegistrationActivity.class); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(LoginActivity.this, register, "register"); startActivity(intent, options.toBundle());
En mi onPause()
de ambos LoginActivity
y RegistrationActivity
Estoy llamando a esto:
@Override protected void onPause() { super.onPause(); overridePendingTransition(0, 0); }
Aquí está mi style.xml
:
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="android:colorPrimary">@color/colorPrimary</item> <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> <item name="android:colorAccent">@color/colorAccent</item> <item name="android:windowContentTransitions">true</item> </style> <style name="AppTheme.Button" parent="Widget.AppCompat.Button.Colored"> <item name="android:colorAccent">#3b5998</item> <item name="android:textColor">#fff</item> </style> <style name="RegistrationButton" parent="Widget.AppCompat.Button.Colored"> <item name="android:colorAccent">#F44E3F</item> <item name="android:textColor">#FFF</item> </style> <style name="TextLabel" parent="ThemeOverlay.AppCompat.Light"> <!-- Hint color and label color in FALSE state --> <item name="android:textColorHint">#FFF</item> <!-- Label color in TRUE state and bar color FALSE and TRUE State --> <item name="android:colorAccent">#FFF</item> <item name="android:colorControlNormal">#FFF</item> <item name="android:colorControlActivated">#FFF</item> </style> </resources>
Mi configuración de LoginActivity
:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/loginLayout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.ignite.a01hw909350.kolamdemo.LoginActivity"> <ImageView android:layout_width="200dp" android:layout_height="200dp" android:adjustViewBounds="true" android:alpha="0.5" android:scaleType="fitXY" android:src="@drawable/background_img" /> <ImageView android:layout_width="200dp" android:layout_height="200dp" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:adjustViewBounds="true" android:alpha="0.5" android:rotation="180" android:scaleType="fitXY" android:src="@drawable/background_img" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginTop="16dp" android:orientation="vertical" android:padding="16dp"> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/TextLabel"> <android.support.v7.widget.AppCompatEditText android:id="@+id/loginEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:drawableEnd="@drawable/ic_action_user" android:hint="@string/email" android:inputType="textEmailAddress" android:textAppearance="@style/TextAppearance.FontPath" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/TextLabel"> <android.support.v7.widget.AppCompatEditText android:id="@+id/loginPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:drawableEnd="@drawable/ic_action_password" android:hint="@string/password" android:inputType="textPassword" android:textAppearance="@style/TextAppearance.FontPath" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> </android.support.design.widget.TextInputLayout> <Button android:id="@+id/loginSubmit" style="@style/Widget.AppCompat.Button.Colored" android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/login" android:textAllCaps="false" android:textAppearance="@style/TextAppearance.FontPath" android:textColor="#fff" /> <Button android:id="@+id/registerText" style="@style/Widget.AppCompat.Button.Colored" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/register" android:textAllCaps="false" android:textAppearance="@style/TextAppearance.FontPath" android:textColor="#fff" android:theme="@style/RegistrationButton" /> </LinearLayout> </RelativeLayout>
Aquí está mi diseño RegistrationActivity
:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/registerLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/gradient_morning_background" tools:context="com.ignite.a01hw909350.kolamdemo.RegistrationActivity"> <ImageView android:layout_width="200dp" android:layout_height="200dp" android:adjustViewBounds="true" android:alpha="0.37" android:scaleType="fitXY" android:src="@drawable/background_img" /> <ImageView android:layout_width="200dp" android:layout_height="200dp" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:adjustViewBounds="true" android:alpha="0.37" android:rotation="180" android:scaleType="fitXY" android:src="@drawable/background_img" /> <LinearLayout android:id="@+id/registerContentLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="vertical" android:padding="16dp"> <EditText android:id="@+id/regUsername" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:background="#e6f3f0" android:hint="@string/username" android:inputType="textEmailAddress" android:padding="10dp" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> <EditText android:id="@+id/regNickname" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:background="#e6f3f0" android:hint="@string/nickname" android:inputType="textEmailAddress" android:padding="7dp" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> <EditText android:id="@+id/regEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:background="#e6f3f0" android:hint="@string/email" android:inputType="textEmailAddress" android:padding="7dp" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> <EditText android:id="@+id/regPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:background="#e6f3f0" android:hint="@string/password" android:inputType="textPassword" android:padding="7dp" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> <EditText android:id="@+id/regDOB" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:background="#e6f3f0" android:hint="@string/dob" android:inputType="date" android:padding="7dp" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> <EditText android:id="@+id/regTOB" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:background="#e6f3f0" android:hint="@string/tob" android:inputType="time" android:padding="7dp" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> <Spinner android:id="@+id/lang" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:padding="5dp" android:prompt="@string/language" /> <EditText android:id="@+id/regPOB" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:background="#e6f3f0" android:hint="@string/pob" android:inputType="textAutoComplete" android:padding="7dp" android:textColor="@color/primary_text" android:textColorHint="@color/secondary_text" /> <Button android:id="@+id/regSubmit" style="@style/Widget.AppCompat.Button.Colored" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/submit" android:textAllCaps="false" android:textColor="#fff" android:theme="@style/RegistrationButton" /> </LinearLayout> <ImageView android:layout_width="120dp" android:layout_height="120dp" android:layout_above="@id/registerContentLayout" android:layout_centerInParent="true" android:layout_marginBottom="15dp" android:src="@drawable/logo" /> </RelativeLayout>
Estoy probando esto en un dispositivo Android con Marshmallow. ¿Por qué la animación no es suave?
- Iniciar Actividad de Fragmento utilizando Transición (soporte API 21)
- La transición de retorno no funciona correctamente cuando se utilizan fragmentos de transiciones compartidas
- SharedElment transition usando fragmentos que no están en transición
- Cancelar la transición de retorno compartida en Android Lollipop
- ¿Crear una transición Fragment como la aplicación Contactos?
- Animación de escala dinámica al reemplazar Fragmento
- Fragmento Transacciones con transición - Los nombres de transición únicos son necesarios
- Transición de actividad no realizada (Lollipop)
- Ya sea .. o distinción en Android <uses-feature> manifiesto
- Bluetooth en el fondo como un servicio en Android?