From b13c46e8b78272c4398068eed41f49ee4d403bcc Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Mon, 9 Jun 2014 18:33:08 -0700 Subject: [PATCH] Updating Recents to make the cards slightly more visible. Change-Id: I876d39f4aac4007a3fe0c509ccb7db130f27a737 --- .../recents_lower_gradient.9.png | Bin 0 -> 219 bytes .../recents_nav_bar_background.9.png | Bin 1054 -> 0 bytes .../recents_lower_gradient.9.png | Bin 0 -> 193 bytes .../recents_nav_bar_background.9.png | Bin 1050 -> 0 bytes .../recents_lower_gradient.9.png | Bin 0 -> 242 bytes .../recents_nav_bar_background.9.png | Bin 985 -> 0 bytes .../recents_lower_gradient.9.png | Bin 0 -> 1123 bytes .../recents_nav_bar_background.9.png | Bin 1070 -> 0 bytes .../res/layout/recents_nav_bar_scrim.xml | 2 +- .../android/systemui/recents/Constants.java | 2 +- .../systemui/recents/RecentsActivity.java | 43 +++++++++++++----- .../systemui/recents/views/TaskStackView.java | 12 ++++- .../systemui/recents/views/TaskView.java | 8 ++-- .../recents/views/TaskViewTransform.java | 2 + 14 files changed, 48 insertions(+), 21 deletions(-) create mode 100644 packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png delete mode 100644 packages/SystemUI/res/drawable-hdpi/recents_nav_bar_background.9.png create mode 100644 packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png delete mode 100644 packages/SystemUI/res/drawable-mdpi/recents_nav_bar_background.9.png create mode 100644 packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png delete mode 100644 packages/SystemUI/res/drawable-xhdpi/recents_nav_bar_background.9.png create mode 100644 packages/SystemUI/res/drawable-xxhdpi/recents_lower_gradient.9.png delete mode 100644 packages/SystemUI/res/drawable-xxhdpi/recents_nav_bar_background.9.png diff --git a/packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png b/packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d4fdbf388a76937152124c51fe245f9a8127724f GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^>_A+`!3HE*bUL?#sA4D25Dp-y;YjHK@;M7UB8wRq zxI00Z(fs7;wLrmIPZ!4!kIuK#FLE^~@VNG0{r`WHZHs`ZyU($-t;hRz&y~~=?OSzc z^%n+*SSyBxw=#vgTR*!Ntn=;I;Je*<)r7m(RvI7L=4kjZaLta48o%l_w=&xWw`Dzl z_4!;$z}(_>5!NMAs&jK$eA0i{Z&F;?VSLc@g|@-jr?=#~>;tUT+}Oe^&B`l*4q@bP0l+XkKA)8Ok literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-hdpi/recents_nav_bar_background.9.png b/packages/SystemUI/res/drawable-hdpi/recents_nav_bar_background.9.png deleted file mode 100644 index 6cd1176c5fdca1dfb583d67e9b271d3b1cb6d9bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1054 zcmbVLOK8+U7!E2@7ONnrC?@ntST@P7UD&NkO(D*wh5?u)-q`j%jsYHKxR0p<2GBY zRj;Ww^&~67NU;}iwjj*R#(`yb2?K4i?E0Gc<<%PzxQ-@X&eu^rFi6LpTMxQ{YSkBjK|=!a5=z^sfI%TA z;T%$O$~4Fzj3CZHB&RV_^RkLC7(F8Q7CK96!>o*a@slQY7zif)!(|$BHwqTOT4&8vc)CY-0t4&v#CUT|25WJvX-!be*qeStP!Pp8Q zmJsy3B(4EEVh!>~#;)k7*$)V8kch5^Hm}Fh)R@e3x3{AN$knJ9LzfrDS~01;>Jgt+ zO-nAr!frjy#By`t^QwgaD1{qe}T@?H~@*&sxpR7SH1}5$CSG$a_cn>Dqo#y9H1|O_i)hspR&5e6+Qv#SU9{=2y;gO?j6FRzn;`D=ask`WNlx|)*a9jL% z_FeJ4^r%)-H#7S7Q|Wd8*r$hgf|Pwze{p!rxWDg^@Z|aN?_0lKeoZE}TAnwb=~r+3 E2A-uzT>t<8 diff --git a/packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png b/packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc1a3bffd57a9acdb3cf9edef3767970cde8ecb GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^tU&C~!3HFi*YLjwQY^(zo*^7SP{WbZ0pxQQctjR6 zFmQK*Fr)d&(`$i($(}BbAr`$?r{3l|puppN`PIMwlfNcTiPaE#p`_FAKDi5LZ7)~jO6j}s9R6GnRsE2N5X1@~}>u$1Z7n)kO3+|=hY%=YJHkp{rx@j*K z1x4sVZ~X!4(Ldm!idd-NL2vfz#hX_TLY?exs)tg+Kr%CL-sgEg=6#+nE#8`(xI7_A z(qv=aY>IVUyxQ3_;@eyKb|{uhyw>K+Y?b#(NTrIyIutZKvPPSfIGgtl=&S&B-Bz2o ztp&|yo*(^Gf`zQWpj~%mUt@_<(p`@{@oFmU1Px;#v(Z7l(Vg%lJNl(A6}gJNF6 zd8Fpm8IVO7L7auCl)*?Vlr)6F=#fRV&{@@*W_=V(oOHR%d7weq@As8{PGR91#Hy-7 zl!e)BMtEeRO`nrE<44megGnPhbOY`(A0&*V!+KnoMW(|Nyuh-KiT!BQDA6()lK^4` zLC;I-8hA&%N&lpAqIcBV3@B{Ui1k8S+{fy43KqRPJy7B(ve9mbuDBGkVKTetQJ*(V zT^4^7$8|KMmJ!CKJSt^Tv5c{bYDT4ui$#=2IisFSIZnc=xq?|St7;9GO^jPAVerr3rbapK!Fjq8fIBW(FptY(Cia2B>0+ejy1smnNvx-0<3azVksBDU)% zmgItl^_nzv?^CB9G7k(othpy-@bAipSm%Gb21PP38IQllB{hi|Ot#0vFAm4@p}x>e zD8%7iC$bRMe8a4?;=|6*qocX;bHAQ^3HBdc1&^MOP3&HLCQX)iZf?&QD^urRe%$^3 wV#fsw?>~|K1M=>GylOqZGBpMfxE5{;!P{Riy#4TbFQ2HjQCl=$SMNUj4Jx-r*8l(j diff --git a/packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png b/packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f38de93264d3112d02d8d13408068c364045ade3 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^oIpI6gAGWgr3JYHDVAa<&kznEsNqQI04XT&h%9Dc z;O+!rM)Q-W*8&Bnc)B=-M6|x0ageXUfWz7P>;L*nxt`AHhCMA?+0OYknnz4Cjk##p zXC}^9BglDMz+bjftR jpQ-P?%B^SAUsN~fX1f^l?a@J?`xrc3{an^LB{Ts5Cj3{| literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-xhdpi/recents_nav_bar_background.9.png b/packages/SystemUI/res/drawable-xhdpi/recents_nav_bar_background.9.png deleted file mode 100644 index 8d56a1d41b4c35d2cf4cd736bb74fcb13bbeccaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 985 zcmaJ=O=#3W6i!_cDHc2kwjN|iMG)M~B<*%hXe`}i*Df~8vR&*RJUE+7yJ4G5oJ`%c z7ex<6PkIqA9twI?@T{Pq6p9C-7qQ;G_9S=^>SWv9dTuV8#H4@WR=8DEGji;d^!(s$;%IcJ^^r~2GQBLC) zjexa~Q&iw!*AG)m7vVTYIgB|DT~fA9S#T)6?-^DOP2@F8FRJ;Xsum~oe5p_<=u^T_ zvhsSNhqbA@8jz6pu-*}Nb|5w#h9DA=ZNmIJ#49lxfNs);KUj+pGDyn-)*Gzl%0Mg> zVqn_ZzgpchiTO#7{lOKN{^*lX%sUf=4|6}zv7rh%^ZC>}?a|NbS7~c=@0hI5TRWSXFZjjt^QGPG>c+==HF|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$?WjPCpA0iGtZC%$&1=en|gdrI->|l&t`(OpySKEgxoE8rn zqw%5_t{#+d@DI=sy>ikRPo6!Rm>5mC;p={&2ZD)B+V`WM&-cgY`~5yzn7=+Ubbg5A zxRKJVQDJL>y}M@y*tc=@*EUMN=CWDryzm=r2v$Z2&$5-Ld16;fq4t;Wwl}yyS~^-6B?BIDge!9Q*5S16088E zC<=fnkV+*PA{lOa)Qpl|IMK6U;Lr*jpE|_jV~b{;Y*0;Lk#Q# z^Z^nfaNRhsHaesg{3ncK(P4Gd$Do2kvJqIU9?KIwGSlv4M=_8^quvM{RupsHAl8P9 zJz6p}f&CF}$7T}cAVP8m$|;!5A*8^9K9fV)EX=^PUQG9F9LLoqn3hv|wt(aULWQ&< z7xVeNl2r<*sLM*e$1QmwH9ZUW{5s5Umn)sfRrLUylmt~m)_WbW&>)nA4dV0qq9h`| zY+8;N-^2y#}F1_!+IA*?>8=h?q?)E<(zL|S6 zJ^i3B^H~QtK|Zv`w9ESG?a|erJADVw(des(^|O25#-pY5un6GCeeTW6+XG*VgVU`( YZgp>TXZ+Ns3-JV(3iHP6{GI#10k`c*jQ{`u diff --git a/packages/SystemUI/res/layout/recents_nav_bar_scrim.xml b/packages/SystemUI/res/layout/recents_nav_bar_scrim.xml index 463fee81f8b4b..4245d49ad8573 100644 --- a/packages/SystemUI/res/layout/recents_nav_bar_scrim.xml +++ b/packages/SystemUI/res/layout/recents_nav_bar_scrim.xml @@ -20,4 +20,4 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal|bottom" android:scaleType="fitXY" - android:src="@drawable/recents_nav_bar_background" /> \ No newline at end of file + android:src="@drawable/recents_lower_gradient" /> \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/recents/Constants.java b/packages/SystemUI/src/com/android/systemui/recents/Constants.java index 76e88a57ff425..147ff62bac7a2 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/Constants.java +++ b/packages/SystemUI/src/com/android/systemui/recents/Constants.java @@ -106,7 +106,7 @@ public class Constants { // The height of the peek space relative to the stack height public static final float StackPeekHeightPct = 0.1f; // The min scale of the last card in the peek area - public static final float StackPeekMinScale = 0.9f; + public static final float StackPeekMinScale = 0.8f; // The number of cards we see in the peek space public static final int StackPeekNumCards = 3; } diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index 8680786a470d7..96344d5d8e290 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -41,6 +41,8 @@ import com.android.systemui.recents.model.SpaceNode; import com.android.systemui.recents.model.TaskStack; import com.android.systemui.recents.views.RecentsView; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Set; @@ -79,6 +81,19 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView boolean mVisible; boolean mTaskLaunched; + private static Method sPropertyMethod; + static { + try { + Class c = Class.forName("android.view.GLES20Canvas"); + sPropertyMethod = c.getDeclaredMethod("setProperty", String.class, String.class); + if (!sPropertyMethod.isAccessible()) sPropertyMethod.setAccessible(true); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + } + // Broadcast receiver to handle messages from our RecentsService BroadcastReceiver mServiceBroadcastReceiver = new BroadcastReceiver() { @Override @@ -139,21 +154,12 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView // Add the default no-recents layout if (stacks.size() == 1 && stacks.get(0).getTaskCount() == 0) { mEmptyView.setVisibility(View.VISIBLE); - - // Dim the background even more - WindowManager.LayoutParams wlp = getWindow().getAttributes(); - wlp.dimAmount = Constants.Values.Window.DarkBackgroundDim; - getWindow().setAttributes(wlp); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); } else { mEmptyView.setVisibility(View.GONE); - - // Un-dim the background - WindowManager.LayoutParams wlp = getWindow().getAttributes(); - wlp.dimAmount = 0f; - getWindow().setAttributes(wlp); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); } + + // Dim the background + mRecentsView.setBackgroundColor(0x80000000); } /** Attempts to allocate and bind the search bar app widget */ @@ -277,6 +283,9 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView LayoutInflater inflater = LayoutInflater.from(this); mEmptyView = inflater.inflate(R.layout.recents_empty, mContainerView, false); mNavBarScrimView = inflater.inflate(R.layout.recents_nav_bar_scrim, mContainerView, false); + mNavBarScrimView.setLayoutParams(new FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM)); mContainerView = new FrameLayout(this); mContainerView.addView(mRecentsView); @@ -296,6 +305,16 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView if (savedInstanceState != null) { onConfigurationChange(); } + + // XXX: Update the shadows + try { + sPropertyMethod.invoke(null, "ambientShadowStrength", String.valueOf(35f)); + sPropertyMethod.invoke(null, "ambientRatio", String.valueOf(0.5f)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } } void onConfigurationChange() { diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java index 5830e37edca84..8d9f8beed32de 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java @@ -156,10 +156,12 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal float boundedT = Math.max(t, -(numPeekCards + 1)); // Set the scale relative to its position + int numFrontScaledCards = 3; float minScale = Constants.Values.TaskStackView.StackPeekMinScale; float scaleRange = 1f - minScale; - float scaleInc = scaleRange / numPeekCards; - float scale = Math.max(minScale, Math.min(1f, 1f + (boundedT * scaleInc))); + float scaleInc = scaleRange / (numPeekCards + numFrontScaledCards); + float scale = Math.max(minScale, Math.min(1f, minScale + + ((boundedT + (numPeekCards + 1)) * scaleInc))); float scaleYOffset = ((1f - scale) * mTaskRect.height()) / 2; transform.scale = scale; @@ -171,6 +173,12 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal transform.translationY = (int) (boundedT * overlapHeight - scaleYOffset); } + // Set the z translation + RecentsConfiguration config = RecentsConfiguration.getInstance(); + int minZ = config.taskViewTranslationZMinPx; + int incZ = config.taskViewTranslationZIncrementPx; + transform.translationZ = (int) Math.max(minZ, minZ + ((boundedT + numPeekCards) * incZ)); + // Set the alphas transform.dismissAlpha = Math.max(-1f, Math.min(0f, t + 1)) + 1f; diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java index 632c816edad52..5df5e4dd901cb 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java @@ -142,8 +142,6 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On void updateViewPropertiesToTaskTransform(TaskViewTransform animateFromTransform, TaskViewTransform toTransform, int duration) { RecentsConfiguration config = RecentsConfiguration.getInstance(); - int minZ = config.taskViewTranslationZMinPx; - int incZ = config.taskViewTranslationZIncrementPx; // Update the bar view mBarView.updateViewPropertiesToTaskTransform(animateFromTransform, toTransform, duration); @@ -153,14 +151,14 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On if (animateFromTransform != null) { setTranslationY(animateFromTransform.translationY); if (Constants.DebugFlags.App.EnableShadows) { - setTranslationZ(Math.max(minZ, minZ + (animateFromTransform.t * incZ))); + setTranslationZ(animateFromTransform.translationZ); } setScaleX(animateFromTransform.scale); setScaleY(animateFromTransform.scale); setAlpha(animateFromTransform.alpha); } if (Constants.DebugFlags.App.EnableShadows) { - animate().translationZ(Math.max(minZ, minZ + (toTransform.t * incZ))); + animate().translationZ(toTransform.translationZ); } animate().translationY(toTransform.translationY) .scaleX(toTransform.scale) @@ -179,7 +177,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On } else { setTranslationY(toTransform.translationY); if (Constants.DebugFlags.App.EnableShadows) { - setTranslationZ(Math.max(minZ, minZ + (toTransform.t * incZ))); + setTranslationZ(toTransform.translationZ); } setScaleX(toTransform.scale); setScaleY(toTransform.scale); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java index e6391a8cd1b81..3c3ebd7ad193a 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java @@ -22,6 +22,7 @@ import android.graphics.Rect; /* The transform state for a task view */ public class TaskViewTransform { public int translationY = 0; + public int translationZ = 0; public float scale = 1f; public float alpha = 1f; public float dismissAlpha = 1f; @@ -35,6 +36,7 @@ public class TaskViewTransform { public TaskViewTransform(TaskViewTransform o) { translationY = o.translationY; + translationZ = o.translationZ; scale = o.scale; alpha = o.alpha; dismissAlpha = o.dismissAlpha;