A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release en lugar de aosp-main para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Cómo implementar transiciones de app sincronizadas
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Las transiciones de app sincronizadas son una función de Android 9 que mejora la arquitectura de transiciones de app existente. Cuando un usuario abre, cierra o cambia entre apps, el proceso de SystemUI o Launcher (pantalla principal) envía una solicitud para controlar la animación fotograma por fotograma con una sincronización garantizada entre las animaciones de vista y las animaciones de ventana. Cuando SystemUI o el selector dibujan un fotograma nuevo como parte de una animación, solicitan una transformación diferente en la superficie de la app animada que determina cómo se compone la app en la pantalla y marca la solicitud, una transacción de superficie, para que se sincronice con el fotograma que se está dibujando.
Esto permite animaciones de transiciones de app nuevas que no son posibles en Android 8.x y versiones anteriores. Por ejemplo, la animación de inicio de la app puede transformar los íconos de la pantalla principal sin problemas en la superficie de la app, y la animación de inicio de la notificación puede transformar las notificaciones en la superficie de la app.
Ejemplos y fuente
Consulta las siguientes referencias para esta función.
Para obtener una implementación de referencia de la animación de inicio de la notificación, consulta ActivityLaunchAnimator.kt.
Implementación
Puedes implementar esta función en el selector o la IU del sistema según sea necesario, o bien puedes usar la implementación de AOSP en SystemUI/Launcher3.
Validación
Para validar el rendimiento de las animaciones, mide el rendimiento de la app de control, es decir, SystemUI o Launcher, durante las animaciones, como se describe en Cómo probar el rendimiento de la IU.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# Implement synchronized app transitions\n\nSynchronized App Transitions is a feature in Android 9\nthat enhances the existing app transition architecture. When a user opens,\ncloses, or switches between apps, the SystemUI or Launcher (homescreen) process\nsends a request to control the animation frame-by-frame with guaranteed\nsynchronization between view animations and window animations. When the SystemUI\nor Launcher draws a new frame as part of an animation, it requests a different\ntransform on the animating app surface that determines how the app is composed\non the screen, and marks the request, a surface transaction, to be synchronized\nwith the frame it's currently drawing.\n\nThis allows for new app transition animations that are not possible on Android\n8.x and lower. For example, the\n[app launch animation](/static/docs/core/display/images/app-launch-animation.mp4)\ncan transform homescreen icons seamlessly into the app surface and the\n[notification launch animation](/static/docs/core/display/images/notification-launch-animation.mp4)\ncan transform notifications into the app surface.\n\nExamples and source\n-------------------\n\nSee the following references for this feature.\n\n- [`ActivityOptions.makeRemoteAnimation`](https://android.googlesource.com/platform/frameworks/base/+/33a701a55c28dd20390acee1ba7881a500830d7d/core/java/android/app/ActivityOptions.java#843)\n- [`RemoteAnimationAdapter`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/core/java/android/view/RemoteAnimationAdapter.java)\n- [`RemoteAnimationRunner`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/core/java/android/view/IRemoteAnimationRunner.aidl)\n- [`Activity.registerRemoteAnimations`](https://android.googlesource.com/platform/frameworks/base/+/f84e2f60fec6f6d2ecfb3b90ddf075101f4b902f/core/java/android/app/Activity.java#7672)\n\nFor a reference implementation for the notification launch animation, see\n[`ActivityLaunchAnimator.kt`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt).\n\nImplementation\n--------------\n\nYou can implement this feature on Launcher/System UI as required or you can use\nthe AOSP implementation in SystemUI/Launcher3.\n| **Note:** This feature increases the load on the GPU and CPU during animations.\n\nValidation\n----------\n\nTo validate the performance of the animations, measure the performance of the\ncontrolling app, i.e. SystemUI or Launcher, during the animations as described\nin\n[Test UI performance](https://developer.android.com/training/testing/performance)."]]