From cfc3086b18396df03f982fb98112649dc5b5a6f2 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Mon, 29 Oct 2012 18:21:31 -0700 Subject: [PATCH] Keyguard polishing Integrate from proto app * New assets * Layout changes * Dragging behavior change for sliding challenge * Realign camera for new padding Change-Id: Ia177c60f59f1fc74000d95fc39b048321acf1246 --- core/res/res/drawable-hdpi/kg_add_widget.png | Bin 316 -> 1648 bytes .../drawable-hdpi/kg_bouncer_bg_white.9.png | Bin 219 -> 546 bytes .../res/drawable-hdpi/kg_security_grip.9.png | Bin 233 -> 140 bytes .../res/drawable-hdpi/kg_security_lock.png | Bin 2722 -> 2700 bytes core/res/res/drawable-mdpi/kg_add_widget.png | Bin 262 -> 1185 bytes .../drawable-mdpi/kg_bouncer_bg_white.9.png | Bin 186 -> 397 bytes .../res/drawable-mdpi/kg_security_grip.9.png | Bin 197 -> 136 bytes .../res/drawable-mdpi/kg_security_lock.png | Bin 1933 -> 1921 bytes core/res/res/drawable-xhdpi/kg_add_widget.png | Bin 422 -> 2220 bytes .../drawable-xhdpi/kg_bouncer_bg_white.9.png | Bin 240 -> 775 bytes .../res/drawable-xhdpi/kg_security_grip.9.png | Bin 263 -> 149 bytes .../res/drawable-xhdpi/kg_security_lock.png | Bin 3730 -> 3499 bytes .../res/layout-port/keyguard_widget_pager.xml | 4 +-- .../impl/keyguard/CameraWidgetFrame.java | 12 +++++++-- .../keyguard/KeyguardActivityLauncher.java | 19 +++++++++----- .../impl/keyguard/KeyguardSelectorView.java | 2 +- .../impl/keyguard/KeyguardWidgetFrame.java | 4 ++- .../impl/keyguard/KeyguardWidgetPager.java | 6 ++++- .../impl/keyguard/SlidingChallengeLayout.java | 24 ++++++++---------- 19 files changed, 44 insertions(+), 27 deletions(-) diff --git a/core/res/res/drawable-hdpi/kg_add_widget.png b/core/res/res/drawable-hdpi/kg_add_widget.png index 8969a73ae39fe3ee5c943c6d694c670182982d0e..7456705b402ff77ef3459b3f92b460efd46a8a18 100644 GIT binary patch literal 1648 zcmeAS@N?(olHy`uVBq!ia0vp^Yk>GU2OE%VUbnX#NU@|l`Z_W&Z0zU$lgJ9>GZqKA zJ29*~C-V}>QAqX(@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4os zByV>YhW{YAVDIwDKoQOYkH}&m?E%JaC$sGs7+4)VT^vIyZoR#GaCOX6*<&A{%jTbS zdwt03wNlh(k=uDOrI+8_TKbx8*XQ>E|NGu?mBzln^*cDPZ%zKw+Y#^8epXN7pHyRZ>_^q>m6e~)TI#F*44gDyy;Aw4@$%{WygvOl zJU0FL!GC%ur(W*<@A>JT#N+$X^^Ei4iqFkg`I$ROe%>@YspLNo3x2V`wz-ykilm0lX<)M zel00DcWJzjik&ctePwPAH4F=)oXY4Cd*3KQpIk=`C^8 z$0iHcQ@#D2ss-1yz0u{_mWM838Us`KM%nED{oB#!L(a9Dtk{%SS12w?(4B$RoHuND zZ+)Q(@+7)HAYR}5`La&vHSWwi!ZpsY)>d=&L1MXYLkYfEwk=TX-Mn^r z<)t3OV~6Xxx=TNI?>=z>cSHii8EAU%E$;*GcD@zdi)|7=crG(U^@8echnPrGQb zxI0x=I}&m~eN#NSHua%+v_JdvXLHW0?%bqv*GlE*@l79&&G~#hnx9L3zu%|k%a8ky zNtE*?_e6Wz+3C(x-KiF}&E&aE@wxjdm9>%kCeEo_J{MGstW`NbFV047=gcR~D%+1s z{J;Cl`@<9K(jS*q_WNv-Gx=|I?1%TJ935bkPk9oxuUG8bgJ%+t&p-E<+u?C=n{BT7;dOH!?pi&B9UgOP!uk*=YEu8~=Yp@o&Hk(IHDu7SCg zfq^OWBPkROx%nxXX_dG&xWq**18R^2*$|wcR#Ki=l*-_klAn~S;F+74o*I;zm{M7I SG8I(vGkCiCxvX{( zJaZG%Q-e|yQz{EjrrH1%-Sc#D45_&F=FUOh0}4DWjy*5-r!H?)xF@q&)KBS!g z?#(Zp4>;#Nu)V}J_jNwEwz~fZ7XEo4k%PiEKvdDBUh#niMX*^NMNkf;>>x;x9jMIz z!=u}Kx6k~M_2aGa)XC3piP#+6yg{a}kMVRT`yp2U4=t86xiGhJ824;dp{RBUW zpHPA@t3*-;HUlCo46RvEH5^0l^N#XRUT)veFKKemJ@@r|Ij=+SK~;$nHJ`tKi7N6< zauQeqrh#Fg_dmr955N_02yBVS@vojz)r_hZ)gMJw&HN-arhlqsk5U0;RUNY~Vx$Iu zQ=rdny#fVb7q|f)fA^+-qz4!T=7BuW;r8!=aS^#|6x#=8Tv!2Cfs2@Aq8I_zfPNPj zMP&9}OjW0Vl1tWrWe-wTZUg9aaZW^zQZ86A2MZphaJ331UIsJ}%bCQsH>Hprv(7>I zDxZP0ON;_9et*5_0?ypJDkABiV`+29w^U=zG(aliV9RNXHA`EpS=wUFl4!A5|69jJ zqC1vIQV@M1X(fs7SR!eQHA~{fs%EdN1s=9$6+*E~lNj`-6EbAh=MajOOk&ZSPRN2; zmmn0g_qsfg^=0I0kYsl@^SlDve{PujCRjxJ&G)Q&bg^Xup_bqWH3~ as`3U!K1s*nd9o+~0000BFzuQKf2vJ(_CTnUW8rN>V-gMMq5olhV_*B zPSeFsW*te~W8b0^GkNdgRoo4!zpNj1=H95;yuB{2@Yb=`x4o)9Qw>57g>VLAG9ufz t{&OzfxX;l0=Z@f;ZH+061=TYx7({&Lh}$t*TQ6V$0#8>zmvv4FO#rseK_dVF diff --git a/core/res/res/drawable-hdpi/kg_security_grip.9.png b/core/res/res/drawable-hdpi/kg_security_grip.9.png index fb1c86655b5f6ce5afe972be7ff0391e860efffc..1e40aef33699736547ef278de213713e12c912e9 100644 GIT binary patch delta 74 zcmaFK*uyx%(^=2c#WBR9_wMA4ybK0B%|8GC&*a&;uq#C@%vi#-LDQwRG&R0q&uhW` eEBTlFZDyXOC&YNjzcZKt2s~Z=T-G@yGywoO2pjYO delta 168 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 delta 2583 zcmV+y3h4EW6`~c8B#~_=f4fOUK~!ko?V5W`RQVOhzrTAgGk^>%5L8wynhg&%)~#5L z(HQX+O8sM#-G)ZvrioIm#jJG|6Cay3*3=l+VropRR@3-L>o!UgRzWsCimwQ$_yX&L zB^gl$7?>9@Gxy%#=^xxXUfBU=lo^fnBsVkn&Tq~+pWiw6_c-?geUtrZrqsJ)z!7n z>-9D$isIv(Q!wG2lcFenUaz;#Zny8Lt*xD|>vT9ALQPE#)6a8rbKe|nVPT;$9T^b` z8u-uMZuh@cRrL>KBO;ZEWW%8j>;P3&eJ+>lUstbQ{aDj4e>{HtH~_t1!Gh?+W@l#y zU~6k@1pt^eYgTM~d;1?%RrMMG6%8tQcz@g(ir!XL)n1#;wmm*R-UI;Gu3Za2XJlkV z7g#rZ!&T7}C?zVKSN6sZ*yYBO@cZq@?8Js8OTx0Vn{(0lHNH!Z7v-0N4I& zyru$>JRVQ=&Ye4d)!5kRTDNW;b2^>mbUIO7TpXR~e*5jWAR|xblBUEt zSG`_ugTvwYYkPb9_O`aRFWcMOzj8PnfAf01_xOtue=S)0%S1#@r}OVxX0h_}@>h;> zSh8>5KCE2168ikw+S>X%%_(It*q)xAs=IgZ&YwDUsu=+8+_?h)=6(S<5)w)W97U$2Ok6pWVMIO4Lp@Ch#d>NIMl^K4&|Ea-ABP?;w<<{2L zKj>Mpe|z_CXd}6#b(lm%g28F=`Sa(SIp?ZTk5Rwh?{6tDFaPl3#fxZYXkZ5p9EdFJ zmMvQX(e3Q)+&Ne(bI!?Xwf&ph`Qcq z&z}80NGArO+|kkTwXS#L#*LAKJ#yp-PM8ZiLkb^5{U?QyM1?% zbe6T~expZs&6+j1eED)n`tRPoiwzq#1Z;G7cmH`X8=akU#&ksre?Af!CmX-!tmccoP+wHE>rXI=A zi~)ezY|hcn`SRtz9wa0rpsuctU%7GxH8nN&Ip-due%+oVN$HF+)3|ZtC^0cHo||pCb+&Dgftv$O=a&c8Ca^hc@_zV<#-& zcR}6*zw7cI_+6KPefKy`IBn=)kzQxpYG zr;{B%d{|w)c=3=O6&oANnwy(ZP*5PWw6ughH#wb7cKh~iH8wVO$le`4e!Ot_@L`mc zln5;?EhI@2?%%&pOO`Al0GK>^GMbv2h6iqHYBENWv;)_#UuUJIrKqm1f0hT^p)kfM zAt6D@%F2S*>*dp?O$!_N`t|E<`t<2|^yrbI?Z$%H;T;_va%pL4SayQ;;DiYi@WT&3 z000ghI+UK9oBM&HD4g{Rce~xDf`Wp7noOoC=-*5TTBk5oRXfg~KmQ8=PEiykdWF>o zV~nY)ssKn@uwX%@D2i!#f3Zd600h6^f4{1#>em*F#jjOSNRlMs!Gi~m)vH%O2Y`ta zC!(dLWq5-{MMZ%vn$2eWMtd^gQ540iD2h+3JO8MFu2(x$RrP9ZU+d893|7xpH9J17 zy@zv7Hk&Q5H62)N00v2Ev)LT@9upHIGR7c^qIt0P0|O)of;ohCf3GXT06U`YZ!nG_ zfsI*c_#U{Ib+93v8Oi!-sCH-w--iYs!f>c_(uh5k48u-HHp2lPDdF0oi-0IDfT9Vk z-x9$9Il{}Jw;nhE>-YN~_x1JFsH)l}Nm5!|T-^Man3zlhbVMZ@sYC!6=UlbfY+FD1 zisR7&0?6IT1+!yj@*g zXU%5w&k(^VM>@g`0AyLVYv(j=+B9TmX9EB-Gc#X${6a(>#{We^A{}84K!}Nn`A`SB zefu_u2=Vdp=?-e?Uy69f@Yuk^%jj*q0o5aUPW& z*84K;yDsm6qabX+=Q|IqKjrR!sX9_`;Jhusf*_3g?6c2OFI>2g`NbDsjAo3*Yd=LL z;?XSeNC055SeBnSaiRzSn>TMBiK3{_z2d8@emj8y0F1F117y_YO;jy`(Cgdp4DcHn zp$7#XS5Q#n+BGGdXT#AJ%|8i-@=(Z69tJFTMF7y0y{U{CRt&)i41U30SPKeZv)KUc zK5J`hI}5Nn{1`8H(&J%!QsVjv*Dd-rlwEjtP}%|M=WIZ&Ra) zSXAyM3GGfNuGy@or)-Nl;&+1k!_*&4EZ*Hqwi<q<67m zB6k?`&)r*pp1tk#n*(Pe<=&l{xA*%UO|`pw+3zsrF|i-8+to3TN&Nu-fy1k+7y}sY z){5?6j*+(Ydi%uigKMbm%6E0FKW5|}iEmin=pOpDXMIiB_4`}fTX{2vem8zU>)Eqq za~ixELcivGS+Qld@malmH-5MOyv}U~DICu0BFfMIy*1%=*yU>zG*tG9OYc0`Njmv zN}%ODe)eJKgr^`GqqA$xy4~xU#ZzM+C6@Qs{C&L2D(cnA>2dOv9CxCBn4Wt*`K8&Z z+Juc0_HA8v`=w3MOWRKzKMFqRTklt{In`8s#8O88!yNtemzANi#uX>O&pdy0@hY#F zI=&y*qz)s6(CcTSQ=BW7RZ5`*(UV<2T^A^#2LZ@C*UxHeEH?y(I#OW%u&-JCde4-+ z&aa(|=gzw>CBJEvoBo#AN#Oy0$tYoa=E0X_jDUrhTA9KzeIA;@>t=@s@I4eo4i$*v z!x4%$8|EAXc_WG0hW*96(~H>`&yAh6?Y!B6lO@lOy$H-q&-c4MnfJrrlILaR@shSi zbN$QrGu~l|W3bO_Xg`qrp!7jr`TnbSe=lZVRe$a7`m*oU2i$Y)rS`8}bw8`>gH{3i z4zsESw@z*k{VF===XrmdKI;Vst E0F!;;$^ZZW delta 233 zcmZ3;*~X;U8Q|y6%O%Cdz`(%k>ERLtq`g6ygAGVp_*K1{T)?7HzrxeSF{I+wn>&VF z4F)_87nkkWQTac*s_8|HK+KYf`}p5Iy;#EKmS(nhwQ|E(&*+23z3-iNL>?2EmT<6% zm0L^)LPmhu5gS;5A`u%BI6-9HjUDqt3)73f&FuSaeOD)$BRlQ)<=LT$^_Trt8n&nc xl>znId4nl#tj2YReq`@_m?n96>n;`vhTU!)OFh{4eF3_j!PC{xWt~$(69B8CRi^*| diff --git a/core/res/res/drawable-mdpi/kg_bouncer_bg_white.9.png b/core/res/res/drawable-mdpi/kg_bouncer_bg_white.9.png index f63652429be7283f724653d42d437cc6490d8336..e3cb6db097360b446a4503ecf31e559e09485267 100644 GIT binary patch delta 334 zcmV-U0kQtN0gVHYNPht@NklBcmmFWTVPu1hkwF0&;?F`9pDZ)FtfJ+ z%76=C3>*T_B>{_S0Rx}|oS4~V;xCTfdl4XbM$gYjfI>x6AO&`T*9ahhCh!R4W|oGE zQukO8fR|!+vgTq`{eyl7s8Uz00;)v`-tX!F)uO)(%H6jjW;cu30rcR$9}(1bzb}HW z+|T$JTAQlnSw{eUz?O~jF|$#gF9}(vl-VfnP#EQ(H+(r6MO;os#pPs9`oVR}Bw_ZY gIc(bh<^m=04nJRl^9v6Dw*UYD07*qoM6N<$g47$7<^TWy delta 121 zcmeBW-o-eI@tDVQn;^G@q-5{Rj7&zO z1jonXfj9ryNi^r#No~!zvM8|IO&82Km?RjvR=7xK5w}F$T7_f(|Nl2OFfzJiHBW-^ XjFy=Cx4_vP3_#%N>gTe~DWM4fb6qba diff --git a/core/res/res/drawable-mdpi/kg_security_grip.9.png b/core/res/res/drawable-mdpi/kg_security_grip.9.png index 25beb2b08ef2b981252d2c6b29b4cb6409222acf..334a39b5c9a206b5c414d77f911c1203e399936f 100644 GIT binary patch delta 70 zcmX@g*ugl#(_YKd#W6%<;@OFcLJS5x&4>Q|PuE(tT$*Q^bpZ1WrI3j5Qq~i@`+hjS aKE;@LP4NG+z`yPcK;Y@>=d#Wzp$P!BC>vA& delta 131 zcmV-}0DS+50mT83NqlEXL_t(2kh+&pA6`O7g8C2$mQyVudw!Gq>2x{)i#T le(~eAKSSC|@=sT4n-956r5yt=k002ovPDHLkV1j&aHX{H4 diff --git a/core/res/res/drawable-mdpi/kg_security_lock.png b/core/res/res/drawable-mdpi/kg_security_lock.png index e75c82e6cfbd94d35668a54d1dacafb79d0d6040..a39f38002e5d15154e0f62915d91f0fe86c61ecd 100644 GIT binary patch delta 1773 zcmV004R> z004l5008;`004mK004C`008P>0026e000+ooVrmwks&I7QAtEWR9M5!m|ticR~CnV z_l`yut{hoa39>>Gb`xyU;D^$6+lNgEgqUUbY1vmhU9%5<-aud41`>*&O6Xf?KxCoK zALn7c$u4OjiNhvQ5Ukl+0%~j4{m4&f>s<1Dgha4VC-%?_+#?9B0m)fe=C?BFxUt z_FIM2_(rKFXWl|TEC!5Cq}S^*k{!KIY4QmG8=*|X=arfD$%Qkihqbr-7D>KDag z@#f6TOqnsp`uqFSJv}{x@p$~Nx~}gH+6y79#l^)#sZ{EJj4_@_BqU>-Itnk#!omWG zh!GKN+rFVz#ZxOt>+9?PynOj`;@Y)qSXfwpXhd0BT4IxvlbD#8c+;}1ZvyGy5fRz8 z{jFL>Rwxv0!G+~;i)=my;3iON$(8#4?vG_aFG+`J<#Ih`Z zn5NknXIU0%wHge=h^()#qf{#WUQJLcA7q;5=fPYI6CS3xbm_eqeqX#z`y{`o;`a@2=N`B=R7H&1Ik=pym;}) zuUCWAQ3@I z2`Oc>Le-dYM@L7f^H?m_bc`>a=aCTNm9;P&eUnnJ*F$x-ZNG9X=NzqSVB3IyuUmfc zfDIWP9c?rQYiny-tya^Ch-b6eF2`}^Hk{&dW!vF6PK1b>K1$c2PVxALQ#_Z=X1j=p z*J?F=ZEda5K#Y!#wgxr~gH2CQBbUqRp67k9oY#qnT-W_dIg7ONqhO)NG<D^ zBO~zJc+0Y`2O5LdEuKo7>uOi{$jHdcE4ZN+d4V^nSqHa)0ElKgs@~0iwk*ttP&%)n z2(UB&RXt(>XTHAKWzO*8?IKk`|2Ls*UR5Q09~)z`U~O!f;Gnvf4UDv%8 zwEd|82>^6mUjcx6y-t>8$)27bN$MCzB9UUy_NNBq03d{TpE0JzVll5$sj#`ZIdu=-v_HG%l-EM{h z5Q#+M6T>jRgeoo7YV~hBcI@~F&+B1ZF}AJUibkWq@;~dk{_E}XyPf@DtFgGnQ PH##sdOAISglUxTec@tcw delta 1788 zcmV8xy-|x@fx5MPpK5(;62wl%&RuwP9h|pf1`p5flUHq(xHu zigcWT0S6i8&z<4kbI&=yF5bPo0cHRheC=;@Gw1$(=l8ka-#x!`f9^1B(+(XvgqfKc z0KltPuh_wZ2RUO*_4W0EF@}kW3G>vcQ(vmDuQw8jgt&V3Y9XCY>y?!i0ANB0-q+Ws zPM$o8{rmT$wY7D-skgRs=gxtMKtxEV)0~Jn5n*g>tTmI#Tr8DJcZCrDa9wv!N||M-s|vew=MIQy=YV5l zW0;tjU|n5Z=<4b+ZQC9xgVRJrN~uzzP`ExbGxNc{d-s}e-MZB{Iy%}mKR^G2m6esh zdZ50Ff{18&e|h;AUb&6)=g;HDjT<|MbY0hQT^IR${wH3tRXEpm=ccEpKhRo(i1?K& zR{#JH9y|aMF(N`Hlli$9r~No7WiFXa9!{lFSX^A>*RNmS8QjySPuZnQm(bhWYYHKz zJoTiP#7QI)-(6Z-f^FMD%d(7EEXKyi$JzAsG`DR#e?UY5B0@f&|5aJ6U+PbM6?fcn zip8Q~Sr$^M)Q4p%xI{#jW&O@e5Nv5_0RRjQ4FLcg$3d}JL@XBLJv}`b92{&ELcA<{ zJxB;Kb>_?&^YZ1(c=qfW+Yz9zKqiyp`aS#X`QZn0RD zj^luc(B0i#G3d#YCmRhAOOViWp<4udlb)--|}0D~vI?t}Dagu-a0=OeVtt=tLrMq^+&( z^z!nuBZMeLqtS2rY~J;~NF?%O&bg(OGM1K>s+K65&2ptwF&qwm%h$mdLrQtZah$IN z0)h7y78bAg1Dl)S{cHn0EX7uRZ10!h1_nM7Lj2v! zv17kPvv=JWaAo2GdKHI%v*1wZRkjAaiT zIFRk`?uKC)>coi?Xf6dk~f6ah?EBUfzS>MRzatMV&oH2$-B*Fkd2=QV0 z!~8D*HRl{HEiJzp9v*I*oSaldWB`z}v$G#XB9RN8?^f;RodEjrx~{J7A z^DVL_xZMWirfCL<2$jx${||uLwr$&S8~|`?oy@mgJ4$iR1MThYA6u67pN58pZ|{}> zy8-AQKCnm$?2{jLD1?D{rM);}XwI{Q^KzYP(v@dK(FAS=7R%}T7LA{GA(SpQW= z03fBbl~Mvg1~u#g+c6>{JjPf+N?CASR|_H5++PDYG&H0DARdqZxxKypFW7|x=eDF{ z3_=LHfB*h+V`C#s(_GE_Upjkw!X8_FYm@E<9TYcIGBP?cH##&kEig1XFfh-McF2<- e2OShQR5CI;GB-LjGc7PQIxsN4&CYa_PzN!L0AbMp diff --git a/core/res/res/drawable-xhdpi/kg_add_widget.png b/core/res/res/drawable-xhdpi/kg_add_widget.png index 54ee78b9d0700e703f9d9004c93adb3645f6914f..d71905f8ff781199595de9758b6e1d3300a34833 100644 GIT binary patch literal 2220 zcmcImc~BE~6kduKBB+Svs2UwYf>R*`5J^m-P_9Klf(nQbh#^FaoJlw&ii!v-sI$R? z5~0-!t#XPe0fGWH5RSAC3Iyadu!<0FF%n5v`i~vkY5b$J-_G0L+kN}y``-KQ+p}Jt zE?O%MR{{W_1-d$VBX$S?)T~x4L$2DM&zK-)3B%sQ9so)&YAUEpk+mAr+rwYF;T^CPhQJ5_NEa!lZ_Iu;I#(J8I1NW&lO!igk{z5vn#%N2P7Ea@dnzp+Y zMkv(SbA4jmZ$USe7~S$M6J+&2c5zriKIO37#Bh_^z44*`=Y!M-Yfe6$tr~;5tde#K z96DC}AThTmvC`T0H{SGKr~x8D(gE}whQIR>BYKM{666Y7uQRbNi$iKeCm4&0xzz;WiV4Zaz(%tcLZ9c957Z3S@Z%bf zNdoan*1`&NC`6oqsWK^+`$9qK_=W0sr~7@ZV8u}gh2=9M-yzxJ$1I0_ZB3*!%kHnQ zAW&M1%8unj(qOUtGJ5x@Aj-B1>%g47J>bKB+My|#jcr}W6sKxKyxt8;XK2nBXBeSA z&gkf_X=F%xF@s5Lsd z*K-r6D0j(os~e{+K0(SbuUq*&e9nYgxGsB=POkIscz=U$@>9C1pcaNF*GN~L@8KH+ z=@@6O{R|YaJ3=|+%#!x|wOidxj8uhRb6%;}@P*d5cTK3KK{01yKOyxgO$)3K?gTDW zEa!gZj=F%S1PH8cQRGcY3_Gf4W<&j(h}qlSzJ6g<+-YO7gTZH@&Oa_fsOP8=Cb9am z>#R;wno4NDdw5%>M3#4ae`d)Q9O1j2s%EV7?_O4%rqkXflXAdJFX#Wl@MAsY+Se_F zq)XD45wYSa4xePTNq5zl>UaD-i81(On!U)8@*%uL3@Z`P~Ae33SvW?8e% z&F^(3j&NQjvHp5 zlriHFR^{Cl*4@7k$<}?Hhx^BV-hd`Nw8O(B{!wz&&TGt^PWM1VT1zr|Je(3A{NW2! zDgY?1vA#`x5tO$BJSO6bo#+hZm`R-E!r_!QP!=Tcuh8OzTOP-O+CqJ$`&3u2W{}&| z=*Y9W!Xsk2I}{n27v#AxKf_Ke=WxVw=}1a_;UTfy3mV5tlKz;Eg_6)B8{*3l2!=>C z3CdmIajvu#FC1Z>q=kzUk{|}e!HK>}#0j|4d|G-O_ojD)J`D3x!I~eC5s;kg8N-0C z!aNw_m@nG24{dkJ#pgE37UrG=JX~ruAqn(AMuabJNPxkI40|F&S#i`DI$$3Xd62#t45u>a-gIh6LbQnf;jaMzoje_j9D+~%39yOV AjQ{`u literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^Q$d)64M+wq+TjnRBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFnV~pIEGZ*dUM^7tHD6T<)F)($AA4-sz=y1#0#uB!?R>l zwA{omD!lu)%wPyq)N)~6T$TUWYImnb&UMQ>AwT{qY5}!8Vqb3`b^7*n z{yc(4fh~g@2XQyVnSnDA9wW|)3%1RA5NO^w8{{>x!wa5^Brvo}i)cH0ysZKTJcFmJ KpUXO@geCxSLx>3g diff --git a/core/res/res/drawable-xhdpi/kg_bouncer_bg_white.9.png b/core/res/res/drawable-xhdpi/kg_bouncer_bg_white.9.png index 9c4a603f6756d27bf8d448e4eb4b1a33df91bce3..b9e30e20a952818c8a18260896acb7a8f102f82e 100644 GIT binary patch delta 715 zcmV;+0yO>b0fz>VNPhyUNklnLt@Bd*j~7m6t2CMnITNg*amMU-;7xOvW-YbO(9Uh*8~ z3$wWA+&lb!@4owndFO}-8$cAF_5Jb)sn3Mn_yXT!9}Z(TK7U?sF$K@CfV=num+?5I zw9sooPa_dAf}d~<$FX%?rLLZTaUD1DTS{qZ)hi?7TtrMq`-TKE+v@c?(Qgnt^9%10Q%5gfotd|1oR;X+Djyb8QF z68TKr#s1oYMStAJFPLvk_R8$R<nbT6_kFt22{${d78wv$cs&j1002ovPDHLkV1g^pWaJrbd5lljaTfWXt$&t;uc GLK6V}9!xy| diff --git a/core/res/res/drawable-xhdpi/kg_security_grip.9.png b/core/res/res/drawable-xhdpi/kg_security_grip.9.png index b5cd13425cec1ae131303df7f6669751984c0dfa..c33b9d3471bcb2f243262101efeef2be720002a2 100644 GIT binary patch delta 83 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 hmQ_F_o delta 3600 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 - \ No newline at end of file + diff --git a/policy/src/com/android/internal/policy/impl/keyguard/CameraWidgetFrame.java b/policy/src/com/android/internal/policy/impl/keyguard/CameraWidgetFrame.java index 17415a9d8c874..7d532bd7bbd3f 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/CameraWidgetFrame.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/CameraWidgetFrame.java @@ -169,11 +169,12 @@ public class CameraWidgetFrame extends KeyguardWidgetFrame implements View.OnCli } private void transitionToCamera() { + final View child = getChildAt(0); if (mTransitioning || mChallengeActive || mDown) return; if (DEBUG) Log.d(TAG, "Transitioning to camera..."); mTransitioning = true; - int startWidth = getChildAt(0).getWidth(); - int startHeight = getChildAt(0).getHeight(); + int startWidth = child.getWidth(); + int startHeight = child.getHeight(); int finishWidth = getRootView().getWidth(); int finishHeight = getRootView().getHeight(); @@ -182,9 +183,15 @@ public class CameraWidgetFrame extends KeyguardWidgetFrame implements View.OnCli float scaleY = (float) finishHeight / startHeight; float scale = Math.max(scaleX, scaleY); + final int screenCenter = getResources().getDisplayMetrics().heightPixels / 2; + + final int[] loc = new int[2]; + child.getLocationInWindow(loc); + final int childCenter = loc[1] + startHeight / 2; animate() .scaleX(scale) .scaleY(scale) + .translationY(screenCenter - childCenter) .setDuration(WIDGET_ANIMATION_DURATION) .withEndAction(mLaunchCameraRunnable) .start(); @@ -284,6 +291,7 @@ public class CameraWidgetFrame extends KeyguardWidgetFrame implements View.OnCli animate().cancel(); setScaleX(1); setScaleY(1); + setTranslationY(0); } @Override diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardActivityLauncher.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardActivityLauncher.java index a224a4219bbca..4c500696cc4d0 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardActivityLauncher.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardActivityLauncher.java @@ -17,11 +17,13 @@ package com.android.internal.policy.impl.keyguard; import android.app.ActivityManagerNative; +import android.app.ActivityOptions; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.os.Bundle; import android.os.RemoteException; import android.os.UserHandle; import android.provider.MediaStore; @@ -97,13 +99,13 @@ public abstract class KeyguardActivityLauncher { // For now, we'll treat this like launching any other app from secure keyguard. // When they do, user sees the system's ResolverActivity which lets them choose // which secure camera to use. - launchActivity(SECURE_CAMERA_INTENT, false); + launchActivity(SECURE_CAMERA_INTENT, false, false); } else { - launchActivity(SECURE_CAMERA_INTENT, true); + launchActivity(SECURE_CAMERA_INTENT, true, false); } } else { // Launch the normal camera - launchActivity(INSECURE_CAMERA_INTENT, false); + launchActivity(INSECURE_CAMERA_INTENT, false, false); } } @@ -113,8 +115,11 @@ public abstract class KeyguardActivityLauncher { * @param showsWhileLocked true if the activity can be run on top of keyguard. * See {@link WindowManager#FLAG_SHOW_WHEN_LOCKED} */ - public void launchActivity(final Intent intent, boolean showsWhileLocked) { + public void launchActivity(final Intent intent, boolean showsWhileLocked, boolean animate) { final Context context = getContext(); + final Bundle animation = animate ? null : + ActivityOptions.makeCustomAnimation(context, com.android.internal.R.anim.fade_in, + com.android.internal.R.anim.fade_out).toBundle(); LockPatternUtils lockPatternUtils = getLockPatternUtils(); intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK @@ -128,7 +133,8 @@ public abstract class KeyguardActivityLauncher { Log.w(TAG, "can't dismiss keyguard on launch"); } try { - context.startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT)); + context.startActivityAsUser(intent, animation, + new UserHandle(UserHandle.USER_CURRENT)); } catch (ActivityNotFoundException e) { Log.w(TAG, "Activity not found for intent + " + intent.getAction()); } @@ -139,7 +145,8 @@ public abstract class KeyguardActivityLauncher { callback.setOnDismissRunnable(new Runnable() { @Override public void run() { - context.startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT)); + context.startActivityAsUser(intent, animation, + new UserHandle(UserHandle.USER_CURRENT)); } }); callback.dismiss(false); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java index 6a9d7584574a0..938e3bd63aac4 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java @@ -59,7 +59,7 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) .getAssistIntent(mContext, UserHandle.USER_CURRENT); if (assistIntent != null) { - mActivityLauncher.launchActivity(assistIntent, false); + mActivityLauncher.launchActivity(assistIntent, false, true); } else { Log.w(TAG, "Failed to get intent for assist activity"); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java index 57b9f7870e76e..7871fcba3fca6 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java @@ -41,6 +41,8 @@ public class KeyguardWidgetFrame extends FrameLayout { private final static PorterDuffXfermode sAddBlendMode = new PorterDuffXfermode(PorterDuff.Mode.ADD); + static final float OUTLINE_ALPHA_MULTIPLIER = 0.6f; + private int mGradientColor; private LinearGradient mForegroundGradient; private LinearGradient mLeftToRightGradient; @@ -319,7 +321,7 @@ public class KeyguardWidgetFrame extends FrameLayout { } public void showFrame(Object caller) { - fadeFrame(caller, true, 1f, 150); + fadeFrame(caller, true, OUTLINE_ALPHA_MULTIPLIER, 150); } public void fadeFrame(Object caller, boolean takeControl, float alpha, int duration) { diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java index 15ce7609859eb..30f4a37e5dd05 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java @@ -341,6 +341,10 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit return 1f; } + public float getOutlineAlphaForPage(int screenCenter, int index) { + return getAlphaForPage(screenCenter, index) * KeyguardWidgetFrame.OUTLINE_ALPHA_MULTIPLIER; + } + protected boolean isOverScrollChild(int index, float scrollProgress) { boolean isInOverscroll = mOverScrollX < 0 || mOverScrollX > mMaxScrollX; return (isInOverscroll && (index == 0 && scrollProgress < 0 || @@ -462,7 +466,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit ObjectAnimator a = ObjectAnimator.ofPropertyValuesHolder(child, alpha); anims.add(a); - float finalOutlineAlpha = show ? getAlphaForPage(mScreenCenter, i) : 0f; + float finalOutlineAlpha = show ? getOutlineAlphaForPage(mScreenCenter, i) : 0f; child.fadeFrame(this, show, finalOutlineAlpha, duration); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java b/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java index 3cd097fbbee6a..43edbad2c6eff 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java @@ -21,7 +21,6 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; -import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.FloatProperty; @@ -48,8 +47,8 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout // The drag handle is measured in dp above & below the top edge of the // challenge view; these parameters change based on whether the challenge // is open or closed. - private static final int DRAG_HANDLE_CLOSED_ABOVE = 32; // dp - private static final int DRAG_HANDLE_CLOSED_BELOW = 32; // dp + private static final int DRAG_HANDLE_CLOSED_ABOVE = 64; // dp + private static final int DRAG_HANDLE_CLOSED_BELOW = 0; // dp private static final int DRAG_HANDLE_OPEN_ABOVE = 8; // dp private static final int DRAG_HANDLE_OPEN_BELOW = 0; // dp @@ -243,13 +242,7 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); - setWillNotDraw(false); - } - - public void setDragDrawables(Drawable handle, Drawable icon) { final float density = getResources().getDisplayMetrics().density; - final int handleHeight = handle != null ? handle.getIntrinsicHeight() : 0; - final int iconHeight = icon != null ? icon.getIntrinsicHeight() : 0; // top half of the lock icon, plus another 25% to be sure mDragHandleClosedAbove = (int) (DRAG_HANDLE_CLOSED_ABOVE * density + 0.5f); @@ -258,9 +251,12 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout mDragHandleOpenBelow = (int) (DRAG_HANDLE_OPEN_BELOW * density + 0.5f); // how much space to account for in the handle when closed - mChallengeBottomBound = - (mDragHandleClosedBelow + mDragHandleClosedAbove + handleHeight) / 2; + mChallengeBottomBound = mDragHandleClosedBelow; + setWillNotDraw(false); + } + + public void setDragDrawables(Drawable handle, Drawable icon) { mHandleDrawable = handle; mDragIconDrawable = icon; } @@ -558,8 +554,6 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout } mVelocityTracker.addMovement(ev); - //Log.v(TAG, "onTouch: " + ev); - final int action = ev.getActionMasked(); switch (action) { case MotionEvent.ACTION_DOWN: @@ -827,10 +821,12 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout } if (mDragIconDrawable != null) { + final int closedTop = getLayoutBottom() - mChallengeBottomBound; final int iconWidth = mDragIconDrawable.getIntrinsicWidth(); final int iconHeight = mDragIconDrawable.getIntrinsicHeight(); final int iconLeft = (challengeLeft + challengeRight - iconWidth) / 2; - final int iconTop = top + (handleHeight - iconHeight) / 2; + final int iconTop = closedTop + + (mDragHandleClosedBelow - mDragHandleClosedAbove - iconHeight) / 2; mDragIconDrawable.setBounds(iconLeft, iconTop, iconLeft + iconWidth, iconTop + iconHeight); mDragIconDrawable.setAlpha((int) (mHandleAlpha * 0xFF));