From c83254ee996afb3cbcbe9273cad9e624199c690b Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Wed, 9 Aug 2017 10:45:05 -0400 Subject: Make rounded corners handle color inversion Test: visual Change-Id: I99284b9f24340a453d39aafe6937454892e1383d Fixes: 64210958 --- .../src/com/android/systemui/RoundedCorners.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/RoundedCorners.java b/packages/SystemUI/src/com/android/systemui/RoundedCorners.java index 58119f5a9334..f7936b67c474 100644 --- a/packages/SystemUI/src/com/android/systemui/RoundedCorners.java +++ b/packages/SystemUI/src/com/android/systemui/RoundedCorners.java @@ -18,7 +18,10 @@ import static com.android.systemui.tuner.TunablePadding.FLAG_START; import static com.android.systemui.tuner.TunablePadding.FLAG_END; import android.app.Fragment; +import android.content.res.ColorStateList; +import android.graphics.Color; import android.graphics.PixelFormat; +import android.provider.Settings.Secure; import android.support.annotation.VisibleForTesting; import android.util.DisplayMetrics; import android.view.Gravity; @@ -28,11 +31,13 @@ import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; +import android.widget.ImageView; import com.android.systemui.R.id; import com.android.systemui.fragments.FragmentHostManager; import com.android.systemui.fragments.FragmentHostManager.FragmentListener; import com.android.systemui.plugins.qs.QS; +import com.android.systemui.qs.SecureSetting; import com.android.systemui.statusbar.phone.CollapsedStatusBarFragment; import com.android.systemui.statusbar.phone.NavigationBarFragment; import com.android.systemui.statusbar.phone.StatusBar; @@ -92,6 +97,22 @@ public class RoundedCorners extends SystemUI implements Tunable { Dependency.get(TunerService.class).addTunable(this, SIZE); + // Watch color inversion and invert the overlay as needed. + SecureSetting setting = new SecureSetting(mContext, Dependency.get(Dependency.MAIN_HANDLER), + Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED) { + @Override + protected void handleValueChanged(int value, boolean observedChange) { + int tint = value != 0 ? Color.WHITE : Color.BLACK; + ColorStateList tintList = ColorStateList.valueOf(tint); + ((ImageView) mOverlay.findViewById(id.left)).setImageTintList(tintList); + ((ImageView) mOverlay.findViewById(id.right)).setImageTintList(tintList); + ((ImageView) mBottomOverlay.findViewById(id.left)).setImageTintList(tintList); + ((ImageView) mBottomOverlay.findViewById(id.right)).setImageTintList(tintList); + } + }; + setting.setListening(true); + setting.onChange(false); + mOverlay.addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, -- cgit v1.2.3-59-g8ed1b