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:
@@ -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,
|
||||
|
||||
34
core/res/res/anim/activity_close_enter_legacy.xml
Normal file
34
core/res/res/anim/activity_close_enter_legacy.xml
Normal 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>
|
||||
44
core/res/res/anim/activity_close_exit_legacy.xml
Normal file
44
core/res/res/anim/activity_close_exit_legacy.xml
Normal 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>
|
||||
42
core/res/res/anim/activity_open_enter_legacy.xml
Normal file
42
core/res/res/anim/activity_open_enter_legacy.xml
Normal 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>
|
||||
45
core/res/res/anim/activity_open_exit_legacy.xml
Normal file
45
core/res/res/anim/activity_open_exit_legacy.xml
Normal 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>
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user