From 06795630f62e1e7ad89825db23d7656f8dcd6c5a Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Tue, 17 Jun 2014 15:53:44 -0700 Subject: [PATCH] Adding status bar scrim, reducing extra work updating configuration values. - Making the app icon larger for tapping --- .../recents_lower_gradient.9.png | Bin 219 -> 203 bytes .../recents_status_gradient.9.png | Bin 0 -> 169 bytes .../recents_lower_gradient.9.png | Bin 193 -> 181 bytes .../recents_status_gradient.9.png | Bin 0 -> 163 bytes .../recents_lower_gradient.9.png | Bin 242 -> 220 bytes .../recents_status_gradient.9.png | Bin 0 -> 186 bytes .../recents_lower_gradient.9.png | Bin 1123 -> 265 bytes .../recents_status_gradient.9.png | Bin 0 -> 223 bytes .../res/layout/recents_status_bar_scrim.xml | 23 +++++++++ .../SystemUI/res/layout/recents_task_view.xml | 5 +- packages/SystemUI/res/values/dimens.xml | 2 +- .../systemui/recents/RecentsActivity.java | 34 +++++++++---- .../recents/RecentsConfiguration.java | 47 +++++++++++------- 13 files changed, 81 insertions(+), 30 deletions(-) create mode 100644 packages/SystemUI/res/drawable-hdpi/recents_status_gradient.9.png create mode 100644 packages/SystemUI/res/drawable-mdpi/recents_status_gradient.9.png create mode 100644 packages/SystemUI/res/drawable-xhdpi/recents_status_gradient.9.png create mode 100644 packages/SystemUI/res/drawable-xxhdpi/recents_status_gradient.9.png create mode 100644 packages/SystemUI/res/layout/recents_status_bar_scrim.xml diff --git a/packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png b/packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png index d4fdbf388a76937152124c51fe245f9a8127724f..17100f773a1624ffedc6f74b00e5953fae56ad9f 100644 GIT binary patch delta 173 zcmcc3c$!hMGr-TCmrII^fq{Y7)59eQNOJ&jIR_h%w5w*EKT%PmKG)O5F~pM=S=qoVI<=P&KKTta+6GjGCc{X=>00000NkvXXu0mjfrOHa} diff --git a/packages/SystemUI/res/drawable-hdpi/recents_status_gradient.9.png b/packages/SystemUI/res/drawable-hdpi/recents_status_gradient.9.png new file mode 100644 index 0000000000000000000000000000000000000000..e969d4c267175919ed5c78c9e18a709017086955 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tx!3HG7bfT<*6icy_X9x!n)NrJ90QsB+9+AZi z4BVX{%xHe{^je^xx2KC^h(&L5N<+hco*RtH+##3v+ME9Cu=pfM1abZ2Wz}YDR(|=Q zJ5YN?>Y;=UNfjCj_6uedcusi3CKct#F6`DJ+I(i1lAt*5NHg1!RQK&u!$UHx3vIVCg!0DojO Ab^rhX delta 162 zcmV;T0A2sJ0l@(wiBL{Q4GJ0x0000DNk~Le000050000_2nGNE03)mq?~x%Wcw4nJ zaCd?*qxs3xYk`8Uo-U3d7QM+S4GsT!Ry0gx)yimB`#7KV)Q@(xgA9`$%)1&F^c~dv zSRU|dL3?1x6a`zufIxO#)fpF9U#x8Iax;8%;UEVCQ;*t=)$?=$fCe&ny85}Sb4q9e E0Lxr42mk;8 literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png b/packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png index f38de93264d3112d02d8d13408068c364045ade3..09606f629b67e653d2ac331ebf75709b23b33ede 100644 GIT binary patch delta 190 zcmeywc!yE3Gr-TCmrII^fq{Y7)59eQNQ2n(IM{$B_tDueCMs&w*Lk`)hD5Z!ow};zZ*_% zj9&SuGhx{?Y4csvW?FR_DIfjcWvVWGaO=GtJ4&?zEPpkeGPGGCSoXTu<}f!%!e>>h ot<&p}=*=RvBJl}7Jc}4b?z*yB36`yU3v?2Lr>mdKI;Vst01)U(ng9R* delta 212 zcmV;_04x980rCMMiBL{Q4GJ0x0000DNk~Le000090001;2nGNE0A^-VMUf#Wf0Ri? zK~z|U?U=z1fG`L{JN5s6c^-_3mobclwFb^jfj3x|HC)j#jy4kjK;I?;0KoCI9EHoN zM3kaB;Gc7nEj+n9MyF&>aiT@UO|d*DQ=DA*qM8^Hd@uaf6zpM6aWKn?GF=sJZ;O0) zjGSCfjNK(Kf-I-xZAs=NJL8NZD%p!QZVDLRD&?e?F8O8eN_RV$f6*r}iw4nB_Ts?+ O0000@2U=@Sc;uILpXq-h9ji|$mcBZh%9Dc z;O+!rM)Q-W*8&A&JY5_^JUZV_G2~-V;9x%ZLGS;6t zWwhp$URZFTZ^uOe9@WR3Ic1mYPgU$NOr5ekp6!3l*@bI(Q;%H!o^O(KCNtGwN)LOs ch~Hxdi{G{)pWd%f0NTUg>FVdQ&MBb@0K^?TzW@LL literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-xxhdpi/recents_lower_gradient.9.png b/packages/SystemUI/res/drawable-xxhdpi/recents_lower_gradient.9.png index 8194605e1646a5c04c982e5ba1face65da511c81..427cad9f63269ec2d16235be481e6edd2a687d96 100644 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^d_eq$gAGW!9GM;gq*#ibJVQ8upoSx*1IXtr@Q5sC zVBqcqVMgu!1LD6UcB|q?ekqiq9Z}(IDwa#7&P7c8M#=6DF?UGgxt40isZ}$1zZn?^u6t w4xd|(gyBB!FbO`lcAyflv|N6|FYk+tk9FB@eE3o20(3Tmr>mdKI;Vst0M@%#r2qf` literal 1123 zcmbVLPe>F|7#~wA#idJ^Jk&4}Dz-cGW_M?ICpTMnMqOx4)`^y)*m36RPCE0ZnP)rN zMI`9osi251h14l9%0u)Af-Yf1;h`cU3Zk$Kq)X+=-l%IG#6!c(yno;C_x--_ec##c zu8u%WT@6K1flQ~ABV#T3zHQz}{+Ek4JTh#1~Gqj;6nS;?Rm$lQd zXmpM^uxF%8(MATegwC|?p<6tW5SS3Fv}X=luIMG1C0>!t{cV<^mrU?Ll35m&&vw&k zu#4t7z_T2Ag&>HCQ9 z%a%%|P$?WjPCpA0iG`fW~ literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/layout/recents_status_bar_scrim.xml b/packages/SystemUI/res/layout/recents_status_bar_scrim.xml new file mode 100644 index 0000000000000..24928d0c73115 --- /dev/null +++ b/packages/SystemUI/res/layout/recents_status_bar_scrim.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/packages/SystemUI/res/layout/recents_task_view.xml b/packages/SystemUI/res/layout/recents_task_view.xml index 23f2796ccbff8..e4d7b0ce04972 100644 --- a/packages/SystemUI/res/layout/recents_task_view.xml +++ b/packages/SystemUI/res/layout/recents_task_view.xml @@ -32,8 +32,9 @@ android:id="@+id/application_icon" android:layout_width="@dimen/recents_task_view_application_icon_size" android:layout_height="@dimen/recents_task_view_application_icon_size" - android:layout_marginStart="16dp" - android:layout_gravity="center_vertical|start" /> + android:layout_marginStart="8dp" + android:layout_gravity="center_vertical|start" + android:padding="8dp" /> 15dip - 32dp + 48dp 60dp diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index dce8f57d87044..ca66ea149f299 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -72,6 +72,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView FrameLayout mContainerView; RecentsView mRecentsView; View mEmptyView; + View mStatusBarScrimView; View mNavBarScrimView; FullScreenTransitionView mFullScreenshotView; @@ -180,13 +181,11 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView AlternateRecentsComponent.EXTRA_TRIGGERED_FROM_ALT_TAB, false); mConfig.launchedWithNoRecentTasks = !root.hasTasks(); - if (mConfig.shouldAnimateNavBarScrim()) { - // Hide the scrim if we animate into Recents with window transitions - mNavBarScrimView.setVisibility(View.INVISIBLE); - } else { - // Show the scrim if we animate into Recents without window transitions - mNavBarScrimView.setVisibility(View.VISIBLE); - } + // Show the scrim if we animate into Recents without window transitions + mNavBarScrimView.setVisibility(mConfig.hasNavBarScrim() && + !mConfig.shouldAnimateNavBarScrim() ? View.VISIBLE : View.INVISIBLE); + mStatusBarScrimView.setVisibility(mConfig.hasStatusBarScrim() && + !mConfig.shouldAnimateStatusBarScrim() ? View.VISIBLE : View.INVISIBLE); // Add the default no-recents layout if (mConfig.launchedWithNoRecentTasks) { @@ -325,6 +324,10 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView // Create the empty view LayoutInflater inflater = LayoutInflater.from(this); mEmptyView = inflater.inflate(R.layout.recents_empty, mContainerView, false); + mStatusBarScrimView = inflater.inflate(R.layout.recents_status_bar_scrim, mContainerView, false); + mStatusBarScrimView.setLayoutParams(new FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.TOP)); mNavBarScrimView = inflater.inflate(R.layout.recents_nav_bar_scrim, mContainerView, false); mNavBarScrimView.setLayoutParams(new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -336,6 +339,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView } mContainerView = new FrameLayout(this); + mContainerView.addView(mStatusBarScrimView); mContainerView.addView(mRecentsView); mContainerView.addView(mEmptyView); if (Constants.DebugFlags.App.EnableScreenshotAppTransition) { @@ -563,8 +567,18 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView } public void onEnterAnimationTriggered() { - // Fade in the scrim - if (mConfig.shouldAnimateNavBarScrim() && mConfig.hasNavBarScrim()) { + // Fade in the scrims + if (mConfig.hasStatusBarScrim() && mConfig.shouldAnimateStatusBarScrim()) { + mStatusBarScrimView.setVisibility(View.VISIBLE); + mStatusBarScrimView.setTranslationY(-mStatusBarScrimView.getMeasuredHeight()); + mStatusBarScrimView.animate() + .translationY(0) + .setStartDelay(mConfig.taskBarEnterAnimDelay) + .setDuration(mConfig.navBarScrimEnterDuration) + .setInterpolator(mConfig.quintOutInterpolator) + .start(); + } + if (mConfig.hasNavBarScrim() && mConfig.shouldAnimateNavBarScrim()) { mNavBarScrimView.setVisibility(View.VISIBLE); mNavBarScrimView.setTranslationY(mNavBarScrimView.getMeasuredHeight()); mNavBarScrimView.animate() @@ -579,7 +593,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView @Override public void onExitAnimationTriggered() { // Fade out the scrim - if (mConfig.shouldAnimateNavBarScrim() && mConfig.hasNavBarScrim()) { + if (mConfig.hasNavBarScrim() && mConfig.shouldAnimateNavBarScrim()) { mNavBarScrimView.animate() .translationY(mNavBarScrimView.getMeasuredHeight()) .setStartDelay(0) diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java index c1a8ee6cc0dc4..acf4a18f921ab 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java @@ -106,12 +106,30 @@ public class RecentsConfiguration { public boolean developerOptionsEnabled; /** Private constructor */ - private RecentsConfiguration() {} + private RecentsConfiguration(Context context) { + // Properties that don't have to be reloaded with each configuration change can be loaded + // here. + + // Interpolators + fastOutSlowInInterpolator = AnimationUtils.loadInterpolator(context, + com.android.internal.R.interpolator.fast_out_slow_in); + fastOutLinearInInterpolator = AnimationUtils.loadInterpolator(context, + com.android.internal.R.interpolator.fast_out_linear_in); + linearOutSlowInInterpolator = AnimationUtils.loadInterpolator(context, + com.android.internal.R.interpolator.linear_out_slow_in); + quintOutInterpolator = AnimationUtils.loadInterpolator(context, + com.android.internal.R.interpolator.decelerate_quint); + + // Check if the developer options are enabled + ContentResolver cr = context.getContentResolver(); + developerOptionsEnabled = Settings.Global.getInt(cr, + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; + } /** Updates the configuration to the current context */ public static RecentsConfiguration reinitialize(Context context) { if (sInstance == null) { - sInstance = new RecentsConfiguration(); + sInstance = new RecentsConfiguration(context); } sInstance.update(context); return sInstance; @@ -132,16 +150,6 @@ public class RecentsConfiguration { animationPxMovementPerSecond = res.getDimensionPixelSize(R.dimen.recents_animation_movement_in_dps_per_second); - // Interpolators - fastOutSlowInInterpolator = AnimationUtils.loadInterpolator(context, - com.android.internal.R.interpolator.fast_out_slow_in); - fastOutLinearInInterpolator = AnimationUtils.loadInterpolator(context, - com.android.internal.R.interpolator.fast_out_linear_in); - linearOutSlowInInterpolator = AnimationUtils.loadInterpolator(context, - com.android.internal.R.interpolator.linear_out_slow_in); - quintOutInterpolator = AnimationUtils.loadInterpolator(context, - com.android.internal.R.interpolator.decelerate_quint); - // Filtering filteringCurrentViewsMinAnimDuration = res.getInteger(R.integer.recents_filter_animate_current_views_min_duration); @@ -217,11 +225,6 @@ public class RecentsConfiguration { navBarScrimEnterDuration = res.getInteger(R.integer.recents_nav_bar_scrim_enter_duration); - // Check if the developer options are enabled - ContentResolver cr = context.getContentResolver(); - developerOptionsEnabled = Settings.Global.getInt(cr, - Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; - if (Console.Enabled) { Console.log(Constants.Log.UI.MeasureAndLayout, "[RecentsConfiguration|orientation]", isLandscape ? "Landscape" : "Portrait", @@ -257,6 +260,16 @@ public class RecentsConfiguration { return searchBarAppWidgetId >= 0; } + /** Returns whether the status bar scrim should be animated when shown for the first time. */ + public boolean shouldAnimateStatusBarScrim() { + return launchedFromHome; + } + + /** Returns whether the status bar scrim should be visible. */ + public boolean hasStatusBarScrim() { + return !launchedWithNoRecentTasks; + } + /** Returns whether the nav bar scrim should be animated when shown for the first time. */ public boolean shouldAnimateNavBarScrim() { return true;