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 d4fdbf388a769..17100f773a162 100644 Binary files a/packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png and b/packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png differ 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 0000000000000..e969d4c267175 Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/recents_status_gradient.9.png differ diff --git a/packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png b/packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png index 9fc1a3bffd57a..b53bd8f92a00a 100644 Binary files a/packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png and b/packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png differ diff --git a/packages/SystemUI/res/drawable-mdpi/recents_status_gradient.9.png b/packages/SystemUI/res/drawable-mdpi/recents_status_gradient.9.png new file mode 100644 index 0000000000000..657f710ac8d6d Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/recents_status_gradient.9.png differ 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 f38de93264d31..09606f629b67e 100644 Binary files a/packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png and b/packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png differ diff --git a/packages/SystemUI/res/drawable-xhdpi/recents_status_gradient.9.png b/packages/SystemUI/res/drawable-xhdpi/recents_status_gradient.9.png new file mode 100644 index 0000000000000..a444c551d430f Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/recents_status_gradient.9.png differ 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 8194605e1646a..427cad9f63269 100644 Binary files a/packages/SystemUI/res/drawable-xxhdpi/recents_lower_gradient.9.png and b/packages/SystemUI/res/drawable-xxhdpi/recents_lower_gradient.9.png differ diff --git a/packages/SystemUI/res/drawable-xxhdpi/recents_status_gradient.9.png b/packages/SystemUI/res/drawable-xxhdpi/recents_status_gradient.9.png new file mode 100644 index 0000000000000..29cf44bf381f3 Binary files /dev/null and b/packages/SystemUI/res/drawable-xxhdpi/recents_status_gradient.9.png differ 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 75ff2b9f73e3a..88ff726c95512 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;