【发布时间】:2017-01-23 11:32:43
【问题描述】:
我有两个活动(A 和 B),当我单击一个按钮时,A 中的元素开始动画过渡到 B。但是,我想禁用从 B 回到 A 时向后播放的相同过渡。
在问这个问题之前,我上网查了一下,发现有setSharedElementReturnTransition(transition)和setSharedElementReenterTransition(transition)两种方法。这些方法在transition = null 的适当活动onCreate() 方法中被调用,但没有奏效。
我找到的唯一解决方案是取消转换,在onBackPressed() 中调用finish() 而不是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
<resources>
<style name="theme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowContentTransitions">true</item>
</style>
</resources>
【问题讨论】:
-
我也面临同样的问题,对我来说,我所做的是
finish()inonBackPressed() -
请分享您的代码
-
@AJay 感谢您的回复。我已经这样做了,但这不是解决方案
-
@AtmanBhatt 我更新了问题
标签: android android-transitions