Ho due attività con un singolo oggetto condiviso, un ImageView
. Entrambe le attività sono sottoclassi di AppCompatActivity
e condividono lo stesso tema:onEnterAnimationComplete() non viene chiamato dopo una transazione di attività
<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>
Attività A chiama Attività B nel modo seguente:
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());
durante l'attività B, voglio iniziare una semplice animazione oscillazione su lo stesso ImageView condiviso. Se avvio l'animazione sul metodo onCreate
, il risultato è abbastanza brutto perché inizia prima della alla fine della transizione di attività. Così ho sovrascrivere il metodo di onEnterAnimationComplete()
in attività B:
@Override
public void onEnterAnimationComplete() {
Log.d(TAG, "ANIMATION COMPLETE");
Animation anim = AnimationUtils.loadAnimation(this, R.anim.wobble);
findViewById(R.id.SharedView).startAnimation(anim);
}
Il problema è, non succede nulla. Le transizioni di attività e elementi condivisi vengono riprodotte, ma al termine dell'altra l'animazione non verrà avviata. Controllando l'output del logcat vedo che il metodo non è nemmeno chiamato. qualche idea?
questa sembra essere una questione rilevante SO. http://stackoverflow.com/questions/39488410/onenteranimationcomplete-not-called-api-21 – Kiki