From 4baf1245655761b747b65f269ff9eddbb3bc2f8f Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 24 May 2018 14:21:57 -0700 Subject: [PATCH] Tweak quickscrub bar visuals - Thicker asset, scale track slightly on gesture start/end Bug: 79945202 Test: Quickscrub and see changes Change-Id: Ic7ae11981ae79cd909d919a326ecc5126cbb399f --- .../res/drawable-hdpi/qs_scrubber_track.9.png | Bin 0 -> 365 bytes .../res/drawable-mdpi/qs_scrubber_track.9.png | Bin 0 -> 223 bytes .../drawable-xhdpi/qs_scrubber_track.9.png | Bin 0 -> 386 bytes .../drawable-xxhdpi/qs_scrubber_track.9.png | Bin 0 -> 685 bytes .../drawable-xxxhdpi/qs_scrubber_track.9.png | Bin 0 -> 747 bytes packages/SystemUI/res/values/colors.xml | 2 +- packages/SystemUI/res/values/dimens.xml | 2 +- .../statusbar/phone/QuickStepController.java | 51 ++++++++++++++---- 8 files changed, 42 insertions(+), 13 deletions(-) create mode 100644 packages/SystemUI/res/drawable-hdpi/qs_scrubber_track.9.png create mode 100644 packages/SystemUI/res/drawable-mdpi/qs_scrubber_track.9.png create mode 100644 packages/SystemUI/res/drawable-xhdpi/qs_scrubber_track.9.png create mode 100644 packages/SystemUI/res/drawable-xxhdpi/qs_scrubber_track.9.png create mode 100644 packages/SystemUI/res/drawable-xxxhdpi/qs_scrubber_track.9.png diff --git a/packages/SystemUI/res/drawable-hdpi/qs_scrubber_track.9.png b/packages/SystemUI/res/drawable-hdpi/qs_scrubber_track.9.png new file mode 100644 index 0000000000000000000000000000000000000000..0899d3515f1b9eaaf2eecc3e26e78d9945cc4226 GIT binary patch literal 365 zcmV-z0h0cSP)~W-5(K`7U%45}jmO8bU(irScI}Ix8e95nCO( zn|n698SKnVHOYPQ%ek5JjOhGWjOf2;;?T@`fl*)um;;6)@B&-_N5G?`&lcF4kXhq> z0@wm(fu27m_yVqgUEo$yn79oZ1NMNC&bMtOo`6kB_f5#m`hWvqIVIw;b6{Q4d*f)DIj2^BJK_U`^6nYemL^ePB2x_6%%Dx@oIOT+Gn5 z?UY^H0qzoA^C`@10GNz*nF0pmS=hDf*nkH~AHTKV|2Zjdm5AvFjtXW2tvjMf00000 LNkvXXu0mjfaX^-w literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-mdpi/qs_scrubber_track.9.png b/packages/SystemUI/res/drawable-mdpi/qs_scrubber_track.9.png new file mode 100644 index 0000000000000000000000000000000000000000..22664496db762448707e0642a4f07a94c24d61ca GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp@K+MCz1|)ZGH@^v_mU+53hG+y&y|kO_kb^+$!~a(V zYvgA~bZq-&)HQXwlYqRN_t9eyq*;UIBhRq4&Nw~A`1jj4=hm&@pPqSjYW<{b?gzL$ z8WkrnOBPJ}qGMjrnzO#~@ceU%d#7$;wmb2SXNOrsM3je>dkMRmY=D|3?}=^P3NIVD zJUw0X6E3i~hM6baVzgE1eLR}&~D~N)xEYyuzdlxrGP!}2{5L~zwy@+o-L`0#aa5}Wf1e!@( zFq`SBul}y?>JsT@k*iX|hB}#94Oj=3if=jsz5(~Z9ng{VS(403;byi1904(KnAj)a zP||Im!(X_WjRPmZZpya%e9nObNngeP0r(lPR{{HJ?0hX)k$hyuG#gALQ-o|R6pO*ahSV@KWh2(U zQcArNLfFh;I6BjPUbj2sK%b=d69i2R zVrFZBbHECqy_wZh-Wdj-0mmghY>*=z#LT<}M}e-Ki#H1E14=%l1?~c?E2>6V<_WM((z^iS zdNBY@uNcHNW{af$0Mg@vQ!zwX?xdvd05S-4OcKa|qzwV21}vH+keZ~$4q|5Jy~=x+ z6y+b5)E+=afVQF;bHUb%ctz!gc3NR5Ywd zQda<31M~xK0jhlbY;KY?7?=1vz`80afTxkf*8+%}A9kxs$Y81#kVvv zx>ebLmyr#4mGmQC9e3;3D{9Xk;MzE26c#r#_pAGXX(a)T0#_yNOSOtI5Leg>z^)Qx z-~DPIa46F}$BfdkXryRmVJ=38^HU;e=78mDdkJtqo7Xh`0^azhB;9YYtI|hK|1#W= z7aKWa=VmIf0GJ;Q;XZ(O0&@~O`~p0R266YJAAt{&{$%vGUXkSA3#~jC&E(QQgXhu% T^up|x00000NkvXXu0mjf8nrkb literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-xxxhdpi/qs_scrubber_track.9.png b/packages/SystemUI/res/drawable-xxxhdpi/qs_scrubber_track.9.png new file mode 100644 index 0000000000000000000000000000000000000000..06e120239eb2990fb500fbfa13cb5504ffbe0291 GIT binary patch literal 747 zcmVC{5&}6jQ#!#zrf+p(d=)U8fJMW$M&b`mfJnvI)@8+I!e)rt-eEp9IKP=@^Aw!gMW@a;i zWyxptWG&SHNB1#1P^01Dn|d;2^NKAY?7G zUqB~tT++`Re)9pF*(%^1Fe``CB9D9kwoAHQ$9QmHGn)#W1lAX!C}49H*dys{hHW-* z0_%0Qpg`a5B?&CkOnN0)U z0OLbN3gpK(7tiwNH1KI)XP_XV-E>OY*9UB7V}KsOYdFT?^Qu+S?|+9MGxL*{ue&ji zc1hh8;KRV7m}&ilDCtxM_!h7_a^M@1)>eRD0&^n=ej%x?0{jJNjvTm0QnLe_ne_rq zkpuTiYHCPePjN$)gabbZ+9EHBev_`@mNnm}k42v0ej7(4Y|Zl}J*%w4V*wX8W=ERk z_dtu^@%oe>Gdlw8j}-W*qyy>m@O0pHqz8D+XW>03?U1bQP-eYGA<_6?G*RRLrQDHnmXh%wUOmn3aT1qaQk*ImdNMBL6TXs-mi0PkrG$MBwq zgWjp*JRfjUB8}5BsDA5!O__U1Z(}GOrTiJL^{JA!*K%M{()!A3d%a6qUcuU4>1N#eeeeee #61000000 - #4DFFFFFF + #33FFFFFF #fff44336 diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 1aee7bc311a97..89f9e1f8eabb5 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -939,7 +939,7 @@ 0dp 0dp 24dp - 2dp + 10dp 0dp diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java index b55fe47f1f2de..860b77e1b251b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java @@ -29,14 +29,13 @@ import android.animation.AnimatorSet; import android.animation.ArgbEvaluator; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; -import android.animation.ValueAnimator; -import android.animation.ValueAnimator.AnimatorUpdateListener; import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Matrix; -import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.RemoteException; import android.util.FloatProperty; @@ -55,6 +54,7 @@ import com.android.systemui.plugins.statusbar.phone.NavGesture.GestureHelper; import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.recents.utilities.Utilities; import com.android.systemui.shared.system.NavigationBarCompat; +import com.android.internal.graphics.ColorUtils; /** * Class to detect gestures on the navigation bar and implement quick scrub. @@ -63,7 +63,8 @@ public class QuickStepController implements GestureHelper { private static final String TAG = "QuickStepController"; private static final int ANIM_IN_DURATION_MS = 150; - private static final int ANIM_OUT_DURATION_MS = 100; + private static final int ANIM_OUT_DURATION_MS = 134; + private static final float TRACK_SCALE = 0.95f; private NavigationBarView mNavigationBarView; @@ -76,6 +77,7 @@ public class QuickStepController implements GestureHelper { private boolean mIsVertical; private boolean mIsRTL; private float mTrackAlpha; + private float mTrackScale = TRACK_SCALE; private int mLightTrackColor; private int mDarkTrackColor; private float mDarkIntensity; @@ -85,7 +87,7 @@ public class QuickStepController implements GestureHelper { private final Handler mHandler = new Handler(); private final Rect mTrackRect = new Rect(); - private final Paint mTrackPaint = new Paint(); + private final Drawable mTrackDrawable; private final OverviewProxyService mOverviewEventSender; private final int mTrackThickness; private final int mTrackEndPadding; @@ -108,6 +110,20 @@ public class QuickStepController implements GestureHelper { } }; + private final FloatProperty mTrackScaleProperty = + new FloatProperty("TrackScale") { + @Override + public void setValue(QuickStepController controller, float scale) { + mTrackScale = scale; + mNavigationBarView.invalidate(); + } + + @Override + public Float get(QuickStepController controller) { + return mTrackScale; + } + }; + private final FloatProperty mNavBarAlphaProperty = new FloatProperty("NavBarAlpha") { @Override @@ -139,7 +155,7 @@ public class QuickStepController implements GestureHelper { mOverviewEventSender = Dependency.get(OverviewProxyService.class); mTrackThickness = res.getDimensionPixelSize(R.dimen.nav_quick_scrub_track_thickness); mTrackEndPadding = res.getDimensionPixelSize(R.dimen.nav_quick_scrub_track_edge_padding); - mTrackPaint.setAlpha(0); + mTrackDrawable = context.getDrawable(R.drawable.qs_scrubber_track).mutate(); } public void setComponents(NavigationBarView navigationBarView) { @@ -296,9 +312,17 @@ public class QuickStepController implements GestureHelper { } int color = (int) mTrackColorEvaluator.evaluate(mDarkIntensity, mLightTrackColor, mDarkTrackColor); - mTrackPaint.setColor(color); - mTrackPaint.setAlpha((int) (mTrackPaint.getAlpha() * mTrackAlpha)); - canvas.drawRect(mTrackRect, mTrackPaint); + int colorAlpha = ColorUtils.setAlphaComponent(color, + (int) (Color.alpha(color) * mTrackAlpha)); + mTrackDrawable.setTint(colorAlpha); + + // Scale the track, but apply the inverse scale from the nav bar + canvas.save(); + canvas.scale(mTrackScale / mNavigationBarView.getScaleX(), + 1f / mNavigationBarView.getScaleY(), + mTrackRect.centerX(), mTrackRect.centerY()); + mTrackDrawable.draw(canvas); + canvas.restore(); } @Override @@ -322,6 +346,7 @@ public class QuickStepController implements GestureHelper { x2 = x1 + width - 2 * mTrackEndPadding; } mTrackRect.set(x1, y1, x2, y2); + mTrackDrawable.setBounds(mTrackRect); } @Override @@ -387,7 +412,9 @@ public class QuickStepController implements GestureHelper { mLightTrackColor = mContext.getColor(R.color.quick_step_track_background_light); mDarkTrackColor = mContext.getColor(R.color.quick_step_track_background_dark); - ObjectAnimator trackAnimator = ObjectAnimator.ofFloat(this, mTrackAlphaProperty, 1f); + ObjectAnimator trackAnimator = ObjectAnimator.ofPropertyValuesHolder(this, + PropertyValuesHolder.ofFloat(mTrackAlphaProperty, 1f), + PropertyValuesHolder.ofFloat(mTrackScaleProperty, 1f)); trackAnimator.setInterpolator(ALPHA_IN); trackAnimator.setDuration(ANIM_IN_DURATION_MS); ObjectAnimator navBarAnimator = ObjectAnimator.ofFloat(this, mNavBarAlphaProperty, 0f); @@ -438,7 +465,9 @@ public class QuickStepController implements GestureHelper { mTrackAnimator.cancel(); } - ObjectAnimator trackAnimator = ObjectAnimator.ofFloat(this, mTrackAlphaProperty, 0f); + ObjectAnimator trackAnimator = ObjectAnimator.ofPropertyValuesHolder(this, + PropertyValuesHolder.ofFloat(mTrackAlphaProperty, 0f), + PropertyValuesHolder.ofFloat(mTrackScaleProperty, TRACK_SCALE)); trackAnimator.setInterpolator(ALPHA_OUT); trackAnimator.setDuration(ANIM_OUT_DURATION_MS); ObjectAnimator navBarAnimator = ObjectAnimator.ofFloat(this, mNavBarAlphaProperty, 1f);