Allow lights-out + bar icon dimming on low-end devices.

Maintain fallback to OPAQUE mode on low-end devices in place of the
translucent modes.

Bug: 12546110
Change-Id: Ia3582c305cb09aadd56c6aa58b039a174675c79a
This commit is contained in:
John Spurlock
2014-01-14 14:51:23 -05:00
parent 81479358de
commit 88a9ce4209

View File

@@ -37,6 +37,8 @@ public class BarTransitions {
private static final boolean DEBUG = false;
private static final boolean DEBUG_COLORS = false;
public static final boolean HIGH_END = ActivityManager.isHighEndGfx();
public static final int MODE_OPAQUE = 0;
public static final int MODE_SEMI_TRANSPARENT = 1;
public static final int MODE_TRANSLUCENT = 2;
@@ -48,7 +50,6 @@ public class BarTransitions {
private final String mTag;
private final View mView;
private final boolean mSupportsTransitions = ActivityManager.isHighEndGfx();
private final BarBackgroundDrawable mBarBackground;
private int mMode;
@@ -57,7 +58,7 @@ public class BarTransitions {
mTag = "BarTransitions." + view.getClass().getSimpleName();
mView = view;
mBarBackground = new BarBackgroundDrawable(mView.getContext(), gradientResourceId);
if (mSupportsTransitions) {
if (HIGH_END) {
mView.setBackground(mBarBackground);
}
}
@@ -67,18 +68,22 @@ public class BarTransitions {
}
public void transitionTo(int mode, boolean animate) {
// low-end devices do not support translucent modes, fallback to opaque
if (!HIGH_END && (mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSLUCENT)) {
mode = MODE_OPAQUE;
}
if (mMode == mode) return;
int oldMode = mMode;
mMode = mode;
if (DEBUG) Log.d(mTag, String.format("%s -> %s animate=%s",
modeToString(oldMode), modeToString(mode), animate));
if (mSupportsTransitions) {
onTransition(oldMode, mMode, animate);
}
onTransition(oldMode, mMode, animate);
}
protected void onTransition(int oldMode, int newMode, boolean animate) {
applyModeBackground(oldMode, newMode, animate);
if (HIGH_END) {
applyModeBackground(oldMode, newMode, animate);
}
}
protected void applyModeBackground(int oldMode, int newMode, boolean animate) {