2017-10-24 24 views
0

뷰 페이저에 세 개의 조각이있는 활동이 있습니다. 내부에 조각이있는 호출기가있는 또 다른 상위 조각을 시작했습니다. 모든 것이 잘되고이 모든 것을 성공적으로 수행합니다. 그러나 fragment에서 fragment로 공유 전환을 위해 addSharedElement를 사용하면 애니메이션이 전혀 발생하지 않습니다. 나는 다음과 같은 새로운 최고 조각과 조각을 대체 :공유 전환 조각이 작동하지 않습니다.

View transitionView = view.findViewById(R.id.photo_image_view); 
     fragmentManager 
       .beginTransaction() 
       .replace(R.id.fragment_container, fragment) 
       .addToBackStack(null) 
       .addSharedElement(transitionView, ViewCompat.getTransitionName(transitionView)) 
       .commit(); 

내 옆에 조각에를 내가 한에서 onCreate :

public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getActivity() != null) { 
     getActivity().supportPostponeEnterTransition(); 
    } 
    } 

는 onCreateView에서 나는 조각과 다른 viewpager를 구현합니다.
 desiredFragmentToShow.setSharedElementEnterTransition(TransitionInflater.from(

    getActivity()).inflateTransition(R.transition.change_image_trans)); 

    desiredFragmentToShow.setEnterTransition(TransitionInflater.from(

    getActivity()).inflateTransition(android.R.transition.fade)); 

및 desiredFragmentToShow에

가 onViewCreated에서 내가 한 :

activity.supportStartPostponedEnterTransition(); 

을하지만 전혀 애니메이션은 없습니다보기 호출기를 구현 한 후, 조각 나는 내가 한 보여주고 싶어요. 몸에 아이디어가 있다면 도와주세요.

+0

그렇다면 조각 사이에 공유 요소를 사용하는 이유는 무엇입니까? 예를 들어 당신은'getActivity()를 호출합니다. supportPostponeEnterTransition();은'postponeEnterTransition();'이어야합니다 .. –

+0

@Mark Keen 'postponeEnterTransition();' 뷰 컨테이너의 다음 컨테이너 조각의 'onCreate()'및 'startPostponedEnterTransition();' 뷰 페이저 내부의 프래그먼트에서 여전히 페이저 뷰의 페이저 뷰가 애니 메이팅되지 않습니다. –

+0

@WakilAhmad 문제 해결에 성공하셨습니까? –

답변

0

죄송합니다 내 대답은 코 틀린에 있지만 나는 내가 onViewCreated에서 startPostponedEnterTransition()를 호출하는 것은 너무 늦은 것으로 나타났습니다

별거 아니 생각합니다.

ViewPager 조각

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    val transition = TransitionInflater 
     .from(context) 
     .inflateTransition(R.transition.change_image_trans) 
    sharedElementEnterTransition = transition 
    /* The return transition probably should be set here as well on the way back 
     but I havent't try that yet so I nullify it... */ 
    sharedElementReturnTransition = null 
    postponeEnterTransition() 
    // ... your code 
} 

페이지 조각

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    startPostponedEnterTransition() 
} 

그 작품 ... 불행하게도 당신은 당신이 그것을 정의하는 경우에만 작동 전환에 리스너를 넣어하려는 경우

Page Fragment에서 캐스트 된 공유 전환에 리스너를 설정하면 트리거되지 않습니다. ViewPager에 있습니다.

val transition = parentFragment!!.sharedElementEnterTransition 
+0

나는 이미 전화를 연기했다. –

+0

알겠습니다. 만약 당신이'ViewPager Fragment' 대신에'Page Fragment'에서 그것을 포스팅한다면 그 이유가있을 것입니다. 어쨌든 내가 공유 한 단계를 수행하면 전환, 행운을 가져올 것이라고 확신합니다. –