代码之家  ›  专栏  ›  技术社区  ›  SikhWarrior

如何在片段转换中淡出非共享视图?

  •  2
  • SikhWarrior  · 技术社区  · 7 年前

    我目前正在尝试使用片段进行共享元素转换,并且基本想法可行。我有两个非常相似的屏幕(见屏幕截图),共享的转换适用于表单,但这两个按钮(登录/社交)并不优雅地转换,它们只是在退出时消失,在进入时重新出现。是否可以指定这两个视图项在过渡期间淡出和淡入?

    片段A

     getActivity().getSupportFragmentManager().beginTransaction()
                .addSharedElement(btn_next, ViewCompat.getTransitionName(btn_next))
                .addSharedElement(et_email, ViewCompat.getTransitionName(et_email))
                .addSharedElement(ll_form, ViewCompat.getTransitionName(ll_form))
                .replace(R.id.fl_content, new LoginFragment())
                .addToBackStack(null)
                .commit();
    

    片段B

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setSharedElementEnterTransition(TransitionInflater.from(getContext()).inflateTransition(android.R.transition.move));
    

    Screenshot

    1 回复  |  直到 7 年前
        1
  •  8
  •   SikhWarrior    7 年前

    因此,在进一步挖掘之后,我了解到非共享视图被称为 transitioning views 如此处所述 AndroidDesignPatterns.com

    内容转换决定了活动的非共享视图(也称为转换视图)如何进入或退出活动场景。

    article 来自同一网站

    setExitTransition() - A’s exit transition animates transitioning views out of the scene when A starts B.
    setEnterTransition() - B’s enter transition animates transitioning views into the scene when A starts B.
    setReturnTransition() - B’s return transition animates transitioning views out of the scene when B returns to A.
    setReenterTransition() - A’s reenter transition animates transitioning views into the scene when B returns to A.
    

    所以这句简单的话解决了我的问题。

    setExitTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.fade));