youtubers tesis sobre sirve resumida que para investigaciones investigacion historia caracteristicas android android-fragments android-5.0-lollipop android-recyclerview shared-element-transition

android - sirve - tesis sobre youtube pdf



La transiciĆ³n de elementos compartidos no tiene el comportamiento esperado (1)

Encontré mi error, estaba obteniendo el ImageView del fragmento rootView que me daba un ImageView al azar de mi RecyclerView, lo que significa el nombre de transición incorrecto. ¡Así que utilicé la vista dada por onItemClick y funcionó! También muevo el setTransitionName () dentro del adaptador.

mAdapter.setOnItemClickListener(new RssItemAdapter.OnItemCLickListener(){ @Override public void onItemClick(View view, int position) { final RssItem item = mAdapter.getItem(position); final RssElementIntent intent = new RssElementIntent(getActivity(), item, position); // WRONG ! // final ImageView image = (ImageView) mRootView.findViewById(R.id.rss_element_image); // Correct final ImageView image = (ImageView) view.findViewById(R.id.rss_element_image); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( getActivity(), image, RssElementFragment.EXTRA_IMAGE); ActivityCompat.startActivity(getActivity(), intent, options.toBundle()); } });

Implementé la transición de elementos compartidos entre una imagen en un RecyclerView y una imagen en un nuevo Fragment. The RecyclerView está alojado en un fragmento alojado por una actividad y el fragmento de destino está alojado dentro de otra actividad.

Cuando hago clic en mi imagen, la transición está sucediendo como se esperaba y llego a mi fragmento. Pero cuando hago clic en el botón Atrás, la transición está tratando de poner mi imagen en la primera posición de mi RecyclerView mientras está mostrando la imagen, que no es necesariamente la primera.

A partir de esta situación, pensé que como era una lista de imágenes en la que establecí un nombre de transición dentro del XML, quizás al volver, dado que todas las imágenes tienen el mismo nombre de transición, el proceso es confuso y solo se obtiene la primera imagen con el nombre. Así que tal vez debería dar dinámicamente un nombre de transición diferente para cada uno de ellos. También configuré el mismo nombre para la imagen de destino y lo restablecí cada vez que se selecciona una nueva imagen. Pero todavía no está funcionando. Alguien me puede ayudar con eso?

Aquí está el código dentro de mi onItemClickListener:

mAdapter.setOnItemClickListener(new RssItemAdapter.OnItemCLickListener(){ @Override public void onItemClick(View view, int position) { final RssItem item = mAdapter.getItem(position); final RssElementIntent intent = new RssElementIntent(getActivity(), item, position); // mRootView is the view of the fragment final ImageView image = (ImageView) mRootView.findViewById(R.id.rss_element_image); image.setTransitionName(getString(R.string.transition_name_rss_feed_picture) + position); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( getActivity(), image, RssElementFragment.EXTRA_IMAGE); ActivityCompat.startActivity(getActivity(), intent, options.toBundle()); } });

Aquí está el código en el fragmento objetivo:

rssImage.setTransitionName(getString(R.string.transition_name_rss_feed_picture) + getArguments().getInt(ARG_ELEMENT_POSITION)); ViewCompat.setTransitionName(rssImage, EXTRA_IMAGE);

Y aquí está el themes.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="android:colorAccent">@color/theme_accent</item> <!-- enable window content transitions --> <item name="android:windowContentTransitions">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <!-- specify shared element transitions --> <item name="android:windowSharedElementEnterTransition"> @transition/change_image_transform </item> <item name="android:windowSharedElementExitTransition"> @transition/change_image_transform </item> </style>

Editar:

Encontré mi error, estaba obteniendo el ImageView del fragmento rootView que me daba un ImageView al azar de mi RecyclerView, lo que significa el nombre de transición incorrecto. ¡Así que utilicé la vista dada por onItemClick y funcionó! También muevo el setTransitionName() dentro del adaptador.

mAdapter.setOnItemClickListener(new RssItemAdapter.OnItemCLickListener(){ @Override public void onItemClick(View view, int position) { final RssItem item = mAdapter.getItem(position); final RssElementIntent intent = new RssElementIntent(getActivity(), item, position); // WRONG ! // final ImageView image = (ImageView) mRootView.findViewById(R.id.rss_element_image); // Correct final ImageView image = (ImageView) view.findViewById(R.id.rss_element_image); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( getActivity(), image, RssElementFragment.EXTRA_IMAGE); ActivityCompat.startActivity(getActivity(), intent, options.toBundle()); } });