То, что яShared Transition Анимация Glitch
Я установил разрешение правильно.
<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>
И это мой файл перехода,
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeImageTransform/>
<changeBounds/>
<changeTransform/>
</transitionSet>
Теперь в моей основной деятельности я дал GridView с эскизами изображений.
View photo = (View) list.getChildAt(position).findViewById(R.id.fileThumb);
photo.setTransitionName("photo" + position);
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(getActivity(), Pair.create(photo, photo.getTransitionName()));
Intent intent = new Intent(getActivity(), GalleryActivity.class);
intent.putExtra(Config.GALLERY_EXTRA, position);
getActivity().startActivity(intent, options.toBundle());
В моей Detail деятельности,
У меня есть ViewPager с фрагментами. В onCreate() фрагмента я сделал это.
final PhotoView photoView = new PhotoView(container.getContext());
relativeLayout.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
photoView.setTransitionName("position"+pos);
Анимация, похоже, работает с правильными элементами, но не гладко. Кажется, есть сбой в анимации. Однако переход на выходе несколько плавный. Но все еще не идеально.
Что я здесь делаю неправильно?
Плохо. Любое рабочее исправление? –
Есть два возможных обходных решения, которые я нашел, но ни один из них не работал для меня:/ 1. Используйте обычный ImageView вместо Photoview, а затем установите PhotoViewAttacher на ImageView после завершения перехода. Однако я не мог понять, как правильно настроить слушателя. 2. Отобразите второй ImageView за PhotoView и сделайте его невидимым впоследствии. Не работает, потому что некоторая setVisibility (View.GONE) не будет работать. Не стесняйтесь попробовать эти обходные пути самостоятельно, возможно, вы получите его на работу. –
Спасибо, я посмотрю, смогу ли найти какое-либо другое решение. –