From 2915b9d14876c8e63ca82415807bcfb602ebad43 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Mon, 28 Jul 2014 11:01:57 -0700 Subject: [PATCH] Updating lock-to-app look. - Adding seek bars for tweaking values when in debug mode Change-Id: I92ae7b431ee170f5d8b31f34349d51a6b7f9ddef --- .../res/drawable-hdpi/btn_fab_recents.png | Bin 0 -> 4248 bytes .../res/drawable-mdpi/btn_fab_recents.png | Bin 0 -> 2715 bytes .../res/drawable-xhdpi/btn_fab_recents.png | Bin 0 -> 5938 bytes .../res/drawable-xxhdpi/btn_fab_recents.png | Bin 0 -> 9255 bytes .../res/drawable/recents_dismiss_dark.xml | 39 +++++------ .../res/drawable/recents_dismiss_light.xml | 40 +++++------ .../res/drawable/recents_lock_to_app_pin.xml | 25 +++++++ .../recents_lock_to_task_button_bg.xml | 4 +- packages/SystemUI/res/layout/recents.xml | 6 +- ..._overlay.xml => recents_debug_overlay.xml} | 30 +++++--- .../SystemUI/res/layout/recents_task_view.xml | 36 +++++----- packages/SystemUI/res/values/dimens.xml | 2 +- .../systemui/recents/RecentsActivity.java | 28 +++++--- .../recents/RecentsConfiguration.java | 1 - .../recents/model/RecentsTaskLoader.java | 3 - .../systemui/recents/model/TaskStack.java | 1 - .../recents/views/DebugOverlayView.java | 66 ++++++++++++++++-- .../systemui/recents/views/TaskBarView.java | 3 +- .../systemui/recents/views/TaskStackView.java | 1 - .../systemui/recents/views/TaskView.java | 64 +++++++++++++---- 20 files changed, 232 insertions(+), 117 deletions(-) create mode 100644 packages/SystemUI/res/drawable-hdpi/btn_fab_recents.png create mode 100644 packages/SystemUI/res/drawable-mdpi/btn_fab_recents.png create mode 100644 packages/SystemUI/res/drawable-xhdpi/btn_fab_recents.png create mode 100644 packages/SystemUI/res/drawable-xxhdpi/btn_fab_recents.png create mode 100644 packages/SystemUI/res/drawable/recents_lock_to_app_pin.xml rename packages/SystemUI/res/layout/{recents_fullscreen_overlay.xml => recents_debug_overlay.xml} (58%) diff --git a/packages/SystemUI/res/drawable-hdpi/btn_fab_recents.png b/packages/SystemUI/res/drawable-hdpi/btn_fab_recents.png new file mode 100644 index 0000000000000000000000000000000000000000..b95fde57610fbb01adea40a74cf0ce7ba1e8fd45 GIT binary patch literal 4248 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 L+9PWams0)(!-5N4 literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-xhdpi/btn_fab_recents.png b/packages/SystemUI/res/drawable-xhdpi/btn_fab_recents.png new file mode 100644 index 0000000000000000000000000000000000000000..4cdd0aaea1eeb17c68a684fed74c25d8eecd1644 GIT binary patch literal 5938 zcmZ8_XEfa3_w{EAGx}&VqL&dO#2`o*j9!E2Bw8>!qeKk`BZwqQw1ntVgd|Ex(S>A! z=v|Z`Y7lL7f8XD`=UI21yYD%B?R)oqbJtxb(b!O%ftHgN000JE9SxInB>Wd}>hrl{ zW=H=VpsuPnQ~{teneNz;>O2Ppm}sj3Z+~(xpC|lIIwm&&AnYOl5J>=VcwQnd0l-}h z0IWCwfI>C^pa{92Z(`30>O1<{8o=3qqoCpClk*ACuHB`+) z#{WJKfA3;`cfHBC>%-pEVxJMGn-}i`T5wE3B9uM#&7&>77cj6=29*~FZwGYCHY#;I+tBS|c^h?4;zxSQE#d{;UIk>xAD-z%g$?lWbOr0u zPrk1e@~5WPmNT^1CTa<{d0XGeRF|gMQOzu%vk=+7&HUfFal<{zYGvFUD2$-H4Dl{M zU-G(<%in1c)I_?Yr zKLbJk*?>0VfT~)T|_4VhuOa>$6!;HGz zKbQGFa-nz+VEe<8d`xlLpul*XLq}Y$6sYNR-$vs)Q00QWUxht^T{8VDDR=4``8DRm zXpKa8mfFd1O~yTvN) znPQF@-@>@B7I2F&J>T&Se(ov<<+qVu-F*;&Bb-kV^1G$^B|oeMM-sc%8?oIxrRb;n zXmTS*(?5h_n5fc5ul>?g@;o|L5R7_IEC9)VY0>`$EVH{07zyWHal{ND_97I ztfN-$ts;P;i$7oTC=q@Cdacw>kNSJLZZwVzxe#r>6|R?`A` z>KWyq+#PH9QMw)tX|s6o)#o7@4&|IWdsa*dyH26CJX>?5k2AK!pk)A~or_qZZHS`! zVr};osNa5wxua9xZfccT8d#SU$vYr1?ki)W#^VopimbJ{-Ou~J5DOz|(^1Tg_B!4L zy$;iK?d8T9hH2fw3g>>wB28Wf+nsz@e>JJf!b2y(^i(@uuf2|ew0TKr>Kd|GZs+1X zPwRdV-AVA67qhoEH7gO_0_0D7xHtVQU~s))`}t+g@tnl{32C7>Y!!=nXaV`QPud0z z38q(OhLW++7{phc49Io#*LEHsscdfXNW#NnLq=*=lG`LL@~CI zHAd_pqqy>rPd(F{ACWdmqlfsZ^gH`f!&$oZMwvFRT9O8TUjWllF!j~+569ErY8&72 zw4Sll1UmKU_pm8htRw$?B=m?3+5I`HRkZ0}hsGG8E}aY&w#AMle{)_9R|@JfNi){l zZ)T&pE^KkUG7hVh%@qAr85Pd&RZ+(FovJPL^l9c;{5Plmfd(4BN9Ng=3;iv}lxu!= zZq?MtxT#w^ET1k^mL0C5y`SbUI!5%}kdW!>vDu$VeV3DVw9ah#HWYY0Ju8I}H``ij z_T!-&Nx9eEQKZwuW_ytgK2Q{y+!pX)hAbb|!fHx>F{VWhZ|_7x)_dHooXN?wpdvvvV$x&B#68w?3AqF`bpkr`B3z#6=b#1>4r^)^2Nc_XI>)yJF^R zDq9B*yvK)hX*0fzkV)Hi;gdeook5h=%Y2PZS6+QBOc|@%GcKD{=_|68<(->hohxqq zP^M<#Nl9b&J#y{V@u?`={JQ@t`P;S8B3tv1QFpAvMH%9{(5Vr()~|dKp0VU@%O0Myt6@%A_S;KN zjUfdLDEOZDXRbAWc*F0)qh=e9TWPS03#%@YTy9aqke)HC3_qtKy1Ps+ZF__E&hENX zy82rd$U@JkAqnNcL4t@+ISb84^zpKk?`Y}0U^1j>XQqJw(ydY-Z?ln6c*fJ~ZjWjX zkV|jaHyG<2O`yaK+Q!VwxJXVI@7)12Q}?9H|$={ znz{GX&@Q|fy!VTIdc#L4i?Q3j=|(WEJ5J??f-ArD6=N-P>-V&}vvlt=>3FX` zcYY~;+QfG()i^a4qp~dV6)V#zv2Uf9h5vfM<#a*5J^OEv_mc1fh*hqOpYHIFBElE} z&R2mQd-dha)D^n1EYY0bv`&fgR918eR@j`X;Tv}#^wxFk%Y&|+jhGK5)a7sxZ%E;r z-j;C?xBsg%hH=qv+&GGE3^+KpU^?zMihS6j!FC}gA-#a9rmImQ)5L~Pe@;9*Q!0zO z;G{Z}DITFmVWQp?qb=k~y%@8ZI zL~nn6JEM0^*0HnDh7jU*9x&6?c)E{j*wZYYE~T6xMjizUq|BMDkWmZsS#RdI<;={t zwCXRlfqY(-nO)4!dSbs$Mm^Hk<$uSu{JZ}sa=&O~eP&lUx4{h|LDYBS0M2-O`?!=| zl&yDoW(&d#Vp_G5X?pu0Gt-iVg;bksnz5rdRfg$S2+Iw@LQjYe(GGgONB*0iCDz@m zP29vJ!eOxY2?7!rI`+UI;2nxB1*^%zchbNbIrj`TDEJZ4ZH04JbGJrFE`NG&p7PjQ>E~**+PIu8%INPMc%&=xCcFasA$VYGxr9N5`vgcSA`D%cd z;+IWM!Np}0*v)E{dI;pT+K-6~#HD5!gs=c#U?s|e4J8>J5SwvD!ZTP%BP~CjIrA5R zZ&XnPLE>UuZ_nA1Au?SnaoD7eFKbXL2kyGPp2G~?ztdv#TYa^A`kFYKck0>6ew|l9 zn|Et@{i2~UEe|Xcohx!6HMe_vSgZbNTSqkdK#%4Ibm>Bs=?e#3UvK`tamwl z>V5xI+R*U?JG`x?mVxmnovgD(9=@GOiRRGw8K-;LgYY$&|5EFmN%Zbyaiyd7&JTJf?|xAwh$NF2C_%9ctSy7|?A?q|H_UZdnkD;Ria{8hbh4Xc z=zp|h`^J$amc*|z5nYez(5fGUfRG(aINo_z7|q3h1Hl#d`^Y8&kDM!zB`Q~R(Q?nP zR6o+N(FONg3t7K07egz!$8?!FVvxT6%L!$?PQK7wZ-m8#*?v!Ir+;`;Dph=7AKF-< z8>CVFJ!{Kr(wf%Xa}E%F?!mHT7$EwXz6Nr;vzXbV-gj8AwTPJ@!FRz81}pkRYO(t# z){?BJ_3CMsq9-%inKYx#u=l_+v_a3RU{wRQI)f)TfPUF~raWdtIR9}I!&LJnN(X>I{izozE&%_y z;gy$e+3puVq#a2^HfcBBDd#T7$gZKEY^cr{KRHebdmSM(!(BABX{Im=y@DJInYkTP zuo6Lwd^%4zbZv$^_LWjEiip>!)~rQBGoCql%o^PoBXn&n|wi`|{)6*KZTw zlQq23j;dh{vR#pAGLN7f7wK-qUrx{>qls;jwX0xcU&su1u`)fAU>+vLNHr$yRy8Mq z5vR6Jf~K4~f=6@`$|zE9^@KekVR@RHGd9)O^0*pJsqVlQ&LEa{sLm~MCQosd{h1p; zyIR*}^;q1&+x6)eHp`gxfZhc0@wP^smCgrp0?3o<_ zPx%H1m^QY5Se{~g0<5gf#tvnZuesHQu@@d1--}o=z{rSk>^kCMxc&qc^e;|@j%e& zd=Ccn`64#F9r4x`)4O!p=sM)K-!{YD`f{-sMaCSQhjQxIiW?jvtA~cy1lVuYQkMp* zbMmRk)J$mPB>^5x=|pTb1`AEGH+iVzGWO80i(03o>S{YY)sn*dg^e)XGtHfQUh7JVMxp<^SpIsq*Kg4 zIy-Y6^SBN=R|L!JvKezKjwY+}>FgQWDLGsJLq5=`k4mq($Q2mz{3Y+nkNQA7atdxG zzK9L~lk#nyMDwvp)^}=%o;oFxJYhJUc_)X6nz{$67e!ObN2_F|Nl}~GDG&4>p?(5r zlbd8Gu=;+y|EilXr7K*?He{P&B28&E`eiO?H4u=#80=+78I*nQiov~Hich|_f zQ^y6LtPTBTI)V-+J{(?l7`o)@rN1{B;iyB@fD4FYLoPV%=^D|P*SUF=4A3N&-O7Fm z&5rP&ZRtd)!Jiy@^#nj~e>e^-XcX=Hg?%xEmP~HoZ74Gl`h6AG`bMnXE*bL$`}rNx z0i&<;df4q~UNZe#oO}cqJo+kY%ZX|EdX+f$c%J;bF?htrT>H|iPy-{9xT0!n7&$S$ zX63o-sn%~4vW%FPs+%>0ZaXLzlfcTVj~P~ z4fIXly?z~0^wO7De-){;UH0HnLU^=7V29NX{k#i#Kt<63!CJMM`=E1g^s)5U{!&c; zHin4UqNACzzhU6KmHte4*OW%U==HPg?{Hb+&&?&D>?hM@NWIBl0t|iYR%-fPrKHH_aPCNe=CxuTz(nLF zjUDg`l_k<#6{45|uRZR7d4(MIZt5_#DwS0JL%YZS1}V;}<|{1FlcEJ?Dhv?dl6Ng1 z1v4_*eMWL9v%EOLpf7npemL9)Er$Uh5vjOYfqN^OQ{fZU+X9<-z*$L4)Sjxkr@aVX zIpQfM`vsCXy4r5V2EymZ-eWHSY+9A*f)sL|vk-<94I$J3j@UQr5EeEM&bDO^*F+{2 zG5cBaGbagl*rm3tJ=od#PDMcA8Lt_8z4mToU8{k;4Lfq*H517~NRR%0IM&;rOstm+ z3V)QK*jW$_S;X53?q-lN?LY`{86zInp^9K}S}R-&$SgHOo&C16v)~ z2N_` zT1#sFXauwzdte(L_(o}+_EzZDmz7~nOk7YxAXS=Ywu>)ysI}OS^9wIam1ea%JEm=A zo5=RLi2VSzr17)eSC1~Gskz0uJ-v|_(#*D}V;?wiLq{qG?S}UUkp^1%)K9Ocz~Zo! z@*$S*n~IB%K8%!FWg3{fq(st;+y5A7!eKZ;Rc|LtYqTA=uh%_aS+uG=3_tPGOzHSc z!B>`K0HfOZVaI-OR5ek?ObCw>VF!{JJwCba)-EhBQ66qO%AIfqk!y1MU|%WUkos(TCut2ly|2f|Y6*(WKAe-ADmaxUcEx%5tKzHOT+ekW3AgPOqB zt;0eOLdHBPcLlvy-YuGD%%hcgbtV1q*RHe?Ii1DKS6l?}#6?2pWrs$GwIzC(tB~gL zbgsXiCMLbq{pc;6Km5h}o91+rOO+9K3V7!8es1ugNRyxZ9kJ^4AM&)|wOpj9HvRU0;r9xH+O3)_}I)fYUQzDm|{7&BGDGV<7 zMsFSw?U-gUDRh7{aOmBm%TO0pMz-IXWO_YS_0L+BwS*Z+jy|SI;N$xH^Ta-ArYY+0 zW&6Rcf$5~wnhSrccn+0BCy>Vmb>EcoFQ5o%NsUpR)un##k)~@%O>|=PtiUEajA-O5 z$G5Q#p$GxojI$1aB#eM45C%{n4(h7_KP&~ve5K^U)_W1i0hFm`Q2cq&O;NXG(gB34 zTAgD0Z}Z90<45W&)Z>4{Mi^V_KG?_x@KWxbstCt%5TK*n;pc5(;XqBRKxfB57X>GO zmvaE5F;Z70F!B=8vSw0O6=b9p{+B9XFn+q<3;rL0x39B1KJ@<=NGV9kpX<*Bv}u7x|p~)I*0m^UH_jwgKakr+i!vs!zfI_mm) zwsia+R)1^gT6Mo-86&a}aiyF9d~i9vy}Q;9jKcfX9X*mY63gX{A~i_N@8xSGpBP)M|E2lO6u*9T_R`esEHnRtRnEJ2={~9-QFTEHAFWW* zvTmMC+(oB0`T|85TWcVh+3EYRQJA_9pT4$ zROFB2C-?Lm!v^^FrQBXo0*Mb>%&9FY8%QPFJEaH_AifgmPJSMZ7hUNkUE0&nA&+A% z(6IpYFr?tS-tp|L_B~tpVyCCJ{8SQ;x6J48fXKfC;U}$0%4!lxcz(AYgXJ9V+7}b> zf5CgjL)pLGO8X@~-0M_z-d15)b$?2KE*yC-#St4AQ~O%UKm8_g^2}zKF!awXGnf3Q zIB5c_K8A0|QsVj4ah9lHxxZB-F}rF*iK4>-dn73opj2!Re}u3FEye?R>D&DXvAQcy z2-s)s=ftW1O|b9Ml7OG{PH4x|w_OZ0@lSbgT?0I{a=gWw1hNhkf9a(mZc<8#}LA(+^@>S6u(OO`NIjfLtU@v3&fw{5___ip {Y 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 literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable/recents_dismiss_dark.xml b/packages/SystemUI/res/drawable/recents_dismiss_dark.xml index 337c028b77c8b..ba09ebe2f88be 100644 --- a/packages/SystemUI/res/drawable/recents_dismiss_dark.xml +++ b/packages/SystemUI/res/drawable/recents_dismiss_dark.xml @@ -1,29 +1,24 @@ - - - + android:width="48.0dp" + android:height="48.0dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> - + android:fillColor="@color/recents_task_bar_dark_dismiss_color" + android:pathData="M38.000000,12.800000l-2.799999,-2.800000 -11.200001,11.200001 -11.200000,-11.200001 -2.800000,2.800000 11.200001,11.200000 -11.200001,11.200001 2.800000,2.799999 11.200000,-11.200001 11.200001,11.200001 2.799999,-2.799999 -11.200001,-11.200001z"/> \ No newline at end of file diff --git a/packages/SystemUI/res/drawable/recents_dismiss_light.xml b/packages/SystemUI/res/drawable/recents_dismiss_light.xml index 963ccf7be00d9..be0825cf953a2 100644 --- a/packages/SystemUI/res/drawable/recents_dismiss_light.xml +++ b/packages/SystemUI/res/drawable/recents_dismiss_light.xml @@ -1,30 +1,24 @@ - - - - + android:width="48.0dp" + android:height="48.0dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> - + android:fillColor="@color/recents_task_bar_light_dismiss_color" + android:pathData="M38.000000,12.800000l-2.799999,-2.800000 -11.200001,11.200001 -11.200000,-11.200001 -2.800000,2.800000 11.200001,11.200000 -11.200001,11.200001 2.800000,2.799999 11.200000,-11.200001 11.200001,11.200001 2.799999,-2.799999 -11.200001,-11.200001z"/> \ No newline at end of file diff --git a/packages/SystemUI/res/drawable/recents_lock_to_app_pin.xml b/packages/SystemUI/res/drawable/recents_lock_to_app_pin.xml new file mode 100644 index 0000000000000..317f858f662de --- /dev/null +++ b/packages/SystemUI/res/drawable/recents_lock_to_app_pin.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/packages/SystemUI/res/drawable/recents_lock_to_task_button_bg.xml b/packages/SystemUI/res/drawable/recents_lock_to_task_button_bg.xml index d38c8a4dec9ea..6424a65c5290b 100644 --- a/packages/SystemUI/res/drawable/recents_lock_to_task_button_bg.xml +++ b/packages/SystemUI/res/drawable/recents_lock_to_task_button_bg.xml @@ -15,6 +15,6 @@ --> - + android:color="#ff9cdfd9"> + \ No newline at end of file diff --git a/packages/SystemUI/res/layout/recents.xml b/packages/SystemUI/res/layout/recents.xml index 47740ee94eec4..8f367a6c23c52 100644 --- a/packages/SystemUI/res/layout/recents.xml +++ b/packages/SystemUI/res/layout/recents.xml @@ -39,9 +39,9 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - - + diff --git a/packages/SystemUI/res/layout/recents_fullscreen_overlay.xml b/packages/SystemUI/res/layout/recents_debug_overlay.xml similarity index 58% rename from packages/SystemUI/res/layout/recents_fullscreen_overlay.xml rename to packages/SystemUI/res/layout/recents_debug_overlay.xml index 1d021f930892e..d23495e6043ed 100644 --- a/packages/SystemUI/res/layout/recents_fullscreen_overlay.xml +++ b/packages/SystemUI/res/layout/recents_debug_overlay.xml @@ -4,24 +4,32 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> - - - + - \ No newline at end of file + android:layout_height="wrap_content" + android:layout_gravity="top" + android:layout_marginTop="25dp" /> + + + + diff --git a/packages/SystemUI/res/layout/recents_task_view.xml b/packages/SystemUI/res/layout/recents_task_view.xml index 93c55387812ce..f8dfd65cd535f 100644 --- a/packages/SystemUI/res/layout/recents_task_view.xml +++ b/packages/SystemUI/res/layout/recents_task_view.xml @@ -57,31 +57,27 @@ android:layout_height="48dp" android:layout_marginEnd="4dp" android:layout_gravity="center_vertical|end" - android:padding="18dp" + android:padding="12dp" android:background="@drawable/recents_button_bg" android:visibility="invisible" android:src="@drawable/recents_dismiss_light" /> - - - + + diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index bd10623712dd2..32474c90de9b5 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -208,7 +208,7 @@ 100dp - 1dp + 1.5dp 48dp diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index 18dad3a818152..45348976d4989 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -32,9 +32,7 @@ import android.os.UserHandle; import android.util.Pair; import android.view.KeyEvent; import android.view.View; -import android.view.ViewGroup; import android.view.ViewStub; -import android.widget.FrameLayout; import android.widget.Toast; import com.android.systemui.R; import com.android.systemui.recents.misc.DebugTrigger; @@ -58,7 +56,8 @@ import java.util.ArrayList; * The main Recents activity that is started from AlternateRecentsComponent. */ public class RecentsActivity extends Activity implements RecentsView.RecentsViewCallbacks, - RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks { + RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks, + DebugOverlayView.DebugOverlayViewCallbacks { // Actions and Extras sent from AlternateRecentsComponent final static String EXTRA_TRIGGERED_FROM_ALT_TAB = "extra_triggered_from_alt_tab"; @@ -73,6 +72,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView RecentsView mRecentsView; SystemBarScrimViews mScrimViews; ViewStub mEmptyViewStub; + ViewStub mDebugOverlayStub; View mEmptyView; DebugOverlayView mDebugOverlay; @@ -368,6 +368,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); mEmptyViewStub = (ViewStub) findViewById(R.id.empty_view_stub); + mDebugOverlayStub = (ViewStub) findViewById(R.id.debug_overlay_stub); mScrimViews = new SystemBarScrimViews(this, mConfig); inflateDebugOverlay(); @@ -405,12 +406,9 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView /** Inflates the debug overlay if debug mode is enabled. */ void inflateDebugOverlay() { if (mConfig.debugModeEnabled && mDebugOverlay == null) { - ViewGroup parent = (ViewGroup) findViewById(android.R.id.content).getRootView(); - mDebugOverlay = new DebugOverlayView(this); - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT); - parent.addView(mDebugOverlay, lp); + // Inflate the overlay and seek bars + mDebugOverlay = (DebugOverlayView) mDebugOverlayStub.inflate(); + mDebugOverlay.setCallbacks(this); mRecentsView.setDebugOverlay(mDebugOverlay); } } @@ -599,4 +597,16 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView bindSearchBarAppWidget(); addSearchBarAppWidgetView(); } + + /**** DebugOverlayView.DebugOverlayViewCallbacks ****/ + + @Override + public void onPrimarySeekBarChanged(float progress) { + // Do nothing + } + + @Override + public void onSecondarySeekBarChanged(float progress) { + // Do nothing + } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java index 36d06d59c1804..fbcbe2cf4bd1d 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java @@ -16,7 +16,6 @@ package com.android.systemui.recents; -import android.content.ContentResolver; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java index 9325947649a26..f30e22a0b1b7b 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java +++ b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java @@ -27,9 +27,6 @@ import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.HandlerThread; import android.os.UserHandle; -import android.provider.Settings; -import android.provider.Settings.SettingNotFoundException; - import com.android.systemui.recents.Constants; import com.android.systemui.recents.RecentsConfiguration; import com.android.systemui.recents.misc.SystemServicesProxy; diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java index fdc577587207e..04ee9dda0ae2b 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java +++ b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java @@ -17,7 +17,6 @@ package com.android.systemui.recents.model; import com.android.systemui.recents.Constants; -import com.android.systemui.recents.RecentsConfiguration; import com.android.systemui.recents.misc.NamedCounter; import java.util.ArrayList; diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/DebugOverlayView.java b/packages/SystemUI/src/com/android/systemui/recents/views/DebugOverlayView.java index 6c90fe36634a8..4c3fbf0af44e5 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/DebugOverlayView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/DebugOverlayView.java @@ -20,9 +20,12 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; +import android.util.AttributeSet; import android.util.Pair; import android.view.View; import android.widget.FrameLayout; +import android.widget.SeekBar; +import com.android.systemui.R; import java.util.ArrayList; @@ -30,33 +33,67 @@ import java.util.ArrayList; * A full screen overlay layer that allows us to draw views from throughout the system on the top * most layer. */ -public class DebugOverlayView extends FrameLayout { +public class DebugOverlayView extends FrameLayout implements SeekBar.OnSeekBarChangeListener { + + public interface DebugOverlayViewCallbacks { + public void onPrimarySeekBarChanged(float progress); + public void onSecondarySeekBarChanged(float progress); + } final static int sCornerRectSize = 50; + DebugOverlayViewCallbacks mCb; + ArrayList> mRects = new ArrayList>(); Paint mDebugOutline = new Paint(); Paint mTmpPaint = new Paint(); boolean mEnabled = true; + SeekBar mPrimarySeekBar; + SeekBar mSecondarySeekBar; + public DebugOverlayView(Context context) { - super(context); + this(context, null); + } + + public DebugOverlayView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public DebugOverlayView(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + public DebugOverlayView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); mDebugOutline.setColor(0xFFff0000); mDebugOutline.setStyle(Paint.Style.STROKE); mDebugOutline.setStrokeWidth(8f); setWillNotDraw(false); } + public void setCallbacks(DebugOverlayViewCallbacks cb) { + mCb = cb; + } + + @Override + protected void onFinishInflate() { + mPrimarySeekBar = (SeekBar) findViewById(R.id.debug_seek_bar_1); + mPrimarySeekBar.setOnSeekBarChangeListener(this); + mSecondarySeekBar = (SeekBar) findViewById(R.id.debug_seek_bar_2); + mSecondarySeekBar.setOnSeekBarChangeListener(this); + } + /** Enables the debug overlay drawing. */ public void enable() { mEnabled = true; - invalidate(); + setVisibility(View.VISIBLE); } /** Disables the debug overlay drawing. */ public void disable() { mEnabled = false; - invalidate(); + setVisibility(View.GONE); } /** Clears all debug rects. */ @@ -110,4 +147,25 @@ public class DebugOverlayView extends FrameLayout { } } } + + /**** SeekBar.OnSeekBarChangeListener Implementation ****/ + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + // Do nothing + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + // Do nothing + } + + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + if (seekBar == mPrimarySeekBar) { + mCb.onPrimarySeekBarChanged((float) progress / mPrimarySeekBar.getMax()); + } else if (seekBar == mSecondarySeekBar) { + mCb.onSecondarySeekBarChanged((float) progress / mSecondarySeekBar.getMax()); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskBarView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskBarView.java index dc8f0db33389b..492e3aa0ad423 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskBarView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskBarView.java @@ -35,7 +35,6 @@ import android.widget.TextView; import com.android.systemui.R; import com.android.systemui.recents.Constants; import com.android.systemui.recents.RecentsConfiguration; -import com.android.systemui.recents.misc.Utilities; import com.android.systemui.recents.model.Task; @@ -115,7 +114,7 @@ class TaskBarView extends FrameLayout { protected void onDraw(Canvas canvas) { if (!mIsFullscreen) { // Draw the highlight at the top edge (but put the bottom edge just out of view) - float offset = mConfig.taskViewHighlightPx / 2f; + float offset = (float) Math.ceil(mConfig.taskViewHighlightPx / 2f); float radius = mConfig.taskViewRoundedCornerRadiusPx; canvas.drawRoundRect(-offset, 0f, (float) getMeasuredWidth() + offset, getMeasuredHeight() + radius, radius, radius, sHighlightPaint); 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 ba90af3516d01..aa67c1e32c7db 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java @@ -27,7 +27,6 @@ import android.graphics.Rect; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; -import android.view.accessibility.AccessibilityEvent; import android.widget.FrameLayout; import android.widget.OverScroller; import com.android.systemui.R; 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 e97ce30f665ac..8a16d304c96e8 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java @@ -68,6 +68,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, TaskThumbnailView mThumbnailView; TaskBarView mBarView; TaskFooterView mFooterView; + View mActionButtonView; TaskViewCallbacks mCb; // Optimizations @@ -122,11 +123,9 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, // Bind the views mBarView = (TaskBarView) findViewById(R.id.task_view_bar); mThumbnailView = (TaskThumbnailView) findViewById(R.id.task_view_thumbnail); - mFooterView = (TaskFooterView) findViewById(R.id.lock_to_app); - if (mConfig.lockToAppEnabled) { + mActionButtonView = findViewById(R.id.lock_to_app_fab); + if (mFooterView != null) { mFooterView.setCallbacks(this); - } else { - mFooterView.setVisibility(View.GONE); } } @@ -138,9 +137,13 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, // Measure the bar view, thumbnail, and footer mBarView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(mConfig.taskBarHeight, MeasureSpec.EXACTLY)); - mFooterView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(mConfig.taskViewLockToAppButtonHeight, - MeasureSpec.EXACTLY)); + if (mFooterView != null) { + mFooterView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(mConfig.taskViewLockToAppButtonHeight, + MeasureSpec.EXACTLY)); + } + mActionButtonView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), + MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); if (mIsFullScreenView) { // Measure the thumbnail height to be the full dimensions mThumbnailView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), @@ -208,7 +211,9 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, if (isTaskViewLaunchTargetTask) { mBarView.prepareEnterRecentsAnimation(); // Hide the footer during the transition in, and animate it out afterwards? - mFooterView.animateFooterVisibility(false, 0); + if (mFooterView != null) { + mFooterView.animateFooterVisibility(false, 0); + } } else { // Don't do anything for the side views when animating in } @@ -217,6 +222,8 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, if (isTaskViewLaunchTargetTask) { // Hide the front most task bar view so we can animate it in mBarView.prepareEnterRecentsAnimation(); + // Hide the action button if it exists + mActionButtonView.setAlpha(0f); // Set the dim to 0 so we can animate it in setDim(0); } else if (occludesLaunchTarget) { @@ -334,6 +341,14 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, // Animate the footer into view animateFooterVisibility(true, mConfig.taskBarEnterAnimDuration); + + // Animate the action button in + mActionButtonView.animate().alpha(1f) + .setStartDelay(mConfig.taskBarEnterAnimDelay) + .setDuration(mConfig.taskBarEnterAnimDuration) + .setInterpolator(mConfig.fastOutLinearInInterpolator) + .withLayer() + .start(); } else { // Enable the task bar clip mThumbnailView.enableTaskBarClip(mBarView); @@ -426,6 +441,14 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, anim.setInterpolator(mConfig.fastOutLinearInInterpolator); anim.start(); } + + // Animate the action button away + mActionButtonView.animate().alpha(0f) + .setStartDelay(0) + .setDuration(mConfig.taskBarExitAnimDuration) + .setInterpolator(mConfig.fastOutLinearInInterpolator) + .withLayer() + .start(); } else { // Hide the dismiss button mBarView.startLaunchTaskDismissAnimation(); @@ -514,7 +537,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, /** Gets the max footer height. */ public int getMaxFooterHeight() { - if (mConfig.lockToAppEnabled) { + if (mFooterView != null) { return mFooterView.mMaxFooterHeight; } else { return 0; @@ -528,7 +551,9 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, // Hide the footer if the current task can not be locked to if (!mTask.lockToTaskEnabled || !mTask.lockToThisTask) return; // Otherwise, animate the visibility - mFooterView.animateFooterVisibility(visible, duration); + if (mFooterView != null) { + mFooterView.animateFooterVisibility(visible, duration); + } } /** Returns the current dim. */ @@ -608,6 +633,10 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, } else { animateFooterVisibility(t.lockToThisTask, mConfig.taskViewLockToAppLongAnimDuration); } + // Hide the action button if lock to app is disabled + if (!t.lockToTaskEnabled && mActionButtonView.getVisibility() != View.GONE) { + mActionButtonView.setVisibility(View.GONE); + } } @Override @@ -625,7 +654,10 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, mBarView.mApplicationIcon.setOnClickListener(this); } mBarView.mDismissButton.setOnClickListener(this); - mFooterView.setOnClickListener(this); + if (mFooterView != null) { + mFooterView.setOnClickListener(this); + } + mActionButtonView.setOnClickListener(this); if (Constants.DebugFlags.App.EnableDevAppInfoOnLongPress) { if (mConfig.developerOptionsEnabled) { mBarView.mApplicationIcon.setOnLongClickListener(this); @@ -647,7 +679,10 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, mBarView.mApplicationIcon.setOnClickListener(null); } mBarView.mDismissButton.setOnClickListener(null); - mFooterView.setOnClickListener(null); + if (mFooterView != null) { + mFooterView.setOnClickListener(null); + } + mActionButtonView.setOnClickListener(null); if (Constants.DebugFlags.App.EnableDevAppInfoOnLongPress) { mBarView.mApplicationIcon.setOnLongClickListener(null); } @@ -694,8 +729,9 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, }); // Hide the footer tv.animateFooterVisibility(false, mConfig.taskViewRemoveAnimDuration); - } else if (v == tv || v == mFooterView) { - mCb.onTaskViewClicked(tv, tv.getTask(), (v == mFooterView)); + } else if (v == tv || (v == mFooterView || v == mActionButtonView)) { + mCb.onTaskViewClicked(tv, tv.getTask(), + (v == mFooterView || v == mActionButtonView)); } } }, 125);