Переход SharedElement находится над строкой состояния и панелью навигации после изменения в onMapSharedElements()

При использовании общего перехода элемента между ImageView Стол на одном экране и ViewPager фрагментов на втором я использовал onMapSharedElements() удалить первый элемент и добавить новый в тех случаях, когда я ViewPager, Проблема в том, что в случае, когда я ViewPagerанимация все еще находится над моей панелью навигации и строкой состояния, но не над моей панелью инструментов. (Работает нормально, если я ничего не связываю с onMapSharedElements()) Вот код для onMapSharedElements:

Тот, что в действии A (обратный вызов выхода из SharedElement):

    public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
        if (mTmpReenterState != null) {
            String startViewString = mTmpReenterState.getString(EXTRA_STARTING_VIEW);
            String currentViewString = mTmpReenterState.getString(EXTRA_CURRENT_VIEW);
            if (startViewString != null && !startViewString.equals(currentViewString)) {
                // I have code to find the new view here.
                            newSharedElement = v;

                }
                if (newSharedElement != null) {

                    names.add(newTransitionName);
                    sharedElements.put(newTransitionName, newSharedElement);

                    names.add(Window.NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME);
                    sharedElements.put(Window.NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME,navigationBar);
                    names.add(Window.STATUS_BAR_BACKGROUND_TRANSITION_NAME);
                    sharedElements.put(Window.STATUS_BAR_BACKGROUND_TRANSITION_NAME, statusBar);
                    names.add(TOOLBAR);
                    sharedElements.put(TOOLBAR, mToolbar);

                }
            }


            mTmpReenterState = null;
        }
    }

Один в действии B (с ViewPager) (EnterSharedElementCallback):

public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
        if (mIsReturning) {
            if(mStartingPosition == mCurrentPosition){
                return;
            }
            ImageView sharedElement = null;
            // I have code to check if view has changed here, and to find the new view
            if (sharedElement == null) {
            } else if (mStartingPosition != mCurrentPosition) {
                names.clear();
                names.add(sharedElement.getTransitionName());
                sharedElements.clear();
                sharedElements.put(sharedElement.getTransitionName(), sharedElement);

                names.add(Window.NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME);
                sharedElements.put(Window.NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME,navigationBar);
                names.add(Window.STATUS_BAR_BACKGROUND_TRANSITION_NAME);
                sharedElements.put(Window.STATUS_BAR_BACKGROUND_TRANSITION_NAME,statusBar);
                names.add(TOOLBAR);
                sharedElements.put(TOOLBAR,mToolbar);

            }
        }
    }

Мой startActivity выглядит так:

View navigationBar = ((Activity)context).findViewById(android.R.id.navigationBarBackground);
                                            View statusBar = ((Activity)context).findViewById(android.R.id.statusBarBackground);
                                            View mToolbar = ((Activity)context).findViewById(R.id.toolBarStartScreen);
                                            ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation((Activity) context,  Pair.create(imageView, imageView.getTransitionName()), Pair.create(mToolbar, RecordsSummaryActivity.TOOLBAR),Pair.create(navigationBar, Window.NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME), Pair.create(statusBar,Window.STATUS_BAR_BACKGROUND_TRANSITION_NAME));
                                            context.startActivity(intent, options.toBundle());

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

0 ответов

Другие вопросы по тегам