【发布时间】:2015-10-31 00:22:47
【问题描述】:
我有两个带有一个共享对象的活动,一个ImageView。这两个活动都是AppCompatActivity 的子类,它们共享相同的主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowExitTransition">@transition/transition_slide</item>
<item name="android:windowEnterTransition">@transition/transition_slide</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/obj_transition</item>
<item name="android:windowSharedElementExitTransition">
@transition/obj_transition</item>
</style>
Activity A 调用 Activity B 的方式如下:
Intent intent = new Intent(ActivityA.this, ActivityB.class);
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation(ActivityA.this, view, "common_tag");
ActivityCompat
.startActivityForResult(ActivityA.this, intent, ACT_B_TAG, options.toBundle());
在 Activity B 上,我想在同一个共享 ImageView 上开始一个简单的摆动动画。如果我在onCreate 方法上启动动画,结果会非常难看,因为它在活动转换结束之前开始。所以我覆盖了Activity B中的onEnterAnimationComplete()方法:
@Override
public void onEnterAnimationComplete() {
Log.d(TAG, "ANIMATION COMPLETE");
Animation anim = AnimationUtils.loadAnimation(this, R.anim.wobble);
findViewById(R.id.SharedView).startAnimation(anim);
}
问题是,什么都没有发生。活动和共享元素转换播放,但当它们结束时,其他动画不会开始。检查 logcat 输出我发现该方法甚至没有被调用。有什么想法吗?
【问题讨论】:
标签: android android-activity android-transitions