Use legacy transitions in legacy transition system

The new activity transitions are currently only supported in shell so we want to replace them with the old transitions when running using the legacy transition system

Fixes: 215512394

Test: Flash and make sure we are using the old activity transitions when shell transitions are disabled
Change-Id: I602852b16effa150fe697262a7d7e506c464d62a
This commit is contained in:
Pablo Gamito
2022-01-20 15:59:50 +01:00
parent 9ebb08d22e
commit 6b600cf1a9
6 changed files with 196 additions and 0 deletions

View File

@@ -98,6 +98,10 @@ public class TransitionAnimation {
private static final String DEFAULT_PACKAGE = "android";
// TODO (b/215515255): remove once we full migrate to shell transitions
private static final boolean SHELL_TRANSITIONS_ENABLED =
SystemProperties.getBoolean("persist.debug.shell_transit", false);
private final Context mContext;
private final String mTag;
@@ -252,6 +256,9 @@ public class TransitionAnimation {
resId = ent.array.getResourceId(animAttr, 0);
}
}
if (!SHELL_TRANSITIONS_ENABLED) {
resId = updateToLegacyIfNeeded(resId);
}
resId = updateToTranslucentAnimIfNeeded(resId, transit);
if (ResourceId.isValid(resId)) {
return loadAnimationSafely(context, resId, mTag);
@@ -259,6 +266,24 @@ public class TransitionAnimation {
return null;
}
/**
* Replace animations that are not compatible with the legacy transition system with ones that
* are compatible with it.
* TODO (b/215515255): remove once we full migrate to shell transitions
*/
private int updateToLegacyIfNeeded(int anim) {
if (anim == R.anim.activity_open_enter) {
return R.anim.activity_open_enter_legacy;
} else if (anim == R.anim.activity_open_exit) {
return R.anim.activity_open_exit_legacy;
} else if (anim == R.anim.activity_close_enter) {
return R.anim.activity_close_enter_legacy;
} else if (anim == R.anim.activity_close_exit) {
return R.anim.activity_close_exit_legacy;
}
return anim;
}
/** Load animation by attribute Id from a specific AnimationStyle resource. */
@Nullable
public Animation loadAnimationAttr(String packageName, int animStyleResId, int animAttr,

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2009, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:fromXScale="1.1"
android:toXScale="1"
android:fromYScale="1.1"
android:toYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:fillEnabled="true"
android:fillBefore="true"
android:fillAfter="true"
android:interpolator="@interpolator/fast_out_extra_slow_in"
android:duration="400"/>
</set>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2009, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:zAdjustment="top">
<alpha
android:fromAlpha="1"
android:toAlpha="0.0"
android:fillEnabled="true"
android:fillBefore="true"
android:fillAfter="true"
android:interpolator="@interpolator/linear"
android:startOffset="33"
android:duration="50"/>
<scale
android:fromXScale="1"
android:toXScale="0.9"
android:fromYScale="1"
android:toYScale="0.9"
android:pivotX="50%"
android:pivotY="50%"
android:fillEnabled="true"
android:fillBefore="true"
android:fillAfter="true"
android:interpolator="@interpolator/fast_out_extra_slow_in"
android:duration="400"/>
</set>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?><!--
/*
** Copyright 2009, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<alpha
android:fromAlpha="0"
android:toAlpha="1.0"
android:fillEnabled="true"
android:fillBefore="true"
android:fillAfter="true"
android:interpolator="@interpolator/linear"
android:startOffset="50"
android:duration="50"/>
<scale
android:fromXScale="0.85"
android:toXScale="1"
android:fromYScale="0.85"
android:toYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:fillEnabled="true"
android:fillBefore="true"
android:fillAfter="true"
android:interpolator="@interpolator/fast_out_extra_slow_in"
android:duration="400"/>
</set>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?><!--
/*
** Copyright 2009, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<!-- Fade out, over a black surface, which simulates a black scrim -->
<alpha
android:fromAlpha="1"
android:toAlpha="0.4"
android:fillEnabled="true"
android:fillBefore="true"
android:fillAfter="true"
android:interpolator="@interpolator/linear"
android:startOffset="83"
android:duration="167"/>
<scale
android:fromXScale="1"
android:toXScale="1.05"
android:fromYScale="1"
android:toYScale="1.05"
android:pivotX="50%"
android:pivotY="50%"
android:fillEnabled="true"
android:fillBefore="true"
android:fillAfter="true"
android:interpolator="@interpolator/fast_out_extra_slow_in"
android:duration="400"/>
</set>

View File

@@ -1696,7 +1696,13 @@
<java-symbol type="anim" name="activity_translucent_open_enter" />
<java-symbol type="anim" name="activity_translucent_close_exit" />
<java-symbol type="anim" name="activity_open_enter" />
<java-symbol type="anim" name="activity_open_exit" />
<java-symbol type="anim" name="activity_close_enter" />
<java-symbol type="anim" name="activity_close_exit" />
<java-symbol type="anim" name="activity_open_enter_legacy" />
<java-symbol type="anim" name="activity_open_exit_legacy" />
<java-symbol type="anim" name="activity_close_enter_legacy" />
<java-symbol type="anim" name="activity_close_exit_legacy" />
<java-symbol type="anim" name="task_fragment_close_enter" />
<java-symbol type="anim" name="task_fragment_close_exit" />
<java-symbol type="anim" name="task_fragment_open_enter" />