Add glyph rerasterization hack for SystemUI.
Change-Id: I39d84e981b828b501801349d7a5e70a089b5f14e
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index f9aadf3..04f9c72 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -61,7 +61,6 @@
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.SystemClock;
-import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
@@ -73,6 +72,7 @@
import android.util.Log;
import android.view.Display;
import android.view.Gravity;
+import android.view.HardwareCanvas;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -82,6 +82,7 @@
import android.view.ViewGroup.LayoutParams;
import android.view.ViewPropertyAnimator;
import android.view.ViewStub;
+import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
@@ -119,7 +120,6 @@
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothControllerImpl;
import com.android.systemui.statusbar.policy.CastControllerImpl;
-import com.android.systemui.statusbar.policy.DateView;
import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.HeadsUpNotificationView;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
@@ -130,6 +130,7 @@
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChildLocationsChangedListener;
+import com.android.systemui.statusbar.stack.StackScrollAlgorithm;
import com.android.systemui.statusbar.stack.StackScrollState.ViewState;
import com.android.systemui.volume.VolumeComponent;
@@ -383,6 +384,8 @@
private final ShadeUpdates mShadeUpdates = new ShadeUpdates();
+ private int mDrawCount;
+
private static final int VISIBLE_LOCATIONS = ViewState.LOCATION_FIRST_CARD
| ViewState.LOCATION_TOP_STACK_PEEKING
| ViewState.LOCATION_MAIN_AREA
@@ -723,9 +726,34 @@
// listen for USER_SETUP_COMPLETE setting (per-user)
resetUserSetupObserver();
+ startGlyphRasterizeHack();
return mStatusBarView;
}
+ /**
+ * Hack to improve glyph rasterization for scaled text views.
+ */
+ private void startGlyphRasterizeHack() {
+ mStatusBarView.getViewTreeObserver().addOnPreDrawListener(
+ new ViewTreeObserver.OnPreDrawListener() {
+ @Override
+ public boolean onPreDraw() {
+ if (mDrawCount == 1) {
+ mStatusBarView.getViewTreeObserver().removeOnPreDrawListener(this);
+ HardwareCanvas.setProperty("extraRasterBucket",
+ Float.toString(StackScrollAlgorithm.DIMMED_SCALE));
+ HardwareCanvas.setProperty("extraRasterBucket", Float.toString(
+ mContext.getResources().getDimensionPixelSize(
+ R.dimen.qs_time_collapsed_size)
+ / mContext.getResources().getDimensionPixelSize(
+ R.dimen.qs_time_expanded_size)));
+ }
+ mDrawCount++;
+ return true;
+ }
+ });
+ }
+
@Override
protected void setZenMode(int mode) {
super.setZenMode(mode);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
index c22b8c2..ee7206f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
@@ -41,7 +41,7 @@
/** When a child is activated, the other cards' alpha fade to this value. */
private static final float ACTIVATED_INVERSE_ALPHA = 0.9f;
- private static final float DIMMED_SCALE = 0.95f;
+ public static final float DIMMED_SCALE = 0.95f;
private int mPaddingBetweenElements;
private int mCollapsedSize;