From 9924e130373455899ecb4f0d78d6b607fb40e866 Mon Sep 17 00:00:00 2001 From: Chris Wren Date: Tue, 25 Feb 2014 18:02:13 -0500 Subject: [PATCH] improvements to heads up interface remove shadow quick hack to open shade from HUN over status bar instead of under and below it dismiss by pushing up tablets: shadow remains on left, right, and bottom Bug: 13208692 Change-Id: Ie3abb762fb1388be68353c7e3111fe4708ab8110 --- packages/SystemUI/res/anim/heads_up_exit.xml | 12 +-- .../drawable-hdpi/heads_up_window_bg.9.png | Bin 779 -> 0 bytes .../drawable-mdpi/heads_up_window_bg.9.png | Bin 500 -> 0 bytes .../heads_up_window_bg.9.png | Bin 2226 -> 1391 bytes .../heads_up_window_bg.9.png | Bin 2028 -> 1207 bytes .../drawable-xhdpi/heads_up_window_bg.9.png | Bin 965 -> 0 bytes .../drawable-xxhdpi/heads_up_window_bg.9.png | Bin 2028 -> 0 bytes .../drawable/heads_up_notification_row_bg.xml | 21 ----- .../SystemUI/res/layout-sw600dp/heads_up.xml | 31 +++++++ packages/SystemUI/res/layout/heads_up.xml | 28 ++---- .../statusbar/phone/PhoneStatusBar.java | 1 - .../policy/HeadsUpNotificationView.java | 86 +++++++++++++++--- 12 files changed, 116 insertions(+), 63 deletions(-) delete mode 100644 packages/SystemUI/res/drawable-hdpi/heads_up_window_bg.9.png delete mode 100644 packages/SystemUI/res/drawable-mdpi/heads_up_window_bg.9.png delete mode 100644 packages/SystemUI/res/drawable-xhdpi/heads_up_window_bg.9.png delete mode 100644 packages/SystemUI/res/drawable-xxhdpi/heads_up_window_bg.9.png delete mode 100644 packages/SystemUI/res/drawable/heads_up_notification_row_bg.xml create mode 100644 packages/SystemUI/res/layout-sw600dp/heads_up.xml diff --git a/packages/SystemUI/res/anim/heads_up_exit.xml b/packages/SystemUI/res/anim/heads_up_exit.xml index 05c144a1720d8..2cad8f6fc2a4c 100644 --- a/packages/SystemUI/res/anim/heads_up_exit.xml +++ b/packages/SystemUI/res/anim/heads_up_exit.xml @@ -1,13 +1,11 @@ - - + diff --git a/packages/SystemUI/res/drawable-hdpi/heads_up_window_bg.9.png b/packages/SystemUI/res/drawable-hdpi/heads_up_window_bg.9.png deleted file mode 100644 index 3b952d0f06aac5f1e89db61b41d0e1387817e2b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 779 zcmV+m1N8ifP)le zK~z}7#h2@joG=W9Pe>TpX*Jb8Wgn+++Dfx(m*Eokk1d_LCNR}X9Vr3~gl~>7ae$Bi z$wy9>4s3}A0CZ&U$ewoQl9L0$u?d(0K!!>Ha&W%|SLu8sklKPQC)MldXd?&r?LGf- zgQ`0CUTTF$X(*T+NC%)NTOYuBK!#fBdLjGfVEOn5U`st4MPV|43&G{U&0aN|YarjCD)kC;0WcEm#ktu4XN543j^Kn;756TVvUtz67XX7EU-a0kEt9(p zuqV|x)@BL=`%Va18gSVuHURjfU?YGpY8%v+Ng+#&N#P#)tx3m5U@I}KKG}|9kh3(C zO9zD<_5A7pg&=0NO=RyWc{&%rhjnnT7Dh2Rl7b~rFp=8_s)ziiS&T4?C8&WdHOuXG z`}VJk|NVad>cCQCO_${Ak&S`e`I!`ZRkf~qZYo|~!L}7*()fD-_@Sld7l7|{?~M{^ zqC&n!E*6)Cm11SpNeX=wfh#88aXP|;%eBY*IW{Q>g2P&V`XOC0esN& zZv^_@fR)x#=i8%7nZ{sHSFJk7<^tUp>cy$KPyzQU%9$*#E|x4-7kVZKfYDNCAXXE3 zby=TrG2FjrxATH;Se4$RRz!ujtwp#ugbk`EN^{-7-IkANl*NN~3 zs0%httvyK#O3rMWB(05f_R{G;Y|fwh=5M0pZW!H9z6JmQ002ov JPDHLkV1hYPVFLgF diff --git a/packages/SystemUI/res/drawable-mdpi/heads_up_window_bg.9.png b/packages/SystemUI/res/drawable-mdpi/heads_up_window_bg.9.png deleted file mode 100644 index a0ab991185f58af5de2aebd6d117897c867ff411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmVy%suNa+cklQfNSKdUIOllRkqUWv+Ey&^+;gY*#XG2c}Ds-oph@_rBHNe}hC zlmP#e6wXSYmOvT1tU@Qk4TNO=CGIW1cO*cOiZWqR&OBLLVG}$4-CE8CDZrw%fsy!U z!p9vCaZeJ-*Vm9>(hvX*qhghbA@xj`c+<&Y#b&Wvcos9D6>?K4d`ciQyMoGURhjruLCp~I3J&GKF zzB`^3F>01oQ-kxfDRt5Q3Y)xgU3-%S@}rSiXh^NW&<%qj8fp(8VMflt|#ih*qb;l1Oea>Luf-NCGQ~8R|2s&$`$cD$2s- zFnp^6R8&-O(T6-Br~t?>=}cG>7r=l4Kc!l&?GRH%cKyDGQ0YBds{)O%0~9Le~^^r zkzCC%2n)lA45+M>=1JyMJ&3z9xH`k@6&xP(D)&NT+p9KzSAnW{SEVT6hU~tKQ5mZ; zMrDKM?y=Ruau=}bv1+TR&8AhLs$gYfrJ2}${u$4ji8CN=1u8qY3)rq!(=MPYEQ86< z)h56;pgPQ21+RK-<=JNZgExb+^f!GoKvk~kf;O`~`|Q<3u5MRAXcZU7i;5832;!C> zI`L+|k}2&dXGdlR#Mzf~+w#%>neDeGh?(I(G2nWIoYX=700000NkvXXu0mjfK}mo| delta 2182 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 IM6N<$f;M1& diff --git a/packages/SystemUI/res/drawable-sw600dp-xxhdpi/heads_up_window_bg.9.png b/packages/SystemUI/res/drawable-sw600dp-xxhdpi/heads_up_window_bg.9.png index 586a7385993f0aefc49018bad98dc87b68a13f92..c76d0e1788d18c848bcbd4b951cac95814301e12 100644 GIT binary patch delta 1200 zcmV;h1W)_y54Q=B7k@Pf1^@s6#$@2#00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3yA;#3yA?Y$;+((000McNliru-U1pH1s_RJ6&3&h1Vl+hK~#9!?VZhXoG=iCCBSh` ze#pF4UelLU>;>fl<&?_f?iq<)1KpQd@xT0h^hg47l3G=&a(~t?;g#1N_%o%ntiKmy z2X8xesLER$tMMa?#RXdi<0O-$yJ%{-je?< z-ksjhOMgN{GL-mGi+ikBF6A@542LYok zBdr9?K@XUK2b@R}qWZs90-~%K)%SVp0q@mTECNc`@_-ikSRz>2a3YBlC6Lu`aR45W zC15hh67_=YaBtQdC0~~;Sp<|0OF%@v3`oS1t$+4{QSyzAKyOxDd!YdkF}gjy`VmI!|5~$Qw$}{udfs}#y+|kmO4rJQQ;-Zxy<||2Xn)lEq=4lP#(GdcKUDwcZ3|~x7`*j`(dnWs zA71i{fYP-*U;<={$|7X}W$W!$3rRq)_v=MMFTq;t_1Nu8osOpnC_P?z$7SSTIXlOr zI0Tp9b075}p*MT>KEu&UKD7l)*YtpFR*cGBy#?VNqvVU$1Kyj2(e>==`9whJGJjcc zG&|1ZbnNm`EISd9C5e}Ot<&}Pa%u^YM8Jqg^b(S7VPUV#=r`|rt=CIHc6`)>K13p* zbQ%Ia`YVlF59sHMAJf0O1%Gd%&*|f(kI}@!nzsa!mJ%3O(n-E_dZrUFuN0iB12?YY zwiDqkeS9gi$2z|{VTSba^~#>h-zomjunx;9r9VeKXlK*aK45+5WB3oD-CFdh7C0yX O0000Q(id=s{vx;gu3Lq*=oUz4BVcu|ujKwUxc}&WvppkQ&)&|eqvh;+ z5m0)5-5yB3(c^l_mrcMrlMDf(RitI7m!x_s@kK!C zG#)UUd|9OP?tka?o?bF|NrgyP!FsPJEa3R^fRYF}BT9`D5S2?30i#|p>h-)O`6N1e8t_1xI@(5Q!Ei*%oI# z8YM@`$9liEyWR%2t3hJ2*FPm%76GNx5D<}Z)bm*+Lx0Po1oXBKve7SFHj;!Dkgx&x zG%_kqjebQy>97Q3`+U7ovX^-5dM^nVr>AAfSIDTI;^xMZgN8qFJOvR6x_%< zifWrd$bTpav--M4K2a&fNrk}yg@FZnj(x;BGgHJOOT83SlMpma?FW_dpp^;+f4 zNyydd2}cQ-MLvs!+2a+_=S*!66al5f5ipv&g@5gXWl4A&tS@Ap^|)5l%aU(Tz|ZoX zjLO;Tu+}fY6Gq1c{&IT}P;tkj(RZ5>#YX)yzPx`cm38V9P55tZ{>AG z!P2D&=p9|*&GC}e7wjb?8x@Zd&>|BX^?yeDm~Y1UR)cK&5|OVsJ+KHUo!bLOGbChr z!>CvE_LO-0gi)pgbR28{)rhKBgQTnT{LvgadMi#+6wHuu);K}ym+d7bDy#9MW!nL_ zpl6Kc#PPm|o&7eX2q+zkfTQ2+d(Za~^)jQmX1pE{MX{sj&+>BK{Za|2iL0fD5r43k zQvUex9=+gfOWCttMhW`U`pe79KUaEyudlCv5B|esdw)+3>5dv5CF$v+;Cp>pqq99; zO?RE$a+U{FG%Vd))uPw}h=~mnic`2=O$pZkC7!GJL}^XBv1jK&w8fsf-bqimU(R|zF9{LRHHpa(3#1An3n0&M$Vc9wkP1=;1(%}ghoj=yfKi397Lv${-(M$wcUer5k26;ViJK!u5ihqF8wW8n>BtskA ze|3_E%`)X}|6>Wr&Y->p>)GvpB}hVzhLNs8z){aO>Ip3pqU`S|UtTnS9`e9m60#o7 zOFnNOaP~i;2q--#0Z03OvxwNp{j7X@77<6u7xjRMgrjc@M&FJbomEp&uyjrj*hw;u z&Y+Fj3!@}N8A!buSAU}f%!-P$G9o-=)QboxT_y_dfEa8$QUm+5vpr_blQEls$P0Q& z$r7)D=PuQoCl5bW9LJT60nd&Lgb5X7w!4*l3xUr zuH^v>AX8KpDLbfJ*{vE$K(F`9BB7UHqwRX^^_8UODFRB5SAU&&j2f(G&FB+t->Vbu zQ3eUU(X;m*j#2WdFIc*!2V|pSR8RF5gm;XRFWL@xZxTk&Gu88nfYN26;AnJQ$?e$V zqq0vTAWIT2`9`&Lp!FTz{- znkh5moWJ_QEahwV%FN?`exBuHSuLgfd(?+^HeGE3>q9@o{{d`1xFf;E87lw)002ov JPDHLkV1f?3;(P!A diff --git a/packages/SystemUI/res/drawable-xhdpi/heads_up_window_bg.9.png b/packages/SystemUI/res/drawable-xhdpi/heads_up_window_bg.9.png deleted file mode 100644 index 42e5593f8206ce4d60571ccbf67b4ec813a42a63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmV;$13LVPP)G9IM4p48z9P;xig}Lcnz*rV@1;VHN_* zjw>>hf;gaU_qTHyz=oAdfl}Pz#W95CXDF2r<~Z+bKnL}&bYgVa{jvaC&U;(CI&i3% ziC99IX1ln@1Y8yUtx=*#0*rysHiBG4oS{-mp&fwsAQUR~u|At9JfMwi70PAN2@mK& zDycZklpOwnTPHFfx)uUmPGdm4UO_1!?I&B>r7+u> zIJXDmUhcVH4W>oxdK^zTGrPUKy!`y1i@ev@*B_2r2h29qG_0Cg%>ye{Z#vUrV*iB2 zYkTeibHPH(kvg)v_1tWu*tvk4eLL;@+1|h|l-AMx@TI(;_GV_kPx}SOZ*a{WlFJU@ z2rOfY7hk0_16Uy)X}zbE zK}{e9Kvm4smd?sojeEOeoG7YOBeao}omGjIl;a6=2c0Ydrsb_p2zL%Oy00000NkvXXu0mjf&Dyz` diff --git a/packages/SystemUI/res/drawable-xxhdpi/heads_up_window_bg.9.png b/packages/SystemUI/res/drawable-xxhdpi/heads_up_window_bg.9.png deleted file mode 100644 index 586a7385993f0aefc49018bad98dc87b68a13f92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2028 zcmV-P)003wR1^@s6c69sn00006VoOIv00000 z008+zyMF)x010qNS#tmY3yA;#3yA?Y$;+((000McNliru-3T5J2rByg%HIG02YE?E zK~#9!?VZhz<2De4Ny*s+0WuGnXUdb#9)g{W$XsSHfUvz)-E7*HRCOV!e@ph~YLaT! zB8{r=>Q%Rdmu^;EYboW=pWMS# zY%e(K{YKZ9q)* zOA-O2UNGwQye0dbIvGVHa;6Yc1e6X-z}e&*B^orHCV6W$EBmvp&(DmK5-B1LS zP7?)3dnOQx7AM&jXFVDvN6E)}zqY&H2DYm~VzSpiC0Z5%rPB})k#W@XStLWtqXhJ} z53kK?0PQ=7pJFX$ydmz)goR4#H)aK zmiI#>EP#kZQL+dq9o_?ai8$)@yyZGMI?nQb%^>3ju7{0g8z3Hfj_M1Ru0_BKqM})( zL*!eNmb1}xb`;#mI*MwWLC7cxv--M4K2a&fNrk}yg@FZnj(x;BGgHJOOT83SlM zpma?FW_dpp^;+f4Nyydd2}cQ-MLvs!+2a+_=S*!66al5f5ipv&h3$i7Nq8HqFJztd zxK`B5l5bDI&+?s&%Gv9%)-S*lM#lyIa(fX_dU^tm5-;in+340HomEDoWADglM8J*o ze$jTw?!3NEJ}>qyI(a}zQE)~Syf_KRmfq+Xk%;X9*?{NUd%r9X>MdCkDhig)Nx<2o zVZ0uY^?JX7y4Mr3?SZHV1Vy`>(+heDh{zm$ej)EC0!oMVfb1_Z>iyWL7ZJ}YZ-A(? z3Ap!w?}qn_60kW5xH!F__a9QDVWewB!CBtV+Xu{&?;Gg_EfS7;Fw5($2Kl`0jcs@R z)+ik7ep_$lbw$C_r3mO9UE$5~lGPXNB_kUZj}p)#6C3qL`zC~% zB`T}&qh;Fxx1eW?=EU*7hn@X4qzEV-i-4ow?0e7m5%n^oxn{f`5Jj=0=g;zT-u+Su zsEMnkhY_%sQvUex9=+gfOWCttMhW`U`pe79KUaEyudlCv5B|esdw)+3>5dv5CF$v+ z;Cp>pqq99;O?RE$a+U{FG%Vd))uPw}h=C($f*pn-4D9BQT3-i{WL^yB+MDZBY-{fX8|VDt8COd>Mf_X!-{~?>7rmnMl>gyH8ap+ zkgxzxR*m!C3_`4cfTJFeZ5Q;m-y!da2skYjU=M?x*G6&Y#;Dwj%b#Itk*;B zhHT$$R*#7YD4m0V(Vme}0@k1hEWiVz3<7NXUv`#!E zTu9jwN6*$P)E}>~e3^8zo;#lq>>Dhb15)Uj-y$$!5*|=q2CiteK-(@}pjm zEiF&TM!}&G&0gY(fYRX!7@a@X%0JfzKSOjbw$V%kSzgpTY6f{dZ#&>D5{iJ*wW8n> zBtskAe|3_E%`)X}|6>Wr&Y->p>)GvpB}hVzhLNs8z){aO>Ip3pqU`S|UtTnS9`e9m z60#o7OFnNOaP~i;2q--#0Z03OvxwNp{j7X@77<6u7xjRMgrjc@M&FJbomEp&uyjrj z*hw;u&Y+Fj3!@}N8A!buSEB^Xii)!`B0OZ&iwG!PCJOF=7;HOI1N*bHJ!Z|5F`IzM z3wlY(60d>hFttZS1e6X(K(7}>qh#0_yRH2@IPPMc2aWS%=R=MXu#iMT?fLMM zUj&q{m89n>0!oipop_8ItY^*W6K&tC z6Yfz43BA#?_Z^N=@~JOax~2zYqheG~^%jJ8jFK{p z*yE$JPa+^o5-<5ix6Af&>IsoVz=%im5|Zsm?w&KI%aqA`wtJ4FMlL zOXKGV=-)5?On>Mv__>L`m9M0a(ZIsmw+Dij9$44QNoG1d(-*LQQ1G^UaO=mq&o9DT z`I;#+ - - - - - diff --git a/packages/SystemUI/res/layout-sw600dp/heads_up.xml b/packages/SystemUI/res/layout-sw600dp/heads_up.xml new file mode 100644 index 0000000000000..71f7c212d4fa8 --- /dev/null +++ b/packages/SystemUI/res/layout-sw600dp/heads_up.xml @@ -0,0 +1,31 @@ + + + + + diff --git a/packages/SystemUI/res/layout/heads_up.xml b/packages/SystemUI/res/layout/heads_up.xml index 564dc51cbe661..3a58b845eb921 100644 --- a/packages/SystemUI/res/layout/heads_up.xml +++ b/packages/SystemUI/res/layout/heads_up.xml @@ -17,25 +17,11 @@ ** limitations under the License. */ --> - - - - - - + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_height="wrap_content" + android:layout_width="@dimen/notification_panel_width" + android:id="@+id/content_holder" + android:layout_marginStart="@dimen/notification_panel_margin_left" + android:background="@drawable/notification_panel_bg" + /> \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 2114991327413..f5f61f4991b7b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -855,7 +855,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { PixelFormat.TRANSLUCENT); lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; lp.gravity = Gravity.TOP; - lp.y = getStatusBarHeight(); lp.setTitle("Heads Up"); lp.packageName = mContext.getPackageName(); lp.windowAnimations = R.style.Animation_StatusBar_HeadsUp; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java index 491c35e5c6d38..f4bc4a46e2046 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java @@ -28,6 +28,7 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import com.android.systemui.ExpandHelper; +import com.android.systemui.Gefingerpoken; import com.android.systemui.R; import com.android.systemui.SwipeHelper; import com.android.systemui.statusbar.BaseStatusBar; @@ -42,13 +43,13 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. private final int mTouchSensitivityDelay; private SwipeHelper mSwipeHelper; + private EdgeSwipeHelper mEdgeSwipeHelper; private BaseStatusBar mBar; private ExpandHelper mExpandHelper; - private long mStartTouchTime; + private long mStartTouchTime; private ViewGroup mContentHolder; - private ViewGroup mContentSlider; private NotificationData.Entry mHeadsUp; @@ -72,7 +73,7 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. public boolean setNotification(NotificationData.Entry headsUp) { mHeadsUp = headsUp; - mHeadsUp.row.setExpanded(false); + mHeadsUp.row.setExpanded(true); mHeadsUp.row.setShowingPublic(false); if (mContentHolder == null) { // too soon! @@ -83,7 +84,7 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. mContentHolder.setAlpha(1f); mContentHolder.removeAllViews(); mContentHolder.addView(mHeadsUp.row); - mSwipeHelper.snapChild(mContentSlider, 1f); + mSwipeHelper.snapChild(mContentHolder, 1f); mStartTouchTime = System.currentTimeMillis() + mTouchSensitivityDelay; return true; } @@ -94,10 +95,11 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. public void setMargin(int notificationPanelMarginPx) { if (SPEW) Log.v(TAG, "setMargin() " + notificationPanelMarginPx); - if (mContentSlider != null) { - FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mContentSlider.getLayoutParams(); + if (mContentHolder != null && + mContentHolder.getLayoutParams() instanceof FrameLayout.LayoutParams) { + FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mContentHolder.getLayoutParams(); lp.setMarginStart(notificationPanelMarginPx); - mContentSlider.setLayoutParams(lp); + mContentHolder.setLayoutParams(lp); } } @@ -122,15 +124,17 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. @Override public void onAttachedToWindow() { float densityScale = getResources().getDisplayMetrics().density; - float pagingTouchSlop = ViewConfiguration.get(getContext()).getScaledPagingTouchSlop(); + final ViewConfiguration viewConfiguration = ViewConfiguration.get(getContext()); + float pagingTouchSlop = viewConfiguration.getScaledPagingTouchSlop(); + float touchSlop = viewConfiguration.getScaledTouchSlop(); mSwipeHelper = new SwipeHelper(SwipeHelper.X, this, densityScale, pagingTouchSlop); + mEdgeSwipeHelper = new EdgeSwipeHelper(touchSlop); int minHeight = getResources().getDimensionPixelSize(R.dimen.notification_row_min_height); int maxHeight = getResources().getDimensionPixelSize(R.dimen.notification_row_max_height); mExpandHelper = new ExpandHelper(getContext(), this, minHeight, maxHeight); mContentHolder = (ViewGroup) findViewById(R.id.content_holder); - mContentSlider = (ViewGroup) findViewById(R.id.content_slider); if (mHeadsUp != null) { // whoops, we're on already! @@ -144,7 +148,8 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. if (System.currentTimeMillis() < mStartTouchTime) { return true; } - return mSwipeHelper.onInterceptTouchEvent(ev) + return mEdgeSwipeHelper.onInterceptTouchEvent(ev) + || mSwipeHelper.onInterceptTouchEvent(ev) || mExpandHelper.onInterceptTouchEvent(ev) || super.onInterceptTouchEvent(ev); } @@ -157,7 +162,8 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. return false; } mBar.resetHeadsUpDecayTimer(); - return mSwipeHelper.onTouchEvent(ev) + return mEdgeSwipeHelper.onTouchEvent(ev) + || mSwipeHelper.onTouchEvent(ev) || mExpandHelper.onTouchEvent(ev) || super.onTouchEvent(ev); } @@ -226,11 +232,65 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. @Override public View getChildAtPosition(MotionEvent ev) { - return mContentSlider; + return mContentHolder; } @Override public View getChildContentView(View v) { - return mContentSlider; + return mContentHolder; + } + + private class EdgeSwipeHelper implements Gefingerpoken { + private static final boolean DEBUG_EDGE_SWIPE = false; + private final float mTouchSlop; + private boolean mConsuming; + private float mFirstY; + private float mFirstX; + + public EdgeSwipeHelper(float touchSlop) { + mTouchSlop = touchSlop; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + switch (ev.getActionMasked()) { + case MotionEvent.ACTION_DOWN: + if (DEBUG_EDGE_SWIPE) Log.d(TAG, "action down " + ev.getY()); + mFirstX = ev.getX(); + mFirstY = ev.getY(); + mConsuming = false; + break; + + case MotionEvent.ACTION_MOVE: + if (DEBUG_EDGE_SWIPE) Log.d(TAG, "action move " + ev.getY()); + final float dY = ev.getY() - mFirstY; + final float daX = Math.abs(ev.getX() - mFirstX); + final float daY = Math.abs(dY); + if (!mConsuming && (4f * daX) < daY && daY > mTouchSlop) { + if (dY > 0) { + if (DEBUG_EDGE_SWIPE) Log.d(TAG, "found an open"); + mBar.animateExpandNotificationsPanel(); + } + if (dY < 0) { + if (DEBUG_EDGE_SWIPE) Log.d(TAG, "found a close"); + mBar.onHeadsUpDismissed(); + } + mConsuming = true; + } + break; + + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + if (DEBUG_EDGE_SWIPE) Log.d(TAG, "action done" ); + mConsuming = false; + break; + } + return mConsuming; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + return mConsuming; + } } } \ No newline at end of file