Fix regression in launch settings performance

Cache a view so we aren't getting a hold of it every frame.

Test: android.platform.systemui.tests.jank
        .SystemUiJankTests#testLaunchSettings
Fixes: 70948188
Change-Id: I27c06155662b890c909b1ee74ce96844e20a3a1d
This commit is contained in:
Jason Monk
2018-01-18 19:05:52 -05:00
parent 588a06f5a2
commit 0e3aab29ec

View File

@@ -26,6 +26,7 @@ import android.view.IWallpaperVisibilityListener;
import android.view.IWindowManager;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnLayoutChangeListener;
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.Dependency;
@@ -41,6 +42,7 @@ public final class NavigationBarTransitions extends BarTransitions {
private boolean mLightsOut;
private boolean mAutoDim;
private View mNavButtons;
public NavigationBarTransitions(NavigationBarView view) {
super(view, R.drawable.nav_background);
@@ -66,6 +68,18 @@ public final class NavigationBarTransitions extends BarTransitions {
}, Display.DEFAULT_DISPLAY);
} catch (RemoteException e) {
}
mView.addOnLayoutChangeListener(
(v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
View currentView = mView.getCurrentView();
if (currentView != null) {
mNavButtons = currentView.findViewById(R.id.nav_buttons);
applyLightsOut(false, true);
}
});
View currentView = mView.getCurrentView();
if (currentView != null) {
mNavButtons = currentView.findViewById(R.id.nav_buttons);
}
}
public void init() {
@@ -105,21 +119,20 @@ public final class NavigationBarTransitions extends BarTransitions {
if (!force && lightsOut == mLightsOut) return;
mLightsOut = lightsOut;
final View navButtons = mView.getCurrentView().findViewById(R.id.nav_buttons);
if (mNavButtons == null) return;
// ok, everyone, stop it right there
navButtons.animate().cancel();
mNavButtons.animate().cancel();
// Bump percentage by 10% if dark.
float darkBump = mLightTransitionsController.getCurrentDarkIntensity() / 10;
final float navButtonsAlpha = lightsOut ? 0.6f + darkBump : 1f;
if (!animate) {
navButtons.setAlpha(navButtonsAlpha);
mNavButtons.setAlpha(navButtonsAlpha);
} else {
final int duration = lightsOut ? LIGHTS_OUT_DURATION : LIGHTS_IN_DURATION;
navButtons.animate()
mNavButtons.animate()
.alpha(navButtonsAlpha)
.setDuration(duration)
.start();