У меня следующая ситуация:
1) У меня есть Activity A с GridView, показывающим миниатюры изображений.
2) У меня есть другое действие B, в котором есть только PhotoView (ссылка), совпадающее с размером его родителя.
3) Когда я нажимаю на любой элемент в GridView, маленькая миниатюра должна анимироваться из своего текущего положения и размера и меняться до размера изображения в PhotoView.
Скриншот
Моя реализация
Это то, что я сделал для разрешения,
<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>
Здесь я получаю представление и устанавливаю имя перехода,
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());
В моем действии B (полностью только с PhotoView),
final PhotoView photoView = new PhotoView(container.getContext());
relativeLayout.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
photoView.setTransitionName("position"+pos);
Проблема
Анимация работает, но далеко не так, как ожидалось. Он совсем не плавный и глючный. Что я делаю не так? Я надеюсь, что где-нибудь здесь смогут поймать мою ошибку и исправить ее.
Пример — приложение QuickPic, приложение Sony Album.