Problema extraño al realizar la transición de ImageView en Android 5.0
Estoy experimentando un problema / error extraño con respecto a las transiciones de ImageView
entre Actividades en Android 5.0.
Estoy tratando de hacer una transición de una imagen en miniatura del Fragment A
(en la Activity A
) a la imagen del encabezado del Fragment B
(en la Activity B
). Funciona bien la mayor parte del tiempo, pero a veces se ensucia hasta tan ligeramente.
- Desactivar la hamburguesa para animar las flechas
- Obtener TypeNotPresentException seguido de ClassNotFoundException o NoClassDefFoundError en todas las versiones de android excepto android L
- ¿Cómo obtener tareas recientes en Android "L"?
- Cómo cambiar programáticamente el color primario en Android L
- La transparencia de la barra de estado no funciona
Aquí está una imagen de lo que parece cuando se ensucia:
Naturalmente, se supone que debe llenar todo el área. Ambos ImageViews se establecen en ScaleType.CENTER_CROP
, por lo que no puedo imaginar que sea el problema.
Lo curioso es que el problema se soluciona inmediatamente al desplazarse en la Activity B
(todo está contenido dentro de un ScrollView
subclasificado que cambia el relleno de ImageView
al desplazarse).
El código para iniciar la Activity B
es bastante sencillo:
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( activity, thumbImageView, "cover"); // "cover" is the shared element name for both ImageViews ActivityCompat.startActivity(activity, intent, options.toBundle());
Aquí está el código para el observador ScrollView
observable:
scrollview.setOnScrollChangedListener(new OnScrollChangedListener() { @Override public void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt) { // Such parallax, much wow headerImageView.setPadding(0, (int) (t / 1.5), 0, 0); } });
También, aquí es parte de mi estilo de tema:
<item name="android:windowContentTransitions">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
¿Algunas ideas?
- WifiConfiguration habilita la red en Lollipop
- Path.approximate () no es compatible con android studio 0.8.14 beta
- Android L batería historian.par falta herramienta
- Anular invertir SharedElementTransition cuando onBackPressed
- Haga que la barra de navegación permanezca en la parte superior de cualquier animación de actividad
- Hipo en transiciones de actividad con elementos compartidos
- Android 5.0 android: elevación Funciona para la vista, pero no el botón?
- Android 5.0 JobScheduler API en versiones anteriores?
Intente agregar el siguiente código al método onCreateView()
su Fragment
B:
getActivity().postponeEnterTransition(); scrollView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { scrollView.getViewTreeObserver().removeOnPreDrawListener(this); getActivity().startPostponedEnterTransition(); return true; } });
¿El problema todavía se produce cuando este código está presente? Esto asegurará que la transición sólo comience después de que el fragmento haya terminado su diseño.
Por ejemplo, si está cargando una imagen de alta resolución en su segunda actividad, intente llamar a startPostponedEnterTransition
después de startPostponedEnterTransition
la imagen (es decir, establecer el oyente onPreDraw
en el ImageView
lugar De en la vista de la ventana de la decoración).
- ¿Por qué DefaultHttpClient envía datos a través de un socket semi-cerrado?
- Cierre total de una aplicación Android de teléfono