我有两个活动(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);
更新支持库后,可以取消共享元素转换,而无需更改super.onBackPressed();
为finish();
只有你需要设置(在我的情况下)返回/重新进入转换为null并更改视图上的转换名称.
getWindow().setSharedElementReturnTransition(null);
getWindow().setSharedElementReenterTransition(null);
view.setTransitionName(null);