Merge "Cleanup how we set back button alpha" into ub-launcher3-edmonton

This commit is contained in:
Tony Wickham
2018-05-22 19:06:02 +00:00
committed by Android (Google) Code Review
6 changed files with 78 additions and 29 deletions
@@ -0,0 +1,62 @@
/*
* Copyright (C) 2018 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.
*/
package com.android.launcher3.uioverrides;
import android.animation.ValueAnimator;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.LauncherStateManager;
import com.android.launcher3.anim.AnimatorSetBuilder;
import com.android.quickstep.OverviewInteractionState;
public class BackButtonAlphaHandler implements LauncherStateManager.StateHandler {
private static final String TAG = "BackButtonAlphaHandler";
private final Launcher mLauncher;
private final OverviewInteractionState mOverviewInteractionState;
public BackButtonAlphaHandler(Launcher launcher) {
mLauncher = launcher;
mOverviewInteractionState = OverviewInteractionState.getInstance(mLauncher);
}
@Override
public void setState(LauncherState state) {
UiFactory.onLauncherStateOrFocusChanged(mLauncher);
}
@Override
public void setStateWithAnimation(LauncherState toState,
AnimatorSetBuilder builder, LauncherStateManager.AnimationConfig config) {
if (!config.playNonAtomicComponent()) {
return;
}
float fromAlpha = mOverviewInteractionState.getBackButtonAlpha();
float toAlpha = toState.hideBackButton ? 0 : 1;
if (Float.compare(fromAlpha, toAlpha) != 0) {
ValueAnimator anim = ValueAnimator.ofFloat(fromAlpha, toAlpha);
anim.setDuration(config.duration);
anim.addUpdateListener(valueAnimator -> {
final float alpha = (float) valueAnimator.getAnimatedValue();
mOverviewInteractionState.setBackButtonAlpha(alpha, false);
});
builder.play(anim);
}
}
}
@@ -78,11 +78,13 @@ public class UiFactory {
}
public static StateHandler[] getStateHandler(Launcher launcher) {
return new StateHandler[] {
launcher.getAllAppsController(), launcher.getWorkspace(),
new RecentsViewStateController(launcher)};
return new StateHandler[] {launcher.getAllAppsController(), launcher.getWorkspace(),
new RecentsViewStateController(launcher), new BackButtonAlphaHandler(launcher)};
}
/**
* Sets the back button visibility based on the current state/window focus.
*/
public static void onLauncherStateOrFocusChanged(Launcher launcher) {
boolean shouldBackButtonBeHidden = launcher != null
&& launcher.getStateManager().getState().hideBackButton
@@ -96,10 +98,6 @@ public class UiFactory {
.setBackButtonAlpha(shouldBackButtonBeHidden ? 0 : 1, true /* animate */);
}
public static void setBackButtonAlpha(Launcher launcher, float alpha, boolean animate) {
OverviewInteractionState.getInstance(launcher).setBackButtonAlpha(alpha,animate);
}
public static void resetOverview(Launcher launcher) {
RecentsView recents = launcher.getOverviewPanel();
recents.reset();
@@ -91,6 +91,7 @@ public class OverviewInteractionState {
// These are updated on the background thread
private ISystemUiProxy mISystemUiProxy;
private boolean mSwipeUpEnabled = true;
private float mBackButtonAlpha = 1;
private Runnable mOnSwipeUpSettingChangedListener;
@@ -117,7 +118,14 @@ public class OverviewInteractionState {
return mSwipeUpEnabled;
}
public float getBackButtonAlpha() {
return mBackButtonAlpha;
}
public void setBackButtonAlpha(float alpha, boolean animate) {
if (!mSwipeUpEnabled) {
alpha = 1;
}
mUiHandler.removeMessages(MSG_SET_BACK_BUTTON_ALPHA);
mUiHandler.obtainMessage(MSG_SET_BACK_BUTTON_ALPHA, animate ? 1 : 0, 0, alpha)
.sendToTarget();
@@ -128,6 +136,9 @@ public class OverviewInteractionState {
}
private boolean handleUiMessage(Message msg) {
if (msg.what == MSG_SET_BACK_BUTTON_ALPHA) {
mBackButtonAlpha = (float) msg.obj;
}
mBgHandler.obtainMessage(msg.what, msg.arg1, msg.arg2, msg.obj).sendToTarget();
return true;
}