1

У меня следующая ситуация:Shared элемент Переход Glitch для GridView элементов

1) У меня есть активность А с GridView показывает эскизы изображений.

2) У меня есть еще одна активность B, у которой есть только PhotoView (link), соответствующий размеру его родителя.

3) Когда я нажимаю на какой-либо элемент в GridView, маленький миниатюра должен анимироваться из текущего положения и размера и изменять размер изображения в PhotoView.

Скриншот

Activity A with the GridView Activity B with the 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.

+0

Поскольку ваш переход функционирует, это означает, что соединения выполнены надлежащим образом между двумя действиями. Глюки могут быть вызваны несколькими различными вещами. Можете ли вы опубликовать экранную проблему? (Вы можете записать его в Android Studio) –

ответ

0

Я знаю, что это старый вопрос, и вы, вероятно, нашли решение уже, но из того, что я вижу, похоже, что вы используете разные имена перехода («position» + pos vs. «photo» + pos). Это вообще работает?

Вторая вещь, которая приходит мне на ум, заключается в том, что загрузка изображения в изображение является ресурсоемким, поэтому, возможно, вам потребуется загрузить его асинхронно и использовать postponeEnterTransition, чтобы второе действие могло правильно загрузить изображение, прежде чем смотреть на него анимация.

Тем не менее, я новичок в анимации для Android, так что это просто предположение и мои 2 цента. Надеюсь, я не совсем ошибаюсь, и этот ответ поможет кому-то :)

+0

Спасибо за ваши предложения. Я не пробовал это довольно долго. –

Смежные вопросы