From bae9bd00a32c3189b0ed3af522bbf4ad21f1b4e5 Mon Sep 17 00:00:00 2001 From: Wilhelm Fitzpatrick Date: Thu, 16 Oct 2014 22:49:50 -0700 Subject: [PATCH] Eleven: redlines for Now Playing screen Change-Id: Iad45c6ebb4f4c541a18d4914c23caae4fa8f4ed4 --- AndroidManifest.xml | 2 +- res/drawable-hdpi/btn_add_to_playlist.png | Bin 221 -> 265 bytes res/drawable-hdpi/btn_playback_browse.png | Bin 0 -> 457 bytes res/drawable-hdpi/ic_action_search.png | Bin 552 -> 16024 bytes res/drawable-mdpi/btn_add_to_playlist.png | Bin 172 -> 185 bytes res/drawable-mdpi/btn_playback_browse.png | Bin 0 -> 374 bytes res/drawable-mdpi/ic_action_search.png | Bin 434 -> 15801 bytes res/drawable-xhdpi/btn_add_to_playlist.png | Bin 207 -> 199 bytes res/drawable-xhdpi/btn_playback_browse.png | Bin 0 -> 630 bytes res/drawable-xhdpi/ic_action_search.png | Bin 727 -> 16189 bytes res/drawable-xxhdpi/btn_add_to_playlist.png | Bin 247 -> 265 bytes res/drawable-xxhdpi/btn_playback_browse.png | Bin 0 -> 927 bytes res/drawable-xxhdpi/ic_action_search.png | Bin 1065 -> 16580 bytes res/drawable/now_playing_progress.xml | 12 + res/drawable/now_playing_progress_background.xml | 12 + res/layout/activity_base.xml | 4 - res/layout/activity_player_fragment.xml | 361 ++++++++++++--------- res/layout/audio_player_header_bar.xml | 86 +++++ res/values/colors.xml | 2 + res/values/dimens.xml | 28 +- res/values/strings.xml | 2 + src/com/cyngn/eleven/ui/HeaderBar.java | 2 +- .../eleven/ui/activities/SlidingPanelActivity.java | 14 +- .../eleven/ui/fragments/AudioPlayerFragment.java | 106 +++--- .../cyngn/eleven/widgets/AudioActivityButton.java | 18 + src/com/cyngn/eleven/widgets/AudioButton.java | 39 +++ src/com/cyngn/eleven/widgets/BrowseButton.java | 19 ++ .../eleven/widgets/PlayPauseProgressButton.java | 4 +- src/com/cyngn/eleven/widgets/QueueButton.java | 19 ++ src/com/cyngn/eleven/widgets/RepeatButton.java | 43 +-- .../cyngn/eleven/widgets/RepeatingImageButton.java | 11 +- src/com/cyngn/eleven/widgets/ShuffleButton.java | 45 +-- 32 files changed, 508 insertions(+), 321 deletions(-) create mode 100644 res/drawable-hdpi/btn_playback_browse.png create mode 100644 res/drawable-mdpi/btn_playback_browse.png create mode 100644 res/drawable-xhdpi/btn_playback_browse.png create mode 100644 res/drawable-xxhdpi/btn_playback_browse.png create mode 100644 res/drawable/now_playing_progress.xml create mode 100644 res/drawable/now_playing_progress_background.xml create mode 100644 res/layout/audio_player_header_bar.xml create mode 100644 src/com/cyngn/eleven/widgets/AudioActivityButton.java create mode 100644 src/com/cyngn/eleven/widgets/AudioButton.java create mode 100644 src/com/cyngn/eleven/widgets/BrowseButton.java create mode 100644 src/com/cyngn/eleven/widgets/QueueButton.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index bfb1fef..7878448 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -20,7 +20,7 @@ diff --git a/res/drawable-hdpi/btn_add_to_playlist.png b/res/drawable-hdpi/btn_add_to_playlist.png index 604f123bedd05209b4107d31c9ac9941a4b0f041..4eefbf766bf8cd7a0f4994e09440885f7d6f87b1 100644 GIT binary patch delta 235 zcmcc1*vX{W8Q|y6%O%Cdz`(%k>ERLtq;)}OfoJkaBODNy=uQR zvZrv$Y<-)kHCtb+UkqxFS+`-I;bov?p3d@OKK@hM?=oVm)R*eVocy@j@~!BMl{G!r zrWe(uE_0kL_dIK*Ox+yEqJ&Go4rRZH(s>%8y=ZB9+A^TYe;4onIA{CqyE6Y$!KShC fN|mgNZD3^Jw3SOs+q1D4=za!IS3j3^P6ERLtq$Pk@mxB#RZaJ{}8Ia;E@Q5sCU=WxC!i;KX ztxP5=YSd?Wx;TbZ+)DcO|Gz!6uAwk<@4*$Ui^Y1P3}kc?6oc;8$vo;?TxgKRSUV|` ziS^gVmwOowDR4j1+|V%L9{1vjHWon_ow$^W6&pj29N@^R?VYv^s5#AK(E+EZ=nV-b kliYPBwk8NfGYBLwT*?mFEft%61Lzh8Pgg&ebxsLQ0CEUF?*IS* diff --git a/res/drawable-hdpi/btn_playback_browse.png b/res/drawable-hdpi/btn_playback_browse.png new file mode 100644 index 0000000000000000000000000000000000000000..1487c5df337d729b97b7750ad593f54f34f05ccf GIT binary patch literal 457 zcmV;)0XF`LP)DuC$(3RZiUvh}!BVu)!e0<%ymfVMnxLV0h)iH0s0nvF}uG+CC7NcL2=y^QAnKoj!tEPFb zwJbsKZ<~^1$jhmf$5&vKvPb<;45wTH4>rR)d$0w}fIi5tsX4m4e%?1{+5)tcN z&-Aa=jfhA8OZ8}#B3-15bp3qq)X{Xn0qa_IT%E!GPD^LzX}rRoPMxO*2w%YKiSLM+ zc>uesHjKv;-NrNXE^gz{i2bK1jYwx^5ASedC*vaGYi54L;eT}5!i}a%-u;~l z|Hdr7{N?&f9E^yyrs8pH-2W&M@d4ABIfs+@jAz>)15IXnYsmcbmiVi+I=<$Kx1Yubl^s!tuFDV^- zrQpp~O`N@;QVPyo)mDR@w)+bBDxt8!&u?xhF5?=iIkQu>)~c`s86e={B~}^qxV-@; zn5zowGT^t|OsSONE>d-_Do-9zS#B>;7KnacX~@nYIa;Gv8qL`nLypmGd{C(cHbt8# zEltv9#-L+pt#az6vMRtYi{I&DN^K8M4F{}TRh1<97>cT^tIMv_WsCkwN@F&gDOyWu zwIt|42I{>M8zjAfRS}V>j*Sm+e!(XRqE{*FvJSCE%2lc4fnu+z>+<+w19<~e>;Oe7 z$oeQvHcibI80`aA z@m6_7lC+7`(Pdg4qt9WqMv^u%G@T$4=?Q7rMW^7Zk85aXQcIU-@{5)!NXSal+Rmfq2i4RJ!9*NDG=SFA54q4>MYc3%?VNA zwZ;^A0}|`y_#&GXG-L~cli_q4y^hrwNu9xLBK0(HA{}Ojfz)$)mx(v%OlCb$pAkMo z+9q-}@_w0;b^>Xm-l%hE3`UYS=s8mFa2ZH5XV#It!=&e2dWV*FX`|8!;WMN+`2|qx zSa(7ndG;T7h*@N23{@xuzzVHTSh-;RhO60T{)y?WQHNUyS0x|o5AgDy%T+};U9617 zs+1fP-n$IT$@R?2$y00Ci-J0B36~OW=5lpR;B-DBH}BVt75&CywgfWuPxf}zm&VXtAhX1 zCW_^5+KKXik-NxloL(8D1$|~Ewa7OV45-4OBCz4=r?F5o+TyDw(!X4;rtX?Zf7(QY z7p0Lur(zTRaO}2^h)wjvvGLHacm>G{4yy1}q2`1r`MxJ|ByR?{=)5(@V9IA6xQ0er!L2&@mq5k-Cd??Wv2*B? z{1LyRPf``q!h=9S&?d%(<^y>#E(i$P#JJFWATP!R0YRG>7n%>`#ke3KXcOZ?^MSk= z7X$=tVq9oGkQd{EfS^r`3(W`eVq6dqw25({`9NNb3j%^RF)lP8$cu47K+q<}h2{f! zF)j!Q+Qhifd>}8z1pz^u7#ErkN z@?u;N5VVPLq4_{wj0*ySHZd+VAIOVwK|s(Z#)aksc`+^s2-?KB(0m{-#svXEn-~|G z59GzTARuTHiAxcG@Rs+2r)}%NW3|?hyAM2)tKlNTZ-vb1ZE?^Y6l?6v{9LTLM%lmBek-8pr=VZ!{x__Yf{JMF0A2ja$ z<+hAuuXz2TtW_U2R;(OV3w@(&7umk~>Y8s4=ci<<&#U*g7G1v0Y1XB^B(AIkdbLtpCHFt+5(o)yCFM(RxbP7g7W7it+wjsK&Neu2w&le1GU$ zoyEWTaa&_oNLP{d-m#U(HHxu;(E3-aDfRL%5Lc5QOWFGVnH`~~&c|QL?;09;XYs<* z>ZA{vzfMrQo_e1ijQ?&=vma_+$rA_1KJ5L0?Rc&o&^XlFlyrekB_;h1$tmt3eo>8>>MOQ8L z`YWz2sfSYw_Jy`|v=KM|{_;W3y{$L0Ca(})HfsL7{pj`9@duvUH`3TLpLxq}UHs&O9jT3L z_y45%FG2RNCFL#i?fc*DDgV^Dd6Hsig}M2sdv?CG>Ui6RjV&*HI_KeG{4Tv*ShUifyOzE1LcZnUKnv delta 506 zcmVwf^>WhFo-YVEc6>gG5Z zy*7+_P)+U7CcrMi*Ly>E^L7b8SnmZb0W1a{NX4zB1PRu~ z2_gZU29p-Q{Qv*|K8-d5qdc{%JYq(&Z<>#(-%MK8$n`3)o85g?+p;)$qqFy#^tbjO z`?x@VXWF8vF)tT8+GZJU&04OzShp+CfQyZnfy017;RWB-b-%S*fYvd1y85}Sb4q9e E0L~OP5C8xG delta 141 zcmdnVxQ5ZJGr-TCmrII^fq{Y7)59eQNDBb590wbaRQ)+m5J+(rctjR6FmMZlFeAgP zIT8~UHT*0+T^vIyZYBNs|KFZjwW07z!^6A-bte0i&0KwWM4A#47&HXF2QRo^IHToY nhLhBpjRsiZvMFN@)Nim_!4!5i$Opf4xK4V1_K> zD?a1HOTMj_1odMKKQin~yN52D@fwz^C{0=L&@=W2+~FKsn8I9@;G&MPgCm?o#6>R2 zdes^C;2urvN5r3Yr==b6bwuoTTH{(t|EH>Ezvh+nYT$a6!BR>S7{#am0!}IQVH-2K z2WnM=Yq`OS+W6PPC=E_2HL;q1;YVB*-uLF+UDRpY&6QI6j$e5N4xz8;6A_QtFPP7; z)JeuaTiAMA*uG&N)A)^ph`8(oe2d{0^(k07*qoM6N<$g3~dq8~^|S literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_action_search.png b/res/drawable-mdpi/ic_action_search.png index a920e5088f7dbfaf4f5259dc3e0589e0f4e65af4..a0b7b564f2bf411ce1b9fb1d3a9f0ac47ffe7033 100644 GIT binary patch literal 15801 zcmeI3d2AF_7{I6YpcdVn_1;G3?kfuGfjcCUe7rzTrhm=ra2n*FYz z9(ZU5MP2f+-qUOKhA)>@Bkoc(BLZCMcoNR0sKCN>Qc+g{i;jRkJ<-Ssljo zg%sw)$!5^6w~nMh_egt>Ipat*m%Myih!{C+>ji<~I3a0Y7*CoCn+Cd@fGCj~zt zV5%uSY3W9Sw*4v*W58-;7&}n$mETu9Sqzjg^Xwo+F0CXv!Nqgsj5M`qlN?CJvP;uc z4#YqlBrFr!31#h){f1?j{l+9Ai|R=O!<>Y}#n@%n8;_R_ZCWjZ5J4VkSxd8LI0?8e zU>XA{6|@Y(t;{L6drOa&k~7Yet(kP~AgxbgW@~b0*;2@5C;;~=H>ZGN8L1w_hy`<1 z)=@x6H#cXiik=r%R6SvHogd&(qf*98{y<2vK+vv8miMu4zDIP+o(5U;vbCaln5N9Dr$&33bH zuzLJxK@rolT`8%gOkkh6My7D+ifyderEHt**_9R5?q@;OJ`z9+aN|Zx%PLyt&Gd;0 zJUPla{|@uXV+{3!1nxlPTxDlX?!+{r){v3{O?|K?PVThl{Ejz70|Yqx3J}x(fmE2v z;9pDxFQ`!o0M;u;VYzFfpH(~_537h;q(N2Pu;jgkME}7=6uXk>llg{1XZtr3QL1FM zUrF=T^M!*CENXk z05@T*R5iKzy>>T^4P@tgMIOF5!T!vfI@PG@3cRUPjhdD$mnU>9DCVOf!wxI^t|xav z?uIw$AlM*DZYjW_!>C1vo(8erkPfe$rhPqd!+m9KP(@k86%IqV#FC*ykvGhx%5f{5 z?V!0)c%u&gBXGq(2@{%Y@hbFp{wVF}@AQiJB0&%!c#+`3^Fg!(7Xkz?5?pvbh?d|& zfZ#=f3(p795?lxnyhw22`5;=q>8v$jLR3UYxAm@<7Y_^Fm+jy5ha6JFCS- zGdEPQ57%r8J$lx&%Q{}V?7&UymJd|=D(`MSWnQJ1IWC;Fy=mLeUB_#zwR7oj#&%L$ znd1kmYt9~BKTWTnw_*3=@fnrhuT@v>*|Ou@yLNSszIN+^kEb*qYC3wy4Ku&kH+<37 zOy~a09^Z{kp%*LW57%S{AFO)+hF1<<)BZ_orV@qx4*l0?B>kob@3zb zELi^Jm9w8)ckap;mc8}qlJ^ep-?ZTLtEnUESHHcyVPAOh<8wx5-#K;fky~3v_}X9l zwtsuDbJ{JNp1XY7V<%FX%Rb&S{^E>_P%;{%b iKigMz$Ey96)VoI?eY0Z4HBtNF>b92l&{K<7-t;?p=~I&c delta 387 zcmV-}0et?sd$I$NIDY^cbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zKS@MERCwC#SJ4f^AP{X`Kt^DMZeT}ngpSY=>IRO`5p;u&fE(ZjbOJn*GeJDzK&yWA zl9!a0@WSIBcdf0p)h}XG{U}!Azawq|BVYo!Y&7_M1jr(0mw(j}G=RybV+4rAS`SE( z8p{s_kX+*Wg^wGQavQwA0<e>F{M(6@@ha!%b1q#1F$cZz`)h zVjPoB0S?~S$-ghLlMK#uVwhu$tidMUdC!{ZN=^7an|S`f#bio|RbVSl$jBN+#4b^K z2Jw(fOr^Rc?0nHgtkDtnE50&Ef_w=4DT#S5`ge#0-n}J}QYcv@79~$fB2eO3mC`7$ z$swM;qLs?J(t2A&Z(lYM6*Ycf33^Blb^9Gd8%;r h`U|rXFBLZd1^{vFA9gZ?Ey4f*002ovPDHLkV1jWwt?B>( diff --git a/res/drawable-xhdpi/btn_add_to_playlist.png b/res/drawable-xhdpi/btn_add_to_playlist.png index 63b3da88e678ae228b7002297da23197d46db0f7..7c3a5ab6e449f3b1d98d7339b5e51d22a9703a80 100644 GIT binary patch delta 168 zcmX@lc$`tOGr-TCmrII^fq{Y7)59eQNZWug2OE&I`g5~rqM1frrl*TzNX4x;H!kuv zDDXHOyp}q%GxIguhlLY5%DFFyduH?i6*ruSWe*LN=bLo1>`dX`x7^%fIuRQZ4mPpY zCvTmzw)=Ej-G;VZmzr3C;yJP)*KS~x9OOj+`K}it{e}R;+lah_i*eS_IA&bdM z7NbTf$1If0l#r%I!{WZmg1R$v@7&kze0T5LdC$4ud(L^zInN=J$z(E_OeT}53vFfp zfhna0Sd4zG!7=nl#K3IotCU!D5B6gK>(PgADlqX(NNTm+qGWebMw4XnGfjM2Ze z%TmD?jNvuj;Zm7y||;AitU@_s99coTPwGlBAim%ikEd5Bp>kst7|NKW!~p-N@)e2 z)MH9S#1t+TkAF+`{C@WW`yyhj8A0o;>TQBLN#Dm_jAQZ-(eL<#QxP#35hKkCTBqwB zK_lX6N@*E36+5eGj7P+18KQK@49Y&5f%G&+G>Ewj>033H8^P7GY;b0s+)gPiErQnO ze-!zO2N7|+OxxEvW%E-?J;nNaLiKXHqMBqM!f-^qmC0l>nM@{=$z)oBU-uq?auRA# Q{r~^~07*qoM6N<$f;o*T2mk;8 literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/ic_action_search.png b/res/drawable-xhdpi/ic_action_search.png index c631b1deb885eeae87408f110fd233c98f11dd5d..6d50c315d40bd2b754f861a7267e9f813fd2e980 100644 GIT binary patch literal 16189 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 b+Z4!7$KtxS48H|zCZr&5xutpWhVB0Xv6Ky< delta 683 zcmV;c0#yCIe%A$%IDY^cbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! zWJyFpRCwC#n$c~8Kn#YHs_$Wg+z4zCxk0h4nE|h? zm)2|V#BJfh94MS=WqfK%EoR#f&d-*8s|Yt#{wU%e-gj@W4!RJn-t#1i2E+BDr2w76Z1odS- zA;ildJ5%BX$$!$A^wa<`CT2pEH02vu5nxk?g<#ORZ(wXe8N*^qAG=JIr6GwpgN(SE zhRi%=4Xiqxf;RTqi79^?ki0(2d;w>O^l)}Ovj9#8J}a1ujS954uL29c!$zROGLpL- zM?4W&=GaOccQ3%)EnJ%*ccFnRkHACmetjM3p(<+2rGJl|YHP|mSb=Ng>E?)5kAdAu z15=A`E!@qdNUv=|^utC7IwcGibO>NgXw-|5ZJZ{+nviqpk^o)9SVkeBC2>}L3OScn zAXC&r{?fTmQt-Rogj91tIw{dHZ3-E4v+`>!&{JyZ3bgm?8TcE~Y0>8427Or?v`e>C z!SOyb!GE+5??W7#Df^`kSElz@rJDG6x(ReYd_TWFf*#k%MR+S+dk4**1nqKNO112+ zy`#2x8jde-_V)Sj1{0ipr{@mL4(;PebM?uT}_UK R&dmS-002ovPDHLkV1jHOL`VPt diff --git a/res/drawable-xxhdpi/btn_add_to_playlist.png b/res/drawable-xxhdpi/btn_add_to_playlist.png index ed398495048b2f7f476df8af38842a334fa2f7d9..8290f78a597bd9f8bab8cb1e747eff35d894c54e 100644 GIT binary patch delta 235 zcmey)*vX{W8Q|y6%O%Cdz`(%k>ERLtq@zHXgAGVptZ-zSXr@uW+SA1`q~g|_+ZzQN z6a*L??`^bMb9mMo=U<19uyGW`-R}LyHlL&P z!>=t1#k-?2779Xei&#`fibG+5dlESX&#}Z}$3Wqh#)D0idW@6w|_1w~U3Y z&jfGU7uh(ru?cUSeQ_HfSPMuSNDhbvt(Ly|-(=p;0kN22(@qu%hHI_-f~t?c>Vw2Q MUHx3vIVCg!02e@55C8xG literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^20$Fe!3HG%EZ5`@b$Fg&={e})B#4`kMz5lmn>Ud_L}h(kCJB<1Pq=d#Wzp$PynQ9xh- diff --git a/res/drawable-xxhdpi/btn_playback_browse.png b/res/drawable-xxhdpi/btn_playback_browse.png new file mode 100644 index 0000000000000000000000000000000000000000..96b37c8b4d259de5479406a072e5b4582c7fe1db GIT binary patch literal 927 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 NBO*$BWNPB;{{W7S(cu69 delta 1024 zcmV+b1poWQfdQ!qkT`z;8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`? z1GY&-K~#9!?40d!+b|4|xk8^NxF);o&jR}H!($g9Zq-D_>G6?93{usjiGN&>cT z(5XQl<)_x&wSa$46><`u?F+P`fyYNoetPF6`gnm~V`Z1VK(`LFivtau&3|SIh1QCu zi))7jr-(B3GoT%HGuTP5wYF@t(%M?KyZ2x-TU~!ZX+2sPyQ61a+pjI#uPzPrmTBP8 z!HeJ1QftTTM=K55B}OY+SI8Ohu?m!}DHe;D8YEVkO`5EnVK3nl114Wn|LLuW^2$?Hg>Y-z9f^wh)L0U}m^L=j8 zCefi!me0-20%PszaoVj?1zj>dD;DTe0DDA1E5>(Y?r?Mg>`Bt2pCT`d&P_(DYw&1@ z<6sB@Xn=nP=s<%^8QHedvpvarbRH=yOyxz3dGxrN7DLPnUR{Gnzs&qz9SJmNNw!NF z^xV#^r4oWS^ZdCl*erS-QwGghwAn`R<~)EMPU5n|a%31JRV7r=zin>6zDR`*7tjXW z+%?~j8?)1p(Pr~EXl2*Rg?2K=-3*n;7MA$VkFrO@;>9&;>lN*dU#vA!A=?n?^aY-Vp9$#UZvzCbc{y#gS|A2TDZaiaMU74UuC;y zUE$gBH%>GwX(vfhISCO}=I>0*qjc8lv*O=${PzW|T#CZ>eTD_Fg+K$gAZWlA1f9{~ zwav_MTx;TL11RBytiyK9BiR^q|4zR+rvkV!@NGpgoUGb0f2vWx+@vj zS&S@+GQ5q&A)hJS9Tmj;Uib + + + + diff --git a/res/drawable/now_playing_progress_background.xml b/res/drawable/now_playing_progress_background.xml new file mode 100644 index 0000000..2aae94c --- /dev/null +++ b/res/drawable/now_playing_progress_background.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/res/layout/activity_base.xml b/res/layout/activity_base.xml index 9513a66..78c913c 100644 --- a/res/layout/activity_base.xml +++ b/res/layout/activity_base.xml @@ -67,10 +67,6 @@ - - - + android:layout_height="match_parent" + android:orientation="vertical"> - + + + android:layout_height="match_parent" /> + + + - - - + - - - - - - - + android:layout_height="match_parent" + android:layout_gravity="center" + android:contentDescription="@string/accessibility_play" + android:focusable="true" + android:scaleType="centerCrop" + android:src="@drawable/btn_playback_play_med" /> + + + + + + + + + + - - - + android:textSize="@dimen/audio_player_time_text_size" + android:textStyle="bold"/> + + + + + + + + + + + + + + - - - + android:layout_width="wrap_content" + android:layout_height="fill_parent" + android:layout_toRightOf="@id/playPauseProgressButton"> - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - \ No newline at end of file + + + \ No newline at end of file diff --git a/res/layout/audio_player_header_bar.xml b/res/layout/audio_player_header_bar.xml new file mode 100644 index 0000000..3ce250e --- /dev/null +++ b/res/layout/audio_player_header_bar.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/values/colors.xml b/res/values/colors.xml index 4c8b9c6..5ec19c6 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -104,4 +104,6 @@ #ff231f20 @color/white + + #40ffffff diff --git a/res/values/dimens.xml b/res/values/dimens.xml index da8b015..e3b9539 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -109,14 +109,16 @@ 40.0dip - 30.0dip - 30.0dip - 80.0dip - 80.0dip + 34.0dip + 34.0dip + 17.0dip + 100.0dip + 100.0dip 26.0dip 30.0dip 83.0dip 26.0dip + 16dp 36.0dip @@ -124,8 +126,13 @@ 14sp - 6.0dip - 12sp + 3.0dip + @dimen/text_size_micro + + 86.0dip + 1.0dip + 8.0dip + 8.0dip 250.0dip @@ -159,18 +166,23 @@ 8.0dip - 26.0dip + 20.0dip 0.0dip + 50.0dip 30.0dip 30.0dip - 30.0dip + 24.0dip 30.0dip 30.0dip 30.0dip 5.0dip 10.0dip + 16.0dp + 8.0dp + 8.0dp + 6.0dp 50dp diff --git a/res/values/strings.xml b/res/values/strings.xml index 9ca8ab1..864ba9b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -119,6 +119,8 @@ Repeat Repeat all Repeat one + Open Queue + Browse Music \'%s\' set as ringtone diff --git a/src/com/cyngn/eleven/ui/HeaderBar.java b/src/com/cyngn/eleven/ui/HeaderBar.java index a0c4098..c8d1433 100644 --- a/src/com/cyngn/eleven/ui/HeaderBar.java +++ b/src/com/cyngn/eleven/ui/HeaderBar.java @@ -172,7 +172,7 @@ public class HeaderBar extends LinearLayout implements View.OnClickListener, } /** - * @param text set the title text + * @param resId set the title text */ public void setTitleText(int resId) { mTitleText.setText(resId); diff --git a/src/com/cyngn/eleven/ui/activities/SlidingPanelActivity.java b/src/com/cyngn/eleven/ui/activities/SlidingPanelActivity.java index 6840fad..2cddd34 100644 --- a/src/com/cyngn/eleven/ui/activities/SlidingPanelActivity.java +++ b/src/com/cyngn/eleven/ui/activities/SlidingPanelActivity.java @@ -16,7 +16,6 @@ import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.view.View; -import android.view.ViewStub; import android.widget.LinearLayout; import com.cyngn.eleven.R; @@ -36,7 +35,7 @@ import com.cyngn.eleven.widgets.BlurScrimImage; */ public class SlidingPanelActivity extends BaseActivity { - enum Panel { + public enum Panel { Browse, MusicPlayer, Queue, @@ -44,7 +43,6 @@ public class SlidingPanelActivity extends BaseActivity { } private SlidingUpPanelLayout mFirstPanel; - private HeaderBar mFirstHeaderBar; private SlidingUpPanelLayout mSecondPanel; protected Panel mTargetNavigatePanel; @@ -122,9 +120,7 @@ public class SlidingPanelActivity extends BaseActivity { } }); - // setup the header bar - mFirstHeaderBar = setupHeaderBar(R.id.firstHeaderBar, R.string.page_now_playing, - R.drawable.btn_queue_icon, mShowQueue, mShowBrowse); + } private void setupSecondPanel() { @@ -203,7 +199,7 @@ public class SlidingPanelActivity extends BaseActivity { showPanel(Panel.MusicPlayer); } - protected void showPanel(Panel panel) { + public void showPanel(Panel panel) { // TODO: Add ability to do this instantaneously as opposed to animate switch (panel) { case Browse: @@ -249,7 +245,6 @@ public class SlidingPanelActivity extends BaseActivity { public void clearMetaInfo() { super.clearMetaInfo(); mBlurScrimImage.transitionToDefaultState(); - mFirstHeaderBar.setTitleText(""); } @Override @@ -258,9 +253,6 @@ public class SlidingPanelActivity extends BaseActivity { // load the blurred image mBlurScrimImage.loadBlurImage(ApolloUtils.getImageFetcher(this)); - - // Set the artist name - mFirstHeaderBar.setTitleText(MusicUtils.getArtistName()); } protected AudioPlayerFragment getAudioPlayerFragment() { diff --git a/src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java b/src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java index 87ce56c..b5aa0f0 100644 --- a/src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java +++ b/src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java @@ -15,6 +15,9 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Message; +import android.provider.MediaStore.Audio.Albums; +import android.provider.MediaStore.Audio.Artists; +import android.provider.MediaStore.Audio.Playlists; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.util.Log; @@ -28,10 +31,6 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.PopupMenu; import android.widget.TextView; - -import android.provider.MediaStore.Audio.Playlists; -import android.provider.MediaStore.Audio.Albums; -import android.provider.MediaStore.Audio.Artists; import com.cyngn.eleven.MusicPlaybackService; import com.cyngn.eleven.R; import com.cyngn.eleven.adapters.AlbumArtPagerAdapter; @@ -44,7 +43,9 @@ import com.cyngn.eleven.menu.FragmentMenuItems; import com.cyngn.eleven.utils.ApolloUtils; import com.cyngn.eleven.utils.MusicUtils; import com.cyngn.eleven.utils.NavUtils; +import com.cyngn.eleven.widgets.BrowseButton; import com.cyngn.eleven.widgets.PlayPauseProgressButton; +import com.cyngn.eleven.widgets.QueueButton; import com.cyngn.eleven.widgets.RepeatButton; import com.cyngn.eleven.widgets.RepeatingImageButton; import com.cyngn.eleven.widgets.ShuffleButton; @@ -65,6 +66,16 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { // fragment view private ViewGroup mRootView; + // Header views + private TextView mSongTitle; + private TextView mArtistName; + + // Playlist Button + private ImageView mAddToPlaylistButton; + + // Menu Button + private ImageView mMenuButton; + // Message to refresh the time private static final int REFRESH_TIME = 1; @@ -86,14 +97,8 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { // Next button private RepeatingImageButton mNextButton; - // Playlist button - private ImageView mAddToPlaylistButton; - - // Menu button - private ImageView mMenuButton; - - // Track name - private TextView mTrackName; + private BrowseButton mBrowseButton; + private QueueButton mQueueButton; // Album art ListView private ViewPager mAlbumArtViewPager; @@ -158,6 +163,10 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { final Bundle savedInstanceState) { // The View for the fragment's UI mRootView = (ViewGroup) inflater.inflate(R.layout.activity_player_fragment, null); + + // Header title values + initHeaderBar(); + initPlaybackControls(); return mRootView; } @@ -255,27 +264,27 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { } /** - * Initializes the items in the now playing screen + * Initializes the header bar */ - @SuppressWarnings("deprecation") - private void initPlaybackControls() { - // Play and pause button - mPlayPauseProgressButton = (PlayPauseProgressButton)mRootView.findViewById(R.id.playPauseProgressButton); - // Shuffle button - mShuffleButton = (ShuffleButton)mRootView.findViewById(R.id.action_button_shuffle); - // Repeat button - mRepeatButton = (RepeatButton)mRootView.findViewById(R.id.action_button_repeat); - // Previous button - mPreviousButton = (RepeatingImageButton)mRootView.findViewById(R.id.action_button_previous); - // Next button - mNextButton = (RepeatingImageButton)mRootView.findViewById(R.id.action_button_next); - // Track name - mTrackName = (TextView)mRootView.findViewById(R.id.audio_player_track_name); - mTrackName.setSelected(true); - mTrackName.setOnClickListener(mOpenAlbumProfile); + private void initHeaderBar() { + // Title text + mSongTitle = (TextView) mRootView.findViewById(R.id.header_bar_song_title); + mArtistName = (TextView) mRootView.findViewById(R.id.header_bar_artist_title); + + // Buttons + // Search Button + View v = mRootView.findViewById(R.id.header_bar_search_button); + v.setBackground(new HoloSelector(getActivity())); + v.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + NavUtils.openSearch(getActivity(), ""); + } + }); + // Add to Playlist Button // Setup the playlist button - add a click listener to show the context - mAddToPlaylistButton = (ImageView)mRootView.findViewById(R.id.action_button_add_to_playlist); + mAddToPlaylistButton = (ImageView) mRootView.findViewById(R.id.header_bar_add_button); mAddToPlaylistButton.setBackground(new HoloSelector(getActivity())); // Create the context menu when requested @@ -297,8 +306,9 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { } }); + // Add the menu button // menu button - mMenuButton = (ImageView)mRootView.findViewById(R.id.action_button_menu); + mMenuButton = (ImageView) mRootView.findViewById(R.id.header_bar_menu_button); mMenuButton.setBackground(new HoloSelector(getActivity())); mMenuButton.setOnClickListener(new View.OnClickListener() { @Override @@ -306,7 +316,21 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { showPopupMenu(); } }); + } + /** + * Initializes the items in the now playing screen + */ + private void initPlaybackControls() { + mPlayPauseProgressButton = (PlayPauseProgressButton)mRootView.findViewById(R.id.playPauseProgressButton); + mShuffleButton = (ShuffleButton)mRootView.findViewById(R.id.action_button_shuffle); + mRepeatButton = (RepeatButton)mRootView.findViewById(R.id.action_button_repeat); + mPreviousButton = (RepeatingImageButton)mRootView.findViewById(R.id.action_button_previous); + mNextButton = (RepeatingImageButton)mRootView.findViewById(R.id.action_button_next); + mBrowseButton = (BrowseButton)mRootView.findViewById(R.id.action_button_browse); + mBrowseButton.setActivity(getActivity()); + mQueueButton = (QueueButton)mRootView.findViewById(R.id.action_button_queue); + mQueueButton.setActivity(getActivity()); // Album art view pager mAlbumArtViewPager = (ViewPager)mRootView.findViewById(R.id.audio_player_album_art_viewpager); @@ -341,9 +365,9 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { // Total time mTotalTime = (TextView)mRootView.findViewById(R.id.audio_player_total_time); - // Set the repeat listner for the previous button + // Set the repeat listener for the previous button mPreviousButton.setRepeatListener(mRewindListener); - // Set the repeat listner for the next button + // Set the repeat listener for the next button mNextButton.setRepeatListener(mFastForwardListener); mPlayPauseProgressButton.enableAndShow(); @@ -354,7 +378,8 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { */ private void updateNowPlayingInfo() { // Set the track name - mTrackName.setText(MusicUtils.getTrackName()); + mSongTitle.setText(MusicUtils.getTrackName()); + mArtistName.setText(MusicUtils.getArtistName()); // Set the total time String totalTime = MusicUtils.makeShortTimeString(getActivity(), MusicUtils.duration() / 1000); @@ -592,7 +617,6 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { final long pos = mPosOverride < 0 ? MusicUtils.position() : mPosOverride; if (pos >= 0 && MusicUtils.duration() > 0) { refreshCurrentTimeText(pos); - final int progress = (int)(1000 * pos / MusicUtils.duration()); if (mFromTouch) { return 500; @@ -652,18 +676,6 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { } }; - /** - * Opens to the current album profile - */ - private final View.OnClickListener mOpenAlbumProfile = new View.OnClickListener() { - - @Override - public void onClick(final View v) { - NavUtils.openAlbumProfile(getActivity(), MusicUtils.getAlbumName(), - MusicUtils.getArtistName(), MusicUtils.getCurrentAlbumId()); - } - }; - public void showPopupMenu() { // create the popup menu if (mPopupMenu == null) { diff --git a/src/com/cyngn/eleven/widgets/AudioActivityButton.java b/src/com/cyngn/eleven/widgets/AudioActivityButton.java new file mode 100644 index 0000000..bab45aa --- /dev/null +++ b/src/com/cyngn/eleven/widgets/AudioActivityButton.java @@ -0,0 +1,18 @@ +package com.cyngn.eleven.widgets; +import android.content.Context; +import android.support.v4.app.FragmentActivity; +import android.util.AttributeSet; + +import com.cyngn.eleven.ui.activities.SlidingPanelActivity; + +public abstract class AudioActivityButton extends AudioButton { + protected SlidingPanelActivity mActivity; + + public AudioActivityButton(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public void setActivity(FragmentActivity activity) { + mActivity = (SlidingPanelActivity)activity; + } +} \ No newline at end of file diff --git a/src/com/cyngn/eleven/widgets/AudioButton.java b/src/com/cyngn/eleven/widgets/AudioButton.java new file mode 100644 index 0000000..42bf013 --- /dev/null +++ b/src/com/cyngn/eleven/widgets/AudioButton.java @@ -0,0 +1,39 @@ +package com.cyngn.eleven.widgets; + +import android.content.Context; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.View.OnLongClickListener; +import android.widget.ImageButton; + +import com.cyngn.eleven.utils.ApolloUtils; +import com.cyngn.eleven.widgets.theme.HoloSelector; + +public abstract class AudioButton extends ImageButton implements OnClickListener, OnLongClickListener { + public static float ACTIVE_ALPHA = 1.0f; + public static float INACTIVE_ALPHA = 0.4f; + + @SuppressWarnings("deprecation") + public AudioButton(final Context context, final AttributeSet attrs) { + super(context, attrs); + // Theme the selector + setPadding(0, 0, 0, 0); + setBackgroundDrawable(new HoloSelector(context)); + // Control playback (cycle shuffle) + setOnClickListener(this); + // Show the cheat sheet + setOnLongClickListener(this); + } + + @Override + public boolean onLongClick(final View view) { + if (TextUtils.isEmpty(view.getContentDescription())) { + return false; + } else { + ApolloUtils.showCheatSheet(view); + return true; + } + } +} \ No newline at end of file diff --git a/src/com/cyngn/eleven/widgets/BrowseButton.java b/src/com/cyngn/eleven/widgets/BrowseButton.java new file mode 100644 index 0000000..825f841 --- /dev/null +++ b/src/com/cyngn/eleven/widgets/BrowseButton.java @@ -0,0 +1,19 @@ +package com.cyngn.eleven.widgets; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +import com.cyngn.eleven.ui.activities.SlidingPanelActivity; + +public class BrowseButton extends AudioActivityButton { + + public BrowseButton(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void onClick(View view) { + mActivity.showPanel(SlidingPanelActivity.Panel.Browse); + } +} \ No newline at end of file diff --git a/src/com/cyngn/eleven/widgets/PlayPauseProgressButton.java b/src/com/cyngn/eleven/widgets/PlayPauseProgressButton.java index f50d340..05d57cc 100644 --- a/src/com/cyngn/eleven/widgets/PlayPauseProgressButton.java +++ b/src/com/cyngn/eleven/widgets/PlayPauseProgressButton.java @@ -5,6 +5,7 @@ package com.cyngn.eleven.widgets; import android.content.Context; import android.util.AttributeSet; +import android.util.Log; import android.widget.FrameLayout; import android.widget.ProgressBar; @@ -49,7 +50,8 @@ public class PlayPauseProgressButton extends FrameLayout { // Make the play pause button size dependent on the container size int horizontalPadding = getMeasuredWidth() / 4; int verticalPadding = getMeasuredHeight() / 4; - mPlayPauseButton.setPadding(horizontalPadding, horizontalPadding, + mPlayPauseButton.setPadding( + horizontalPadding, horizontalPadding, verticalPadding, verticalPadding); // rotate the progress bar 90 degrees counter clockwise so that the diff --git a/src/com/cyngn/eleven/widgets/QueueButton.java b/src/com/cyngn/eleven/widgets/QueueButton.java new file mode 100644 index 0000000..43404ce --- /dev/null +++ b/src/com/cyngn/eleven/widgets/QueueButton.java @@ -0,0 +1,19 @@ +package com.cyngn.eleven.widgets; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +import com.cyngn.eleven.ui.activities.SlidingPanelActivity; + +public class QueueButton extends AudioActivityButton { + + public QueueButton(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void onClick(View view) { + mActivity.showPanel(SlidingPanelActivity.Panel.Queue); + } +} \ No newline at end of file diff --git a/src/com/cyngn/eleven/widgets/RepeatButton.java b/src/com/cyngn/eleven/widgets/RepeatButton.java index 962ce06..707523b 100644 --- a/src/com/cyngn/eleven/widgets/RepeatButton.java +++ b/src/com/cyngn/eleven/widgets/RepeatButton.java @@ -12,68 +12,31 @@ package com.cyngn.eleven.widgets; import android.content.Context; -import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; -import android.view.View.OnClickListener; -import android.view.View.OnLongClickListener; import android.widget.ImageButton; import com.cyngn.eleven.MusicPlaybackService; import com.cyngn.eleven.R; -import com.cyngn.eleven.utils.ApolloUtils; import com.cyngn.eleven.utils.MusicUtils; -import com.cyngn.eleven.widgets.theme.HoloSelector; /** * A custom {@link ImageButton} that represents the "repeat" button. * * @author Andrew Neal (andrewdneal@gmail.com) */ -public class RepeatButton extends ImageButton implements OnClickListener, OnLongClickListener { - public static float ACTIVE_ALPHA = 1.0f; - public static float INACTIVE_ALPHA = 0.4f; - - /** - * @param context The {@link Context} to use - * @param attrs The attributes of the XML tag that is inflating the view. - */ - @SuppressWarnings("deprecation") +public class RepeatButton extends AudioButton { public RepeatButton(final Context context, final AttributeSet attrs) { super(context, attrs); - // Set the selector - setBackgroundDrawable(new HoloSelector(context)); - // Control playback (cycle repeat modes) - setOnClickListener(this); - // Show the cheat sheet - setOnLongClickListener(this); } - /** - * {@inheritDoc} - */ @Override public void onClick(final View v) { MusicUtils.cycleRepeat(); updateRepeatState(); } - /** - * {@inheritDoc} - */ - @Override - public boolean onLongClick(final View view) { - if (TextUtils.isEmpty(view.getContentDescription())) { - return false; - } else { - ApolloUtils.showCheatSheet(view); - return true; - } - } - - /** - * Sets the correct drawable for the repeat state. - */ + /** Sets the correct drawable for the repeat state. */ public void updateRepeatState() { switch (MusicUtils.getRepeatMode()) { case MusicPlaybackService.REPEAT_ALL: @@ -95,4 +58,4 @@ public class RepeatButton extends ImageButton implements OnClickListener, OnLong break; } } -} +} \ No newline at end of file diff --git a/src/com/cyngn/eleven/widgets/RepeatingImageButton.java b/src/com/cyngn/eleven/widgets/RepeatingImageButton.java index 0becdb4..f5440a5 100644 --- a/src/com/cyngn/eleven/widgets/RepeatingImageButton.java +++ b/src/com/cyngn/eleven/widgets/RepeatingImageButton.java @@ -32,16 +32,6 @@ import com.cyngn.eleven.widgets.theme.HoloSelector; */ public class RepeatingImageButton extends ImageButton implements OnClickListener { - /** - * Next button theme resource - */ - private static final String NEXT = "btn_playback_next"; - - /** - * Previous button theme resource - */ - private static final String PREVIOUS = "btn_playback_previous"; - private static final long sInterval = 400; private long mStartTime; @@ -58,6 +48,7 @@ public class RepeatingImageButton extends ImageButton implements OnClickListener public RepeatingImageButton(final Context context, final AttributeSet attrs) { super(context, attrs); // Theme the selector + setPadding(0, 0, 0, 0); setBackgroundDrawable(new HoloSelector(context)); setFocusable(true); setLongClickable(true); diff --git a/src/com/cyngn/eleven/widgets/ShuffleButton.java b/src/com/cyngn/eleven/widgets/ShuffleButton.java index 3efdb90..83a5200 100644 --- a/src/com/cyngn/eleven/widgets/ShuffleButton.java +++ b/src/com/cyngn/eleven/widgets/ShuffleButton.java @@ -12,66 +12,28 @@ package com.cyngn.eleven.widgets; import android.content.Context; -import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; -import android.view.View.OnClickListener; -import android.view.View.OnLongClickListener; -import android.widget.ImageButton; import com.cyngn.eleven.MusicPlaybackService; import com.cyngn.eleven.R; -import com.cyngn.eleven.utils.ApolloUtils; import com.cyngn.eleven.utils.MusicUtils; -import com.cyngn.eleven.widgets.theme.HoloSelector; /** * @author Andrew Neal (andrewdneal@gmail.com) */ -public class ShuffleButton extends ImageButton implements OnClickListener, OnLongClickListener { - public static float ACTIVE_ALPHA = 1.0f; - public static float INACTIVE_ALPHA = 0.4f; - - /** - * @param context The {@link Context} to use - * @param attrs The attributes of the XML tag that is inflating the view. - */ - @SuppressWarnings("deprecation") +public class ShuffleButton extends AudioButton { public ShuffleButton(final Context context, final AttributeSet attrs) { super(context, attrs); - // Theme the selector - setBackgroundDrawable(new HoloSelector(context)); - // Control playback (cycle shuffle) - setOnClickListener(this); - // Show the cheat sheet - setOnLongClickListener(this); } - /** - * {@inheritDoc} - */ @Override public void onClick(final View v) { MusicUtils.cycleShuffle(); updateShuffleState(); } - /** - * {@inheritDoc} - */ - @Override - public boolean onLongClick(final View view) { - if (TextUtils.isEmpty(view.getContentDescription())) { - return false; - } else { - ApolloUtils.showCheatSheet(view); - return true; - } - } - - /** - * Sets the correct drawable for the shuffle state. - */ + /** Sets the correct drawable for the shuffle state. */ public void updateShuffleState() { switch (MusicUtils.getShuffleMode()) { case MusicPlaybackService.SHUFFLE_NORMAL: @@ -90,5 +52,4 @@ public class ShuffleButton extends ImageButton implements OnClickListener, OnLon break; } } - -} +} \ No newline at end of file -- 2.11.0