Revert transition codes in SettingsLib

Bug: 191335572
Change-Id: Ib6be344b84a531c7261a7a69f4f9d042c8e24186
This commit is contained in:
Yi-Ling Chuang
2021-06-18 17:20:28 +08:00
parent 9da336b4c1
commit ff4ca837de
6 changed files with 15 additions and 212 deletions

View File

@@ -21,8 +21,7 @@
android:id="@+id/content_parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:transitionGroup="true">
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar"

View File

@@ -16,22 +16,8 @@
package com.android.settingslib.collapsingtoolbar;
import static com.android.settingslib.transition.SettingsTransitionHelper.EXTRA_PAGE_TRANSITION_TYPE;
import android.app.ActivityOptions;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.Toolbar;
import androidx.annotation.Nullable;
import androidx.core.os.BuildCompat;
import androidx.fragment.app.FragmentActivity;
import com.android.settingslib.transition.SettingsTransitionHelper;
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
/**
* A base Activity for Settings-specific page transition. Activities extending it will get
* Settings transition applied.
@@ -39,57 +25,7 @@ import com.android.settingslib.transition.SettingsTransitionHelper.TransitionTyp
public abstract class SettingsTransitionActivity extends FragmentActivity {
private static final String TAG = "SettingsTransitionActivity";
private Toolbar mToolbar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
if (isSettingsTransitionEnabled()) {
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
SettingsTransitionHelper.applyForwardTransition(this);
SettingsTransitionHelper.applyBackwardTransition(this);
}
super.onCreate(savedInstanceState);
}
@Override
public void setActionBar(@Nullable Toolbar toolbar) {
super.setActionBar(toolbar);
mToolbar = toolbar;
}
@Override
public void startActivityForResult(Intent intent, int requestCode, @Nullable Bundle options) {
final int transitionType = intent.getIntExtra(EXTRA_PAGE_TRANSITION_TYPE,
TransitionType.TRANSITION_SHARED_AXIS);
if (!isSettingsTransitionEnabled() ||
transitionType == TransitionType.TRANSITION_NONE) {
super.startActivityForResult(intent, requestCode, options);
return;
}
super.startActivityForResult(intent, requestCode,
createActivityOptionsBundleForTransition(options));
}
protected boolean isSettingsTransitionEnabled() {
return BuildCompat.isAtLeastS();
}
@Nullable
private Bundle createActivityOptionsBundleForTransition(@Nullable Bundle options) {
if (mToolbar == null) {
Log.w(TAG, "setActionBar(Toolbar) is not called. Cannot apply settings transition!");
return options;
}
final Bundle transitionOptions = ActivityOptions.makeSceneTransitionAnimation(this,
mToolbar, "shared_element_view").toBundle();
if (options == null) {
return transitionOptions;
}
final Bundle mergedOptions = new Bundle(options);
mergedOptions.putAll(transitionOptions);
return mergedOptions;
return false;
}
}

View File

@@ -11,7 +11,6 @@ android_library {
name: "SettingsLibSettingsTransition",
srcs: ["src/**/*.java"],
resource_dirs: ["res"],
static_libs: [
"com.google.android.material_material",

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2021 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
-->
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:pathData="M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1"/>

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 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.
-->
<resources>
<dimen name="settings_shared_axis_x_slide_distance">96dp</dimen>
</resources>

View File

@@ -16,21 +16,11 @@
package com.android.settingslib.transition;
import androidx.annotation.IntDef;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import androidx.core.os.BuildCompat;
import androidx.annotation.IntDef;
import androidx.fragment.app.Fragment;
import com.google.android.material.transition.platform.FadeThroughProvider;
import com.google.android.material.transition.platform.MaterialSharedAxis;
import com.google.android.material.transition.platform.SlideDistanceProvider;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -59,31 +49,6 @@ public class SettingsTransitionHelper {
public static final String EXTRA_PAGE_TRANSITION_TYPE = "page_transition_type";
private static final String TAG = "SettingsTransitionHelper";
private static final long DURATION = 450L;
private static final float FADE_THROUGH_THRESHOLD = 0.22F;
private static MaterialSharedAxis createSettingsSharedAxis(Context context, boolean forward) {
final MaterialSharedAxis transition = new MaterialSharedAxis(MaterialSharedAxis.X, forward);
transition.excludeTarget(android.R.id.statusBarBackground, true);
transition.excludeTarget(android.R.id.navigationBarBackground, true);
final SlideDistanceProvider forwardDistanceProvider =
(SlideDistanceProvider) transition.getPrimaryAnimatorProvider();
final int distance = context.getResources().getDimensionPixelSize(
R.dimen.settings_shared_axis_x_slide_distance);
forwardDistanceProvider.setSlideDistance(distance);
transition.setDuration(DURATION);
final FadeThroughProvider fadeThroughProvider =
(FadeThroughProvider) transition.getSecondaryAnimatorProvider();
fadeThroughProvider.setProgressThreshold(FADE_THROUGH_THRESHOLD);
final Interpolator interpolator =
AnimationUtils.loadInterpolator(context, R.interpolator.fast_out_extra_slow_in);
transition.setInterpolator(interpolator);
return transition;
}
/**
* Apply the forward transition to the {@link Activity}, including Exit Transition and Enter
@@ -92,23 +57,16 @@ public class SettingsTransitionHelper {
* The Exit Transition takes effect when leaving the page, while the Enter Transition is
* triggered when the page is launched/entering.
*/
public static void applyForwardTransition(Activity activity) {
if (!isSettingsTransitionEnabled()) {
return;
}
if (activity == null) {
Log.w(TAG, "applyForwardTransition: Invalid activity!");
return;
}
final Window window = activity.getWindow();
if (window == null) {
Log.w(TAG, "applyForwardTransition: Invalid window!");
return;
}
final MaterialSharedAxis forward = createSettingsSharedAxis(activity, true);
window.setExitTransition(forward);
window.setEnterTransition(forward);
}
public static void applyForwardTransition(Activity activity) {}
/**
* Apply the forward transition to the {@link Fragment}, including Exit Transition and Enter
* Transition.
*
* The Exit Transition takes effect when leaving the page, while the Enter Transition is
* triggered when the page is launched/entering.
*/
public static void applyForwardTransition(Fragment fragment) {}
/**
* Apply the backward transition to the {@link Activity}, including Return Transition and
@@ -118,43 +76,7 @@ public class SettingsTransitionHelper {
* to close. Reenter Transition will be used to move Views in to the scene when returning from a
* previously-started Activity.
*/
public static void applyBackwardTransition(Activity activity) {
if (!isSettingsTransitionEnabled()) {
return;
}
if (activity == null) {
Log.w(TAG, "applyBackwardTransition: Invalid activity!");
return;
}
final Window window = activity.getWindow();
if (window == null) {
Log.w(TAG, "applyBackwardTransition: Invalid window!");
return;
}
final MaterialSharedAxis backward = createSettingsSharedAxis(activity, false);
window.setReturnTransition(backward);
window.setReenterTransition(backward);
}
/**
* Apply the forward transition to the {@link Fragment}, including Exit Transition and Enter
* Transition.
*
* The Exit Transition takes effect when leaving the page, while the Enter Transition is
* triggered when the page is launched/entering.
*/
public static void applyForwardTransition(Fragment fragment) {
if (!isSettingsTransitionEnabled()) {
return;
}
if (fragment == null) {
Log.w(TAG, "applyForwardTransition: Invalid fragment!");
return;
}
final MaterialSharedAxis forward = createSettingsSharedAxis(fragment.getContext(), true);
fragment.setExitTransition(forward);
fragment.setEnterTransition(forward);
}
public static void applyBackwardTransition(Activity activity) {}
/**
* Apply the backward transition to the {@link Fragment}, including Return Transition and
@@ -164,20 +86,5 @@ public class SettingsTransitionHelper {
* to close. Reenter Transition will be used to move Views in to the scene when returning from a
* previously-started Fragment.
*/
public static void applyBackwardTransition(Fragment fragment) {
if (!isSettingsTransitionEnabled()) {
return;
}
if (fragment == null) {
Log.w(TAG, "applyBackwardTransition: Invalid fragment!");
return;
}
final MaterialSharedAxis backward = createSettingsSharedAxis(fragment.getContext(), false);
fragment.setReturnTransition(backward);
fragment.setReenterTransition(backward);
}
private static boolean isSettingsTransitionEnabled() {
return BuildCompat.isAtLeastS();
}
public static void applyBackwardTransition(Fragment fragment) {}
}