From f59acac4b4d1326de9a96f23c6696521696285c1 Mon Sep 17 00:00:00 2001 From: Reed Date: Thu, 2 May 2019 19:57:37 +0800 Subject: [PATCH] Update README --- README.md | 51 +++++++++++++++++++++++++++++++++++++++++----- images/image.webp | Bin 9286 -> 0 bytes images/land.webp | Bin 0 -> 4730 bytes images/port.webp | Bin 0 -> 6958 bytes 4 files changed, 46 insertions(+), 5 deletions(-) delete mode 100644 images/image.webp create mode 100644 images/land.webp create mode 100644 images/port.webp diff --git a/README.md b/README.md index d623297..faa4593 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ -[![](https://jitpack.io/v/DeweyReed/HmsPickerView.svg)](https://jitpack.io/#DeweyReed/HmsPickerView) +[![](https://jitpack.io/v/xyz.aprildown/HmsPickerView.svg)](https://jitpack.io/#xyz.aprildown/HmsPickerView) # HmsPickerView -A beautiful little Android view to pick hours, minutes, seconds. +A beautiful little Android view to pick hours, minutes and seconds. -Screenshot +Port +Land ## Installation @@ -23,14 +24,16 @@ Step 2. Add the dependency ```Groovy dependencies { - implementation 'com.github.DeweyReed:HmsPickerView:${version}' + implementation "xyz.aprildown:HmsPickerView:${version}" } ``` -[![](https://jitpack.io/v/DeweyReed/HmsPickerView.svg)](https://jitpack.io/#DeweyReed/HmsPickerView) +[![](https://jitpack.io/v/xyz.aprildown/HmsPickerView.svg)](https://jitpack.io/#xyz.aprildown/HmsPickerView) ## Usage +In the XML: + ```XML ``` +In the code: + +```Kotlin +fun getHours(): Int +fun setHours(hours: Int) + +fun getMinutes(): Int +fun setMinutes(minutes: Int) + +fun getSeconds(): Int +fun setSeconds(seconds: Int) + +fun getTimeInMillis(): Long +fun setTimeInMillis(time: Long) + +fun setListener(l: HmsPickerView.Listener) +interface Listener { + /** + * Indicates [HmsPickerView] now has an valid input(anything except 00h 00m 00s). + * This methods can be used to allow user to go forward (such as enabling "next" button). + */ + fun onHmsPickerViewHasValidInput(hmsPickerView: HmsPickerView) + + /** + * Indicates [HmsPickerView]'s input becomes 00h 00m 00s. + * This methods can be used to prevent user from going forward(such as disabling "next" button). + */ + fun onHmsPickerViewHasNoInput(hmsPickerView: HmsPickerView) +} +``` + +### Use this view in a dialog + +1. Create a XML file like [this one](https://github.com/DeweyReed/HmsPickerView/blob/master/app/src/main/res/layout/layout_picker.xml#L1). +1. Wrap it into an AlertDialog like [this one](https://github.com/DeweyReed/HmsPickerView/blob/master/app/src/main/java/xyz/aprildown/hmspickerview/app/MainActivity.kt#L29). + +**🦄 Please star this repo if you like it 🦄** + ## License [LICENSE](./LICENSE) diff --git a/images/image.webp b/images/image.webp deleted file mode 100644 index 7ee6f181e617731db4e20d960d58e5295d5caa3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9286 zcmY**18gQh*mP~%wywR}Hm_IPwr$(CZQH%teQUeD+Is){oPU#jc9KmtGnv`lM_F1z zLVyAUL|t4&Nll51uEm;071C#}}o^YNBR((tQI|CbMv8RFI53;Z2D}tT=hF{I! zfDh-}_*dYh|0=RFko=?N3G!3%4f`ejBEQ9dQ_#vUGtYjyKl>5vdG1{Q2si``0s4L& zE={5KBNkMnnd$No{kANRPQ+3)Hf#Mi)+{(E5dzs-m1>^1klfF|P0`tN;e`Y7{P zh~rRn!GZsVj&k2$wi~;;)zS;>G2xAqY9`(Sn@`vV^bNS68xh$aNhoR)%pl)WQjJHO zcS@B5c8>`q$kxI%h5&?*rB(!YE=?wH$v4^o;T=ba_5!`m@+|&ik&Jm^cLyUpfzm0d zjR=ZSKSG>kfCZOIO_b1i85CG~8ab})oofr`F^y_Ut7R%^=y6l{v7*YB!Rs8i-NPxN zZj?LAZ+%GSa*KM-`DQD@Wk^W4;p<)8VBmFmn1pWVYP?+QGyN2W7^F8hf?A_rs8X_V zn^SNGKUPRLQHw*Uj)>Z8ue`%z0qBV3@@EHI#I^kqQ>_x@+0Rx>cg!L)3?C^Z?n6y- z6Dfl?`5!QASYh)PL8J@Jc|S#?s(JhRnaIUa3tI$#%E-T2tpoHUGe4Wf@MA>zbUC*^ z=G5LicItXOj=lQbc}FaW-Fx_ulOt*>9Ri{ND1rsCl=3(+J_Zye!DR!V`1;=4$WcdO z4gt;;*Bz!gP((4NL*)jZQ-J%)YW7992WMwzulEP9_kZ&r{!jRy>-&54>}>};UDJG< zs%fE3)s)D(swLfj)U?p1YDRcdH7yw4wecvaLYqp~G}rP%v+vz4FoSCN4#*}w+Xn?d zy={uoO>9d0zkgpZIh;tLBH1@$`&w#RkRWcF!zLlt!ApLS3YZHn!rU0QFz!C4s1gZe z3ze|SX{ghJ(}CY|b^Frq5mysxa>zAhXn%xjaEd~T^zPBgX!lQl zF!zjod?!A zBmJ-buSV*X0wL67qzToeR5LD&kfidzEJ!ukRGKsmSXai<0l5^X4w+I>77 z+xzP^l%IxXjysVxKS+D;#7G`XC^9(urKxjnI$<|=bF{u}5L)O>#YLbM$guFdzBGh} zr5<>A!}=3=LHPnIuSY{k>Vbq4&Hh@OM-`Y$zt-D#V6SRT7O6Tzbp>dp1V3-Yp4qF_ z*2(5;2MC+q7+`1onM<|0EUee^P1utd^40#wk^dCt^nddHLztG#|H}Ih z^Ma5bamA+_KhVv-TU#8QfQuqgQ#}>3RD_mv%}@+8M6iNWHwYyZnN|HLg=mW2>meeh z1H=rKa*y!rK=u$>@`9)@HTh(QKtF-GHjPZtrV0LmoeqrA(;48g*(@d;Hv0zeO}n6cv0fcO{XjbPFcIv1pS9Fp;^o)gq@RJ1ZLjpcpJ85c?)4 z&m8~5*ESLHVMSBy$D^Ssie!gtV#PK1yj4ArcY(iC^#6naNdGI5|D8qElK)EN|0pN9 zG5u$+);wCy%zv4k^x$yy&vG?&;Lxghzt#80&Dl5Ee+IkKpOo@nygN)qc4m@qcVmJ1 zvhH6LwBVm1|IV)3FF$=eo%0xl&oNT%{!YRO`R^+rH)hT+%%LaXca%^<(SqXM z^uMY4$5VD@`2X0ht0o12e18`LMsA}s1=|QR>r-4!qOa~Rtxu#nB(E6myQbA_>J?4I zN?3nUKit@sAf6HD;xha?nZNx^k+K1kEgT%K8W4`|ti2v$`dUe^S9D}*y|Bg?8SeM$c~KL>YPAW{%k2v`(Dvfwk4CN(XDE;9u@;9?6}!9 z^(qZG)rBswj(M1}4e8DFP$!U?ZRf}*#l7g#QcjI(q*pC7LSv4F zEKHaJiNrDJaUlMjGE5v9tIMJC2*Uz1sqFFp(TbF^-gZxNT{ zUXBaUisU|;7r8{~hT_s>H$H)?Mm`c+PPf>LuIz$)#n54?=7vuY>0YHK9<%pek5Cz7 z{TDf+*W*O<7%PejGugGw-7^6ZCPLT;^V(qWT#l;V`HBFcomJ)h&v8GIp7`8F#U8cd z3R7K?{lU^SRG`1)3f%d$?%ta%| zZG$R%uMhcAy7RIO<3zDmOQ5Cso?jNhX6Sn6C`lXU4xFA26Dc!_MaJWBG@Pxz;rCdp zpJA;C?;zBNz%5m5`ta@kU&UFcuWcC788{1 zcTzon*7XgUx5yp1jtr}_w)+X4;)>)wzWFk=7}hlN)n6~lFnpe<9czg2eJ_(X(x1xR zr+&fWKR;4Zow$k4mt%QL=Ed-rl+)-#QM$B!sn|%;iH|rPhnVfWuD#Ioot~57WzTkL zhH;SECl=AOi?molY_1QR+@XxaJrIK6ZRcc78wkLwMtGq;Npw8FUhHW+Xj zhyd*Mvy+eHKQpx4eMbYgw4Yhmt>L5v3|fv?+V?7wJ%q7Llyy z3Iqsq5`rx)Ku&o@?_497DsSgAEC-JnrI!dvd}Ic}kaRlYJgByTwoGKFNCD-RhWn+! zD{g2}syaJmHI7`YrI9z3s|ePh5KX~zOWu-~t9BVYX|&e8uJ!k28l{38L^kqIX0p)L z{BfiCah7&kNRz*)W>+vmd@m(P^FHKO&ugx(qt=Uwk|ulCIh4WaBObFQy?4gMvF`A< zvgmt@rfae%CPa?WH4_G_eHB<|31t}u$*|e)Uh)U9X6G#op30N?HU-iJh{{gkgG-WN zmQ9^Y*UDn6^-}L4FPM<|^g!OMuN_M^h9EMq5bk6PC>&1A%mcNn{8?De=RldJUhJ;; zqEuHiSGPE69x0eIO!BLqUzNN%sQB;AEJ;W*M%1%=J^?tLSxUWpN;B`G63Qp|>W9O` zXgOyc4`PGEr%D~U%Fs?5FI#9V@-D~a3@gZNrGtMur;_1^F@T#{fpsx4HKmQMLmZEX zQtN;0N&Bh|nRn*tm1X=!*dd5d4U>mct(ShO076o}>YUz*{}VYLnY8K>D|*G1e>hDs=by$1-yGhOaEfI0{ zQib{;!2ZY%hl1r4UPIQ;CE?R{!0!A1ku;=J+~yV>Yu`0pm=TNJjQ9ev>|HC8IB>py zw>_x*yflX@YXMccJYz*ANVuC3{=Mct5r#w$PbLnfvIvK=A~G>O!ORM( zl~(#1zlkD2OUI{4+&#BXIEtC-y4Xfw=Jyy_vYDC>YSuV*U5rgkdg~@8bYDca&~p%; z_mb%(<_N}t(TMD3hoB0= zmW~@UCr=tujlt^_*Z67FEjNF=JzJqeZ1Mh_jtbIAsibMIq(5VM(y+2{CVEf7ug6$+ z5{u-$wE=U*2LUJ6pyYeYgNTpSVdF_)Szf)d210pW_kZtn}R_0Vr-!fT@k;Ge7 zMs{$y^(}_KHdQZP&70&Y<+{CggG8p>j;zT`z$>9bxws6mM`&XlLnKUPndtuSTjgZ&hSqtz8n>9c1zWV!$ z410W^m>JGiNM2vq3`B5I=nEFP)ms(RW=eVmk}T*1|h;v@)LW$T>8exnbb z1IqpV9CIJvM<q?;J}DS0fNoLE3hhMHDPU#%3)_eZBqeUX^mvRHeDpX5Tv} zN(HD?jalS>v~YjN^^NT_8YiPW6Nx5moO|vUlhOqVOor~2T2HFx6n?UP^W+5;ElJiC zNY0I*DGs3#iO+9w4;^>lnod#`wl?K*PZZITqdd1<@S{8_n>t>keRUpxbVZ}iX)vp$ zG|D8wRN;T8D}&)$JPe;<`SojTT2NFv{*5r_S)#VT3%w6qDRTG-kG=?b_l2oGC<0(^ z{l)`*7?aAh&8q&g985RF72kGisKT}0U-7T$!;mo8+8Qu3<%Kp9@AUsz**7*r%M^B{ zCF@BN%!$bzG0P_oM2HOu`^}vPw_vuk)tL2ft78eI? z5U60a7#^W2%#qyfqkdXQq;0*W_86~ZiErw2Ah5Q7rH@M1BQ9YCDsH~Chu%(@Pmt4 zrnqZ+F<-PQUno-EN5geIeYJjLG1^Ikgio%6&5!3VawPmZY7zAf+Or!3yc``-v3^rL zB(xqN$;Yyhjh+JBwDhpxf5O#^&V+X{-^uVDhd3`khvU4u47VqpS0Cfra@%B1B5R{( zkmfF&mKoCzdZcBNYARVBaT6|OHr4V~CyAHOVqn9a7k|xJ{?L~)wC@l12Z)3+%@7^ztkTK{WKdQ=ONrdKI1{%Z0 zC3pm`@ZgP)R`tm)_&!K&TNbrjyC**uNecif&Ul%)FfQF7ItvxxRjyd4T~80+>RZ%r zOEC162+fYg&!TB4zy`G8}yx>rAKjM4V4hZax-aNn=Rs02)GQMPwY+m`SO9h*s z8I!WJv%xSg7PT?3_bI#)+v52gf+AgSdeF&RZEuRe&EpOyGJOst%rt{{2%>tk2NR-< z0-9IctiaT?LTyws89ByT9d>!b>(Z4nJRk2m)XW>+phUEJWpBfg@ei)NV|62(I-Eo5 zO;4NaU3QWxAk^wxd#Qqv2tv_QvD}x5FNZG=dPEfNd>k?s()G1189m$KMSR#$?0&Bg zj(kFUp?OTh*B77nkuBr6`CidOd;GD?KVsLtTkm4I@K~Fm$#NK!ULvTIFGnLC9OeF8 z0nWX61#f}W2S-i|T)H(o3b7kv+%L8s^dLKte8)!0b*2g!lU}^98giJrA3PG`4XteZ z(A$E9QhCKjn-bOEyQuCC&8!*-0>jQjyz|JA+m~Zpcu>~axMLjqyWXgPCeGO`mrGb&aY>H=v|MaZL})eiw0Oze&58$w*(#rayzE`%rIZlPnD^o22ejw+ zFFM(-qr^3MWKeB~Z^CH0HwK*Vv|Y^jHNMqDcLr+(%J69B&_(I9ANVw^!1Y?tuJr|? zX6A7ULJ;W}*CBe}NykXbwk2-%rQ(Do`+H^->g=8RYm_umqbV`nPCAoxUEho#90w&r ziWvjLr(&yvP_b8gUVM~|tcz4#!R}nxlnP39Iz8w??t{*yjIb9Xc%2x0QC7a--?i7t zA4uQz=;@Ak6VpP8I5^>giYseK-zgwGxb!0k5;3+NQ#j2I zmyrsptJR3zJCZT|^=__`C+R33;f8=!ny_-QdoM9bfMoIPT(4X`xcA6NR4=3U2Z-5i zbE=HRI_~}2n`KpyTW}H|#>o5*()1``HcPL>;jmJrg67)_tkRKWXTL(jK)cAn^Jo^~VTmma!mb zUlh`ZWO^kMI$`ms4AV89|KRRIs(`Wa91RKF;vXeXGY7DuQBRRoY3nMgmhk#Y-VXyK z7|GG+ZjwRf9c|Kw5Sc`NWK)`kYdX4@;R~PE3COU#wRXX*-`&35Faqhz$X6jmlV9rw zaC(2QVFXFqr-A8Qq0yY7gUA49EtU(%#ByXuEx{zqN(2^M4A|o=Nufk0Bx0O?i8sd! zygw1-7`K=b9+rnR1>c1p`S6uMU-m~e!1kiuRK@oz8In6%En8YQa)X1CgjC9FdrVZD z2)6|+)fco+LDT|%5~}vG594%NYe>Gb4xyIy=GN$6NpFRm@_=qgw?Qp3*kbPlCajg)WTNiW(l<(R=Z0Tm#{5 z^s;+*P)&41r!@Ie;$8geL1-}aBFD;xia@jN%xJCciyL=wupAtw_eFy1S%l(H=sy{mk~#_ zO`5Dn*(5ypP2-fp%9ILdIAj7E1q;254XP_CK_zu`GIiE{dLmekA*D{w%hSVj>=4}? zs>r95_9qfQ#TmQ11A73f<2yfXQT_STwZTHowuF25`&lrut5&wQ+mA=_nzbO6q*rw!6h1eh1GXwV7qawJ>b==E0{Rpt$zDS2>OQ zLUHJ2Zyxw}4_KN!U}BpA0ZJGFKb*&eO>sT3a^4>lKUR66C*k+wrk{U3Hc2Gh$eVY>Ic?uJkU2?Hlm!O;Dg( z`w*36cl!zfip#p(QnAz*TpI_^Rh)5YgqH@=Wu{+`U!fRi}SX(d5zaGJSZ-*$6fhSHT zbFT*EB}xiXjLa;$N$y0?ft48E{W_YmYjKQ0!pL4-XG4J?^(w-?-F`TPDnJ+xzX{{s zx0LNl(NyrAGrRqfRt@XGzOZgm<`Mh3XZmN=CW&d45zf}^!xEQ|zqW7Ng zP@*tLbJ3<%vUAfeEQwxF#+zjdl}DABYa3D2QIX~HCC%10bBXh%g-FM&dp?#o!riVx z`|`Im>6hOn+m=i;siK$GG0*BG;k~M=z2_Ntl~y@JM=R-)6s5ST#6n2V1_o)kjCt(2$gT0$5!z^>t|7LjeCDjA znVW*Q$4le0JMe-DoiC%n9X|gU_B}dgCW9b79B{i|;M&b69fj^3+QpsZ6ofu2{VrEu z0Rskd6=X7yv)yQS2DyJB-`4>yuOPCK3(HA&A2SvAdGWI7C8QTta>~7Mwk()#$*36{ z>Q@UfQ>=Z1r!Ql|vquj2-Am2~UV(LUybC+TtBH~d^LWR|lDYC|MN9_>r6dzvWrF)x z9PH2#PkB=Wc$jY(E7e2%X@xGheoa01b3wF%(}v$<(Su-E)#M}3F}OO!yF_#1_Sq2T znPEkqIAX`;(wjMTyg5njcJSFDobF5BY3`T~xy~)wUab1SDo9xEdc5cEW9sDu+pFRL z?;I(Y43*^+g0;TW>z}XNL8t>uH)qqMH@VEDk4l(WOGpfVGrYb~=z` zQC|Xj6SRZ*BEsOwi|NiqA zORLlm+G`(rMdT0Oer(C8C5W^(p5}ue$$d*c)uA!g5i?|7w(5_F27nQnf!;H`<_xSQ z4n_7_FXzC~`*)l@3UNpMFgkV)=Tb*!K#J^#40WrcRSC(917lQQwtbbRF4UV@E~)*B z!miICfkVs&mi+0VCP!ZW>Hs{B@Y2*i)w3TmJQoz+-}RdlW(dC0@5b0mHkf93damYu zTLxUZ9+zics1-fMorW72j)C|z#DaW?aR1P|U#O~%5wydEn!|9b>ud-%5GbBZgb6=^ zH;KTr!K|rW{lKEh4z5)LH+-=L&e9ifH0OKd4A8Uc;es~$&1IvajLG|9=43K@a&=1w zPa}vn!9HL3$f3a?XLK+wPRA4e;??<4z+Y*XFT8m;sg`S@NYESwPxg;eol)dRJ!ALH z57b<+JzI0o)XHVzMSiwt%f4MszmJ}Dlo2%KP-;mVwu?+n3-b#JIyH%2hVkAw9#IIx z$S4#U%L~?@?hu-dgAHV=4J%Vy^Lx1b(=jQ8 z^BWob{f#>0+8yeX{ysRn-w9h?a}Qv=q!Ouj6AD_rioUmFilKkoXt6w2c1t;o{xHty z{Oii6Kxx6_UGCOy9l6;bGe(&hlD+`0;=#P`GFY`YAR=70^aPqJu0rOAQ;MaHlhIyzs_uT(;h)t(paY9rrVLlh0@1r|tDoapd>H7A>6 zBtYe&4N4O@7F7HSrIYEel#E_}QTds-Vp-8zT0S#{-~;BRc={17U8vLGwWt!QR{2!$ zJbKG|U;QyolnOuL{ZebvxBNsQQwyY`@JT0PZLjdhFrOP zUA}i~ruIXrak&C&`YAwYHmM-|*2685BAiM9TCy*-K{4slN4xkP!+X`kd)0X#T0SEe z1QhCy$}}f874k`wM>N_2pEs8z|(!OayFqf)ZkPs}-JL@vTH#urWFf^E~ut33m-petpk0Ws$n$d6q88zZW z2a1LQzyR(&4b`P2q)v)T84Db-?BzpV{wj!A-uv`HR53=fp*CZG6?gjDD!SCn#0LN@ z(3yYmF)(J!IO2Lx!KRbadXU<)YAs~1AAs=s5SCeE^Gr1#Ul90i*(Tsjd%9Z;2(>5J ziIG3qo)ic7aYG$N5e5TJz6=JFs`%_UiEz!u9_f`bS(oBA$1tT@K*`7}q2YR_s@g|L z+=u^qAR}aPIaKyt$LjKsZY#TRE2{SRT=}@}q9$ZwVaEuPyZ4ab1d5`)O(kCM zaJ+_nHB%Vw_DdDac*U+}NeQnHGNS?BY zb=o_HbW1t2(7G)0UkN6VG!bYjqRrMNqhz$E<`51{&QavVCLlI6iPTKa7DD?ubzLgR zQ;^8obP&z$VVV9HwDiubiT6H81k2;L4IYuJRKGU6v*=Ax^p=k>aOQZs3yg8%ZgQ$T z*8*VoU~hy*7Plgk!${-dWJoo%SFV;Wn8QJd#(O1usWT!J*nsn%eHL{&BYBq2>@z>> z=k8hkb6Ez@x1LtcWSvZF9U;AvN^{?E4gaH?rS!MF>;!+M*3r5gQaUb)J>qOAP3c3$ z24pHE=h1R5W|F)Ho-zC3i!Fpq-y@ ZzvmNJdO{qvEHPsW%L!-Z|2g|_{68hEN#g(j diff --git a/images/land.webp b/images/land.webp new file mode 100644 index 0000000000000000000000000000000000000000..adb64872452ac1f15ef97e28812fdc9c7dbbcc53 GIT binary patch literal 4730 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 H|DyaGldpGX literal 0 HcmV?d00001 diff --git a/images/port.webp b/images/port.webp new file mode 100644 index 0000000000000000000000000000000000000000..447b15ac3815b36e4d9174a4e31b026ca0700d57 GIT binary patch literal 6958 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 x`p2Jx5~iG6$D=scz#7~$m*y1}*W<87k#