当前位置:  开发笔记 > Android > 正文

取消共享元素转换

如何解决《取消共享元素转换》经验,为你挑选了1个好方法。

我有两个活动(A和B),当我点击一个按钮时,A中的元素开始动画过渡到B.但是,我想要从B回到A时禁用向后播放的相同过渡.

在提出这个问题之前,我在互联网上进行了研究,发现有两种方法setSharedElementReturnTransition(transition)setSharedElementReenterTransition(transition).这些方法在适当的活动方法中调用onCreate(),transition = null并且不起作用.

唯一的解决办法,我发现,取消过渡,打电话finish()onBackPressed()代替super.onBackPressed().有没有其他方法可以实现理想的行为?

总而言之,当我将向后转换设置为null时,没有任何改变 - 转换未被覆盖.

编辑1.这是一个代码:

ActivtyA.java

 public class ActivityA {

    ...
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_A);
            }

    ...

            @Override
            public void onPersonalProfileEditIconClicked() {
                Intent intent = new Intent(ActivityA.this, ActivityB.class);

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

                      View sharedView = avatarView;

                      String sharedElementName = getString(R.string.profile_avatar);
                      ActivityOptions transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation
                                (ActivityA.this, sharedView, sharedElementName);
                      startActivity(intent, transitionActivityOptions.toBundle());
                } else startActivity(intent);
            }
}  

ActivityB.java

public class ActivityB {

    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_B);
    }

    ...

    @Override
    public void onBackPressed() {
        finish();
    }
}  

在XML文件(activity_A和activity_B)中,sharedView具有属性transitionName.

的themes.xml


    

Milovan Jovi.. 7

更新支持库后,可以取消共享元素转换,而无需更改super.onBackPressed();finish();

只有你需要设置(在我的情况下)返回/重新进入转换为null并更改视图上的转换名称.

getWindow().setSharedElementReturnTransition(null); getWindow().setSharedElementReenterTransition(null); view.setTransitionName(null);



1> Milovan Jovi..:

更新支持库后,可以取消共享元素转换,而无需更改super.onBackPressed();finish();

只有你需要设置(在我的情况下)返回/重新进入转换为null并更改视图上的转换名称.

getWindow().setSharedElementReturnTransition(null); getWindow().setSharedElementReenterTransition(null); view.setTransitionName(null);

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有