我正在使用新的棒棒糖API为片段设置 setEnterTransition
, 然后为片段中的图像添加共享元素过渡。期望的行为是首先,图像应该移动到其位置,然后片段中的其余视图应该淡入。
然而,enterTransition被应用于共享元素,因此它与其余视图一起淡入。如果我不设置enterTransition,则图像会正确移动,但在它移动时其他内容已经可见。
我该如何使它不将enterTransition应用于共享视图?
我在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;
}
}
ChangeTransform
最初的使用方式吗?还是它的具体实现只是恰好涵盖了这种情况?使用ChangeTransform
看起来几乎是随意的,但却可以神奇地解决问题。为什么ChangeBounds
、ChangeImageTransform
等没有被实现来涵盖这种情况呢? - Alex Lockwood