조각에 setEnterTransition
에 새 Lollipop API를 사용하고 조각에 이미지 공유 요소 전환을 추가합니다. 원하는 동작은 먼저 이미지가 해당 위치로 이동해야만 조각의 나머지보기가 사라집니다.공유 요소가있는 조각에 전환 입력 공유 요소를 대상으로
그러나 enterTransition이 공유 요소에 적용되어 있으므로 나머지보기. enterTransition을 설정하지 않으면 이미지가 제대로 이동하지만 이동하는 동안 다른 내용이 이미 표시됩니다.
공유보기에 enterTransition을 적용하지 않으려면 어떻게해야합니까?
이 문제를 해결해야하는 것처럼 보인 this commit in the AOSP이 발견되었지만 작동하지 않는 것 같습니다.
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.main_fragment, container, false);
final ImageView imageView = (ImageView) rootView.findViewById(R.id.image);
final Button button = (Button) rootView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TransitionSet transitionSet = new TransitionSet();
transitionSet.addTransition(new ChangeImageTransform());
transitionSet.addTransition(new ChangeBounds());
transitionSet.setDuration(300);
Fragment fragment2 = new Fragment2();
fragment2.setSharedElementEnterTransition(transitionSet);
fragment2.setSharedElementReturnTransition(transitionSet);
Fade fade = new Fade();
fade.setStartDelay(300);
fragment2.setEnterTransition(fade);
getFragmentManager().beginTransaction()
.replace(R.id.container, fragment2)
.addSharedElement(imageView, "SharedImage")
.commit();
}
});
return rootView;
}
}
조지, 내가 너와 키스 할 수있어! 이 방법을 사용하면 내보기가 항상 첫 번째 조각에 배치 된 위치에서 시작하는 대신 두 번째 조각의 화면 맨 위에서 애니메이션을 시작하여 내 문제를 해결할 수 있습니다. 여기에 내 질문에 대한 링크가 있습니다 (이 톤의 의견) 감사합니다! http://stackoverflow.com/questions/26950801/shared-elements-animating-between-fragments – brockoli
조지,이 방법은'ChangeTransform'이 처음 사용 된 방법입니까? 아니면 특정 구현은이 사건을 다루기 위해 발생합니까? 'ChangeTransform'을 사용하면 마술처럼 물건을 고치는 것은 거의 임의적 인 것처럼 보입니다. 이 케이스를 커버하기 위해'ChangeBounds','ChangeImageTransform' 등을 구현하지 않은 이유가 있습니까? –
예. 전환은 일반적으로 전환 속성을 원하는대로 조합 할 수 있도록 작은 속성 집합을 애니메이션으로 만듭니다. 부모와 자식이 따로 따로 전이하는 경우를 처리해야했습니다. 이렇게하려면 동일한 속성을 애니메이션으로 처리해야하므로 겉으로보기에 다른 전환을 병합해야했습니다. –