From 25fafe5bab087eedf56ad8138d5560884eb69729 Mon Sep 17 00:00:00 2001 From: panxw Date: Mon, 15 Sep 2014 19:43:21 +0800 Subject: [PATCH] refactor --- AndroidImageIndicator/.classpath | 3 +- AndroidImageIndicator/AndroidManifest.xml | 3 +- .../libs/android_volley_manager_1.02.jar | Bin 0 -> 91693 bytes .../res/layout/activity_indicator_auto.xml | 2 +- AndroidImageIndicator/res/values/strings.xml | 2 +- AndroidImageIndicator/res/values/styles.xml | 6 +- .../common/view/AutoBrocastManager.java | 182 ++++++++++++++++++ .../common/view/AutoImageIndicatorView.java | 181 ----------------- .../common/view/ImageIndicatorView.java | 83 +------- .../common/view/network/NetworkApp.java | 33 ++++ .../view/network/NetworkImageCache.java | 44 +++++ .../network/NetworkImageIndicatorView.java | 52 +++++ .../sample/AutoImageIndicatorActivity.java | 17 +- .../common/view/sample/SampleApp.java | 17 ++ 14 files changed, 352 insertions(+), 273 deletions(-) create mode 100644 AndroidImageIndicator/libs/android_volley_manager_1.02.jar create mode 100644 AndroidImageIndicator/src/com/allthelucky/common/view/AutoBrocastManager.java delete mode 100644 AndroidImageIndicator/src/com/allthelucky/common/view/AutoImageIndicatorView.java create mode 100644 AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkApp.java create mode 100644 AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkImageCache.java create mode 100644 AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkImageIndicatorView.java create mode 100644 AndroidImageIndicator/src/com/allthelucky/common/view/sample/SampleApp.java diff --git a/AndroidImageIndicator/.classpath b/AndroidImageIndicator/.classpath index a4f1e40..26bdfa6 100644 --- a/AndroidImageIndicator/.classpath +++ b/AndroidImageIndicator/.classpath @@ -3,6 +3,7 @@ - + + diff --git a/AndroidImageIndicator/AndroidManifest.xml b/AndroidImageIndicator/AndroidManifest.xml index ea05351..722e859 100644 --- a/AndroidImageIndicator/AndroidManifest.xml +++ b/AndroidImageIndicator/AndroidManifest.xml @@ -12,7 +12,8 @@ android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" - android:theme="@style/AppTheme" > + android:theme="@style/AppTheme" + android:name="com.allthelucky.common.view.sample.SampleApp" > diff --git a/AndroidImageIndicator/libs/android_volley_manager_1.02.jar b/AndroidImageIndicator/libs/android_volley_manager_1.02.jar new file mode 100644 index 0000000000000000000000000000000000000000..fc5bf97b24a99f080e4d0ae7ffba02a1ea88681d GIT binary patch literal 91693 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%0A-lcTQrk|f*nw(b&l`h=VB#ddJ%ZLw3- zrfPlQ(R}eWJ^{481?exTX3s*|U4F|*mZDNrP*PWLLtIc%R_0elzTixad`fjIYj|uK zo+oa?_WAbbwR?y*hn@nhi{y{Dfalo64LhQE-a ze4rf5RburOB|f>S;`oRe}fkQ#5NDMgbi!Xh0y;BXE~c7o8RY=Nn> zw31ATShF-|nOR(9RjjhMx|7~8IO7=orSA3&HaJDci!(Uj`?3w**PCN71I$d3;;cM> zW0Y3g-@VE(sYvHqULOjbDs%5ttYPg}O*Jp$h`9hwjdH;|g-Wd~QZ=G_2*{Svr+qo~ z%**HA4L2IUR|10~4Xl(5)09rRrvgiLNVGcRG}@OO(-I!fc7k%*{>|?I>(|DRmwvW- z%3tK@OiO1+VgD-kq<|ReY&=Y_yS=;@^ad)k6e1l!CaSS?W6J(bce9XD>bjG!9)%6N zQ5t{c1leDgsa^WOZ1EF7wLkN-l>SWNclDABHzeHSu~r1Be8WuX*jpu!07vuGdoz%W z?%v=BM)Wy0ch0VmlMAhUg9jVsw63^_IqXiQrLCg}7M+j)#Eu13H;!SP)NkQ#Aj4S@ z2h*D*04XYk5kwvTUoN?S5*r}8O11MgCLYnCCSPI8Ua6`$4e;7ZWH5*H5r&PyxtOzs zYjIL?9S&V-Uy+mCEeLkmvuf$xkOV-wrc4;deq4HrwNT|}R~7kDXE_cir&!8bmXI9M z^0!s9j{UM&vs?@L^Ap_gq)!|uk6sT?pfrYgp=y6$T{4&8EN2pxn^a8RDZ;hn8Z$Np zS`{%dyd|IelpHI>Wdu8~UdsEZH&HZfDrI8nPAQZTIe@aPwq->_Rx0y2vT~${}U*I?1TN6XaZ_ zwM*4}og-1O0`IV>nt3H-X}UR(U{-Pj8rYkzOIE^oK`Z@21iw<2!0Ko2@33*T=O(|Fr3ZgcVu zb?vsN2}x{;`Z__gv5U~unudlOCrk>wSv}Lsz!mh@Qy3o!cIf*SWvHZrzqGpT|JYhQ zDra$UPqw_2Un-k|y*4wrRwNiMj9NP`pk#y=uXUOWsiZns6J`h5nN{oBLyNO<+umm&najuszPx`p$r%;H2yC0Y@ z6LTrA^4Qk|K71;8a@VVrk%MSDiXTW8O|X7t-cjL;v|2C&U7uEDDd6)huZAmI{w^uYYGRicGkBNZyDI|J}fNz_G{e;u`u}F|p=}dzCQ^$$MElkch z;L`e7J)kDBOVMc&u@qR7aabE4)=dGqnE-PeD}{N~FS4eLTi=%stH?B+u53`w$B&Mq z;Og?@EAG(<&2fRik3Gjh;i;4r;DFZhP5W!550%V0Q0ktIz1}395%Rs@qHU3^ z=mVuAOB^?VSOIoKN+hMQE;m;f9;S|K{2E(;>N$8s`b^`-!~9H51;=ipsv~GuArBEt zpNmZKtkG{)w55+D+YQMBK zIqH+C1=*C{DKfz^Hg!e7QwH#Lz{j5N${NZi4|Yax@Ue@OHl$*bp78Rgylb$k;eZF= z()GSJJx>YvPAiVLMBzhu;q4Af@>#jQK>qcUl?wAxV1GzB6aPrW`5#2b{tJI3;_UR} z=l7ot; znL`X&ww~YAXla{f9vg&D>pU8Qw;}hJ;Zf{aV)`WhM9=c^yda3-BV&kK)%@4Cs-@d` z?c>Dv`vcwYpZF>G2_q5dHr$DkMx`DFaoNW zHUs*U){@h)!vT|O;nBz}>1<7r^G@|K^-A4&HaYI^7MCi`T`_EO7Z1ug8aSGwS$oH?LlC&?)7Z5mRCuNoBxZyy@qZhE*ATdQuSG0}N zU^UselR29(MyG^PFv)i%N}Y3vEkwwAc(9j4y#Cev8+D(AU`f-7W1@2|hicwFA|9lU z#gwSP)y66l#ikY48mW9BpY~WBMg-v~Rc|R*>3mQ62J1@}uI~I`aE|bZO5)&2rQ$v6 zc<&3EOQ8|Bvnp8S)QrZcn|}Uy7}Q|4Q%)(yoXM4p+Ye4A8g(yG{-(D$vX|@TD{<+< zcsL{B7&-{6_dke(Y=wvGOtutJTwM_vjtWvI+t4T<1#M$ZZU#b-EsvSQuMQ_7N#Q%9aQ#pH0!bK6q_x0 zebmD9v3*$uGTV`bVDJkaJX!dVeHZ2#gbv$f3EhkI|Ra zGjW!-=BGcokGhzxVH9Y;P|?Q9diU@}Rm65z+=xR~K%1M$W_n3G#VsREnrKH%LEq+s zCx=1qH*FEb>!B}$IIC>Lv5Jwriti9eQ|tS?^>(pdhz2X16jjumR~V{+-YDR9vktf=tVMPVS45nURgHxo z&*J@!mwLll+K`|>mV5KjI;MYI>d9o8$Uun#T3|a1*4h5HcJp*_YaPj*KBcFR<+iU} z2LV9tjSv(V2p*7Wn-h5d7hGFAg{mtKW zG(@&ETskl%wq!KmNc)*)JB_x&amUL0YN?51BtrCYB?MzHG?xd)WE^|rn*nEa5L)wR zyTK*>j@L)cWApiDnU;I}IyzybHp4QV>v6#w-M|9X^Y3ZH$ZJa^Yj4C>4e9wnNj#&o zWz^21IZ;Oh@Y*Om`wN>-aybcwOg|viYNFkLVLG zCvi&y)#z40UU$vz>*>{~HJ)hGJr6Tr6eB1om}^W>Y}~v(7AHQ?!VbtnEP5HS0O2#Z zo=>s0%V0uccTfV%-$bxgfByJwf_-Dy*@LwD^zjH~m>r63VIK=URMTs7&#X>Gh*_4> z98A|Ro1r-(sZkwhp$gZY`#Rg~g707W*{;4*|jpCK=<72yJBFs@Dr9TKD+5{zx1j^NFxX{&4(b z&d`mWsuKE!7x#dqZLh^oHr=B2fphl42lD-hX`Zojnq826&7+zY+w2!qzkL52TZ_C} zQRDKXMPKoQul?^4dG!Chh5r9+DgI?s@xL`8qva(nf4tDXmQ@Nxlr2u?o~iu#tVW{E zJf$FnY$Ra+0xLM&n$yrcg)}u+9?E@}XnC0DfiF1vDxF=fqns;*=`rt2PkY@@UC!w4 zm;&hNk@E%TC7s((-cOpP4W(#MFhomME%EurB$!jkMC~oWqpW)4^%|Dy-bmt6Wy2pl z2SUds1A2wfpl2m24B_&84Z_kj>EFZ}(M}kKSQNNV?>ak?2`Je!3HV{dG-Xc?b&Rs4T?%pB6691T9%e%Fl5_s6`AF+kR2 z9hd#&$52~gj(K&z5}4?V>1hP#d#%)%ePKc$(H%NwU9eUmZtBjuI^>2SJ>-w734k_*wV_}ch>serKr!Pdjj#K27)fmQ{Kixb3 zDs#9y3>;g2N}T6^^b!3Z%AEfrDE_OSRMu8RHbwE-wjv;;9t~9pUW_0(EJ&rSQU;_F zFN%i!gVjr+HRAuaNR8Q=VnDormYQGZPb6R!%1) z2b-sGuBqx?l(P1m)l`#J^4~4C-DlX?6v`0uR&L~jP^z?I^uS&bOx8SF64~?PE!Bz(_BG}F zE#~N1I&@}PI-ErHsGFbZ_Ow^uEm^aZAdX1_+@ZLVw?gTHiR_ezTooMoS6Isj+YRg! z;sTT#B;OMEAg`*HvJ#ykm@U)Wv&zh33b;;934?8e$v_GV-Jot!_)>S0c}y)rT~d_b za^xwluU-JR;R=AW9-QV9@@0KAbaOrJfkVG~_gLuaQhE^S+`?xjPVYN+S;m)otO!qE zLy)mw=x>2U)%R98-^}5tU9>iP!<~l{od=Pxq(YWuh;xhCJ0+6=zhRr6j>60_K<=7|I zG+ygLh6zt(1df9b;z)Ov$wf`T+LdB0uEpxYD9Tn0n$Go`qR^h`1|nNlkX`u%TPE{d%%ZkZndmBBv(%E|xv z`udNJ=YOTB|FU3&lS(Ct;V&({jmak?fLqr{Qllc1QxKHvZ8Wc9mx|GMN)1ndG_ZX# zxo+;slkHxwrtP;_KDS&skG1HSktzig+@IiJGJQJQ*x5F{etpmR{RLtN_Iu(~?{wvg zRJj2v#u{bOc!T*>aH+}Ku}??dak~O0Tz^E{T3u0kin4qG+O_R3<3r&v`LK=A@o|FT z*x2o>l1E4$+r5^}vNKFYs@`gLV^w{Hx{VAI6?YhdV9Iqk9xYb#o{qt3)Q}^L!aVH_ zJtv|(!Z2&d-zfcCD`RtiF30tNv0!M;mC4LwjQuX3Uu}^hX?teH*33aA8~gAkFP~6! z9V=9w0_V_mlkGn&RN59T7K$fSwz={B!i!`RZRwtrFg9e%hqym=k^Hx-3|7wl^c0gk zt5n3}wVu!?P*3{52bzgo6Vkg!6+;Bm!iJclO_1~-_HuJC5D*bIUap3m1|9hym_RNt zL_s17pup^+2nAxQ<=HjjOq)pejZfNZM4$x@f&wu1m4IhhikTx-fZU=IS;3Vw6xbr- zk_cfY*u_y-Rn+<@O0jo~s<>DO)>b1==c_WIS;hy=^Sv7OlOpudT9Jn<*r^VhU{S9n zf4SkFU>q9D4=uQ2#IUtL+Y0AX=n}UQ+%b*Mu7K2yjtYYnL-k2QZ4Vl^qid86Rsjvz zF-4=toSz~SYVk{m#P8`@qM<|?21r<@aTyOZ4>l1)m;>r7@QE>9#ul}>kbu-sj)v7k zwl{w>1W{LyrJAfZ{N19h$R6jj@iJlM$x^n{en~P_R6SW(N-XU&wX4khtFG!E_HHzJNk=T@sF082Jc1!GhWzkK#3V?)DS$BDBmrr=GJ#1p^sv(O3)_ysi*iIe$v0IhNMdq0xfOtA(H;I z=27ZQMGE>nBnBa8gQE)e`0i+}IpSw#q`r|=OQoXkC454fGM)t`_pC`R=rpl>-7!y5 zc|bQprw#h~&5OG>3L;pla6GLR$1N9^gtbv=c`weE9r1w!Gs) zKj-x{D{D?_n>zkdK9!^uo3gjR?AY)r1QWQ24O*i|F6g#g&CZD~g~;($$V>WCke1d= z{g*_#O6xfBuDcjA={AV->9|wbYigi%aK>7q#YJ7R&vF{HR(z0iDCdxYcA9`8phlod{k#&Rpc%6GY*qn{viS&OQ%;Cr{=;Vtl=_ds)w4sfA&CJelb|!*tEj@Y^Rl6UZ${0gEAoyctVf>xt*+ zq00NHeZO~JqK)TquH3Rq)ft!2S<~_T)5C6iZym2VPS35n(|_o>l?P?{Pq&)OuO<-z zc;y}V3QGm9w_Gx7)z=uD%LsVGy^EAhbQtI=jgqgorH!j8mFT=#uaW1rBL|M!^>yM~ zFv05b!kV^4?Y}X?VCo@<({D!P|0J3bj-$M zhpUblcfJ`YD1YKY68kIKH=l!ZhH*p2d*GwAq(nnPnX}nHePJrZh=duWOE4J4 zX0x+nR1z3tDHtQh#@P;I1jdM}z=U^^!+#&(Tup{UNd5|v1D-(Ci%j%ih5$(N)Rq5` z9t%Z-3wH?mv9B&n3g;vO?SO8@NT(k?4_XULZG*hWNIBMvg?!ICBxhRPM9Cnwq8!}r zor3WEea@mYiX)?6M(@nIV9XsbSc_KOQj7Nn6JdKmtMVWF?#D49I{cq5W#flb_W!$m z{lCKSKf%|f2I-`Pa#U>u1U5|H>9nY!7agf3a^VV{wS z+dWvAb4_#Z(t5jrYNN7*W@HtaQ02TvT~X8eJesEEm5pXc%ZZyzY{^51tBy&19H>l& zqsei%>vfOsx9j!P?Kk%)wO`Ro3RtY)Z;UfIj6FCm17{Ey5dp#m@?9aKyrd`$;J zRD#KvF6lVLt=fUAKgO7bC5RB1d((V^@2pIxW@6}S>@jGhbh*yti;!As*mYdMB8w0% zY5ug;5FksF1R112OcfR5D=OBT3TtvZTFN_}MQv4e5(FKrM}i54ntL*|JSB`sF&rYR z<}3pCOu#1)r(Q>L^7f9hizs4rP5sFY8hY|yAW`UzP;OMjxW(}1qst7iOrZ03&>AHI zddYCGm_Q4bRkiB)*EVcdCIvi35<5iv#ETZI$zCqH9$B@IitxI!8Oe+Dd9p!V|4u%xT<=vp0yKU zOBH(I#}y!qMaC;Ze0uR_f8M}yIlM6z&HR;()kB^@GUl!#k4%F|_xYM2NVRwxQon}9 zCe4|x0)5h53iQQ8(GKCkzjIGCB-?h9d`7&$F(#siHco*}D zvZ|d!P>Ez!)|yE$OsP*KJ}YMa;EcrdkHC@_7GUew8_u%Aj#T1p)~n`d4-fyfHP6KP zq@8^317q_v(Az$nItw!-U)bj8m9N{2qRsjv;d*h}*EA?kvT2qfKfsy*NRxG$Oaf^` zTD@S;V?)3%!D_eXA^$b%S70G?CPqyam$y}TV6x`VS(H&_!-V8|ZoumW&|==IoNEU| z!)+3@MjfOekP`#HFSscwwpd1?TC#t6%VW?Xx#8)&NvnLOw1i@>Y_vbnDmjpK*kT{c zz{wlXF*bK>!-U~FN)4MZedR_|yaw!?@%tyK0oO;7D(VNtuiiM58sc3^u`@DI*D%T9 z0?HHHeX-L}*lm25S&m$gVB@dcLP9b^&T%$Lb$=$t$R03lhHqI{63x#MbM)vr28V=( zr$S=HJ1DG}I(xyz#+Q^;48g(vo@?EH|M43?T)uhLZ_MFl5YyJ3y%jFAd?M)CByQRq zEQ%j-_EN`{h!<6YmAxTh-ZYF*labBMA7NPPRxQf*W)G^7V9Q2Hjqhm_NZ*Rp!S!a( zWIrWYt{WxRrz((?51^$ zpUR9H4eh<>><&iS#`r<60xb;aDF zK$dh-st3*NZFbk{cwX5vUNLbx-xSoR122AoPO;oChD_DXSONcn*1~CBCAGy^NuIkr z{FEYpMPnfNEDu4CJ!KsuD%_$*Rj}W_bVsm?9`PlenjsEKzhsm1kSx!{Y3t>LeYvAx zqf}cRFF4AN*}=0FVRkC?i$qAVY^$RBLa{oz&c4Bpz9+;~o7r&qtuuP?9|Jsxhc&+c zn4uNrQ*Z|)Hxv0X=JQ&ei)MglfaPbsE4kGv4(RlAW4S+qI_LRppR4 zxlZrTA6V7VoxB#a*Qay2S<&5$)P_0y1ghxtay^KkXxpw#^MpG{*1E2w2(26WCUI!p zg@ZRrG^ZRF27!|kt$GB}12(w><3v|w?2pd0>_cia;9xB)RVB9~&uaq19~x15UEakr z5qN8sNaBjVb8kg|W=M%t>wLcjXh<6mPxPXvXv@B4Je(Si-keDDZ+#wXkfT z-p>mhZ@tOh#|KXjfUgbA>H6RvpLzV?t^ok*9G=NYd^ggbV?Y3W-*~wZ!^f+jn_lMN zUX7%~?aOP<=k+p9YGGg5i2PrzeFaod+wwPpNQ-oLcXvs5w{&-ROM|3zcc*~T-JK%c zlF~?t!guuE`@iDj`tDon+i+ZGv6jD?Ju_!^&7LWI1&_nu)^yna=7j0+YEIDKaT;w}>mSjriZq94)LSjTVsnjhgYh_Ky@2*z5av95hEXp`pr1=j|GL~3gr!mRohwGm z6^6FSw>>dVzQRc6FVVg_tBIeT@t~f!o{ejxdI#z_d}bAG>#%`viJZLARj_%5%c$Dw zAI9?aaHW5EIE_!oyK38Y9TS|-rlhqYl_`dNtD4T6&Mulo?!U|5MH)@U$?{x;nYk) zfq-oNwrtpcslN+kA22icvzXDJOBHn(U8U*d+uLEOLqmH8VuE)3sI`1I#C$(={Dc7f z4sLoRPy!Xs;YDJi*kpEiP?b+G$P-^a-S6$MUSoY8!b4FPyUgI}09Ld0}-q9pt&zI)72Fs&QNI>)8>G zO|8)MIC5GV4vQA4-`ICyVY1auQgjLhE2TMIgLB52*=?q_u55X7Z_~Xd%hhQrMH%Y_ zXI+_%jm_M;)$$^-EnHbdA4H2?X6Epy1%~K6?2>&3=bMZgzrhn$=KXMu(j55}8Q~%6 zQIuObdhGBS7|Tr*El>{wVqFwn=mJb~q~YO?Qs7=Hp%*DEI}CnOiT5HY^r}LxgEVp{ z3As5`PT%woxW_{ptqIA%l>71jHlSAMsj)oEwt%DbslK4=^M9rH?<+=9M{u|eWP#3FDRp|Ff`;a7{l4x^$Jd;lOasMKE?T} zyu&rR@<{@;aV7(3O3s8>oV|y?m!1wcLOzf%D^^$7=v#MyZT3?tSh=KPvq7=44^2#{ zbx$w_5$;%#s5)FJss&m*l2CTucxJoWwofuNkG7j6t8iK%o#+-hm(zV%*~4;NQ&4Ie z4A~{4^)98rjygmhrW&JYCRNWeODL^3XRUggsK~B^pEdL0 zMe9oxBYJ9D8;tl@h?}s*md+?zfu_PuzN{U7p^uA0d(`OaJr~*0iG+kDiRV>6VJU5Y zD0%jNpRtu(2!a#tS-EkfsEIyUV+?C9@rjUBKCge_SI3LoPll~fsc?={I3@**6aG{+ z>Qn)f71k=9T1NUXyqTIhD9}b_Ue<2HW4k50$_Itzq+cQF!@j;gcBaA{vn-?L+h~2o zP|GwvRL|}qgqDS;iUqkfT0otcI{U=9mS;8W=CKkL?6)kKTkk=IMghRb$L%rP8Zy`t=hCYi1kqz2cM*li(2$juWZ zB_0?sTvp^SA2+Tnz~~BKink`QBQ?BK-gnoX;P_T8p-HG6v|uJyd%Y&qIP7)_HEb1X zUTLTDyXLU0e-&oo+40OHI1Wmu*J3cBa!QONY<5_Ie2Jc&(x*IH<5WNG-MI_=~&A+eOOIL#;a=}hG;w+~l=8Dg1FpGaVnEh3VJO)4hu zsWBIT$amj{Vh7HWM>JC_I#9K~c5^{s3EQC3Gt-KMIwaV;X^~SNQGw@Od_I zmsg9~vW!YiRpyKOMUh+@JdW#N2|(t|^iQG)!UW=j4pget;nN=O0u&Gxn&?-W?+VFK zn-jW{Fh#xa;u9{qWKow^X*-1}KC|4>yG8{9& z+%82SE1OeSj39sX(MXUKq5s5gZ-09hT}pW1=$*!Z>Mf_obfKMLHARnvt+Iv!)C8vD zi^LR0Vb>cMQ&6Ob0tU8rWqb>EK3ULoBLFWYWZFu(jvDp%{ z^PX?tnvwen70ow6mqDJyvk%!Xf{;3r$@S5&ZZf&b>ebVhlzQ0>MU(6jPh*yFBx(|) z)uaqDp3fPjL%-%^MUE?DL4>?`QvN)G4gDh4I`BPKwZa=)>i)+NPXxOU`fIcD)vfW5 zk|+|PE3YaHL5j`Rt!mw-l`35Io@)#=dCD9aEhwulFUx3IkwzJfc>C+cefj#j^pev{ z#G)+$!Xn&qZ^!hATnD{W4rk`Ml#_>$h)>&Lb3s3+BJGT8ReBKCo~pRMWYOtP2uW!Z z4K@bjN9c~84Nnxgl^i9-v|HBcjF74GxV}?3pbpZjQNsYM#*KmG;;`V z)z(^F+ax~>k#4FkFQ7%-obSIs(jRGtJYB?9tUxZvv52EPLfS2TSyH|ho;IXh*_--W zl-K5!Y%M7rJRFpB`cvoh=1uv8mjk$JBe25$l&ImS89~P9@v>hw%?17D*xt#1D6m9w zn%-j1sy}B|Vy3dzQzT^UcZ?EcTra)a)RXv9M8SYe#)s972)3&|Kmo-c{}f8L`^ZEP z>lpUDrqIMqRr{EDfJ4GcjuS4qTCl(QWq(XakfOPKG%ZO#npA^K`p4s7!jk;{I)%Ee zDX!A8RJz?dQk(w7@a^OiKY#AiI#PEJ8W9(5dQXW3q|pNVE9F3@k00I!%C;OrevrLV z9DKa?M$S5s3wCa3l!8r1@ldIb#9w}L3+oN?H?4xjavQ(2PYN!mzBl3e@=mPuq0#2q z80@q*#0cja7Jd?`>-+GvVR4Ss=_8h8xe)|9)W$uqYtrstlA{AJCTIN`ns*ki#yakd zOJsLIH1`%7yixbIkHaf2Xf}>u5a`|XnFNm}(Q0%#n zEXFP-=xN94SBRjU>frW;onRI3;t=-lE2{TytJS(yEgWIKn9ek5Io(G_`uyEz2Mse-c3 z0)2+ERR?+5Ns>yj3t>@ndltU%Kx32>BJffTt%yW!5fPxBNzEwJ1%OuV-)Vn#=;u5#R>qa*1i!)w$< ze9bs_UO>?}LcpGja*%9|*Q9X3?SN62wC)=^HUm#H1K)#2Zt_sHJn{iGBB7K2lGwBa zPUNaQq{FneS{>7dA;`bcoUOBx=e9hVTNlOTAyI{dw+c~@>N76e8isUKA8Au`@!4E|w)g>BS+M~gkgVQl5vBR5R= z!AIQ0!Pne=bVFgYWR>fBZa7i>@YkMbI(!i*x6cqs&~-JRTb!P0sVqB=T3` ze3iMTvy;ri{?ca}vOWs=PNYTaZI}L6uIpl~RbuYoJKc(g&pT+?BYD(gYkV9pWX5=c zb?lX*>R8ao4uE=JfjY4(KKTs7L)Tb?$#Ea+FvPtj#cxxU;Pt+cy;+dWfd_xm{XBQ+ zd9d#aM#yekYRH_7<(3Y|z>*1Zbzum5s*ciLt&d-W^9C^jtJgy#xtA#uC< zK3S!UI@RGZo_iAxWrTFyH}HaGZ*~dZ6X)$F9L`K9MogA2b~~lhm`c%Z_98uH@Gq8_ zPp(M$FF^{{@VC~UbzIPQd;tNwQOAKrn|Oyz1U936z&JsKg38LHK%hHAv}qme{3<#7 z3tVv=7^WT_r??4+Dd~KX{DLVG`y&6?8Qlo2fhtaJX;6~G&NqnT)!k|S(FtcNvAOc} zXO21L=4!7J<}FI1B*bwq47Ag8OOy&ot4d-}scXor7`@bt8*%y?*vT%}`Eix{!3JG5 zC!OOP1KOTzMLBFPXx==vxk9E<090LU8oKJmD3K2r2P0H{iq*u0QW90z=<{W9=zOa@>e}wr5pD3Ln7NPjPZJBf zBt~bHZ`j=^`KDFdKyNzsO!B@OAuAqGvT#$fuv&iH=>!d$FEg;0uXD$Eoo_|lkhc{= zEgKUqGS0m;+uTuiB;R|a*jYz0#g!C=mz@C86jMDq`C+oqIHyP(EMT%gTSXi!zpRI2 zlDxF|TT#I|r(0|ar>=ukGDH(I0z@oLzZ176_%S!?R2WXay}EZb_k@cgjzhVjv(l9R zhyhl?W&dH{{)Bf7%K8~&=SVCnr}*ch_*`xt^9@=o3KQ|B<;=p{OcWnw?5(qgL}NLG zD}otl_RAdx^_7vs+}gb&N63rt{$3TcjUnTSh<>VZWlNz7&WfT}2j~ejRyXo$S_V`O zuwg4!l^6-Fhxw7sWHPsn?rKl=U=LeG(EEj*MioLAifH2%o5UN^iDw!kz?`m43J3XQ zl$-b0D)MHHu;Jua)2W5o&Xx+`-o?L$HFkjVk{e8;B{Ch$Vc250qkV0JBx<1F+X$Si5SYQ1Lr3eFn~Ny>Y*0S zX*Ic+HI$7#tslMM7;WWQS=W;N#q?+eIXHqNJ+)>`F2aI0zUCSO@u$UPj*_{k0tyb~EX8Kbr_?72M;smMk&!41@BGPN4UAh^cr$4k z17`9_IQb`Gg`O$PXZp%?E4{bLf|)=UK&J;n`~~}!vV=OEdxl!}B9CjYB8easqe%{t z8%#aed-!#>ZZX%h}X zDG%k*gp^iAt8ZUc_6`MGd`9GY!gV6UK;fO_3Io--(MK)l57>t{eoqLzwfUBE9YDgT z`U7{&M2iY#rHP(XjpS%Iz2{2zC#_1YUPms^fzx|&!_*ZlW@!9$A{B#2i17@r7;N6A z3;$c6DL4V*8(Xc77#O%6EZLjX~w z`I9jcGeu{Y-Jd?8_F|=x(InMJftSDUCd8GKo|ZzlD%Kv3-+l)6zo_))1`H)6;;^6aL&F_#M$#G4G81f9_c$8HIcyGKvN|iUCAJ9} zFEQ<>Px|B;w!jOYa#8xF(bfP?{mG}t5i^AI(fq{JePQ|tA<+a_b00rE*k3%v&QI-PZ5iHveB4BW3@hm(rFv3?Y+3Fm$Hi>s3F86ga~SW1lIzsMIY^7 zK@<`8=)X}E95H8?U@{Vm}FTNzEUk=0F~uS-9}#ar4m@p zM2d12Ul{l|xtf0&QhM&qV(Wz=&!-(yPlENtSa&LpS$O!k!d76W5j&7)aX>Ho1 zp_Arehejf3%Iq^6;uI?*DlFbkKBYKlr}pWbmCwc_K4wC|Tqbe}KyLIEr$2)dU)~o( z4b4?+P`IWlgHPg&9wK#nBP1cuNKRZ7qEMZ{kgnEe2T>D13U#?kduZekTKHvT;?T?8 z)YSK8QZMZ(630_wB#X1n zGVz;*_+N?f6O!9-Tc#i2|+J=tSZbq{L?Ty?zN=hZ^=Zgdfjg=4}Jd zv$1Xh!Paw0VXn_Om9o6WeUaM%vgqb8NO$6jd-TM6)nt>p{k!9D^2Wh&%nTVrHgY13 zH1$K!;w>sRUDvNoXHjmcmYo7)NUaW?>yL^~92v6}jLGSWhRPH;Id+8uxhRObdKa5H zUx#Xn1KGlDCA*}9Mtbyj>mxwB5bLZE9vjE6o%_TcS^C0?XX6X5QJVxwX+(Nza62g> zM63wdl=j2!)=pizvY(nYeBktA+Ac}|GwhE}ACLz-UtDg`XDS<(G0h6A z_Q(K@E=gv9ey?rk9vgxYw8z%oUuvDJqZGbuwDUHFL@C!U&9Xw1qgTT16S~MX*y#~b z-_Yj~A*`MGRVo#z;)sutRP~r6I$h@!%Kjm7HnpBYQlj*fcva3RJ6H&wQ6Va1ql$!q zhq~!Sh_fLVN%dHB(u+i?S-8|W0;cJXM)v1D1hAz`?s=#=~!=ebS;W7fg%9AZ0m?FdnUO;9$xK zA#{r4Aap}!2Pm+s(_3+Xm^$Kmg za*cXT-y?xjyIV2`qAt^xK(}ctRmJ#)>$G}RLXjU8%@;RKJyLFuf3i7aJMxN3KxZ%L45t}NnjeyTYr+$nvClJPQQJ&go zrl!!Gp5~pb3W&loNhVn|ZBj&e$_vBa^fX?oqM&Lc?lFP>K9gWS&T9p4dQ?xnGTX$m zHjoMM!Y$0xf@0Jv(y6zDf$Evna6>0jO^j6EN)$g3oPak`6r*E_+Hp<9-S{0{%!1$Fcr79JtGF~9SiPgu-Ak-ET9t) zTW2v>M?7A`m<;@gN^3>Pg}K}=v)3VTGQANKFgQQ9e43rGG zQ%#)kFL@Z{)iRNyu@h#viA{uez%U2_>AEp*g96;w0EhnFu=xD!( zf^dM8!(Q!1C}BS#x8_)-+*jg9;d_ZEJi+v0;FUR!(uJOjdqGp%Z9$WX^WF93Slc7b z9(PzlScjmc@djll%bF6Kh4aSQ37&-to7v3W{3n&6)gz^y$uHJ3swhg#cOzZL5i8IH zlL(wLZ5&!g%Trpb?R3y_1)JBf=%wPoR=p0m1@))P)E6x{{MNoQNufc98G5DIE)`fc z=ns6xY#yN3KAfGwUS4E|Qw2sW&iVQ^_S&v!DA0-`e)Z^sP?3pRZtEAFb{M^b=CU+n zWuJ_u<`Ji>i+3s>Q=zkgT97t3> zriy;}1aYT$j^Rz0a1$k>uB)~n^cV?3XMK=fni1sYX*@b9x`_Ya>u!#4$-Xm8nf16h z?a62SN|e=@1-8EUuI~nINmUPzmao6^m@^9?4VCu>*?zbZNl$U8x5R4JUW=sIzSUPl zjnZ5F0)b6HX)?Tvoe(fF0Mhl2s6fW~NKwfp1*g$Y)%Esu{}a@TOR0}kjCQKbX)k-9 zAy~D!mcuY458d50Op=fE_)Cw#&A;J?d+j9Dwaly5Y^@x&$SBnEdAFKA;FG<{Hao%L zz-`hLJ>3n_{8Q4z<;gc8b;a`)*9~$bsuJs*uNbHq(s-KhSemI)S^M^u%0_TDJ+riN_`ZDHkX1VLz=t$BMb?Zkk%H2 z#=ac^Amx#WJqg8=Una|d zx(|5DLS1DCOI1sf7S~ex>vUo9E+<4KUYsmzCU)|odIyLo7~>rU;05Del3bI$I$;u- zrE?_sDuGwA;=Z2WbTaAPj5U}lowr^edik{-&AmGMaI8}>P}KC}DX&E9kfRNP^})q8 z_s$8$hV%0zjcscvV>eA+7@i)-9{&sSBhMPf?*+1@R>T3ic@936D>4XF#JP|30c z4_Wb%y!(h942niIAN}^@TTjh0HDO-?hi0~_Y?alm#(A(U2J}L*+`UiXPv6rOba1Sc@fqC8Cm}}&B=c$)AF;I{zHm3 z){c5+)_;{|&R1Sgz!H7NLlY3t?bp-OtqVHatA@y04abU48~WOS=ouOjHA$XAyb+7< zJJlD}FN)YRqxr;ePg7>(P(rBSi@8aZuhW|g6m~Ia)F3%XVin8^ObTRWFLyJR`R=Ya zRY5LK%%1Uff_2f7epcwH8WC7;ucbbrT$`_bXXO(whIWqgy6W7|HYh%=TC&1AApj{L z^O;*V-VT%`-2w53S{=wPlE+~%1sd-!AzPA>a=9W~>nt!gg*Huto>3YPS5wVCUDMmr z!e;NFAfi~BMHyO0$!0q1jW7F@l#iogN@E>DcPTvQb*L8bvdJPL_y{ovPP-o!w8nVA zaT{ud4c6V_{WecojROItK8GKl5taKIBdD?R3H4M8qiBp|hQ8n>IQAQPy<-t_pZ zH*po_kjif_cvR~(|%1=bYXXb9L_U^T{1;V4$LNVgfr(qGHqW~xNxIWLsP zzEO^A>GFna@aR5lN?f zj3X=-AyTiVW??feCI zvBAqG^WKJ3U2nN1`rPA@8a3|I&&dmW%-(*%uV`8z9$<=j5GRB-l9g!8Am)H>m=1Lj zXmxsonUx1@7|DvWJyXGj*GnR4i?Ocm8`+R`L6?8{apbV|a~1h9J-Dq8P(gRv^GE)^W)vRocjIxO`h~RL{PkeV-zVkuc9815?BkAWHL}cTWDx&9eV+K2l~5jz<6I zd(suYdvWBnnfcywE3I<8tQo?Kb-x|66D4G57(a0M<;kTtmf}bQ){@^WaKApfB|lN7 zsILxj7h8@_OlH$N{c`aY$b=UR%F-!pY2wQqTBD9gUG`y*g1l@RsR>quDY>M7P^jUS zZ1hwBWAia9IaI!OFR%TEPJq{q*SO$=j4@ zv!vK}&&eDmKtY=VhJ1LGb)#%gxhS(WNNb`Lg3?g3M@u`}eA#7vrA3@vn`g#5KZsi8 zcAbZeVeNF6l2u$#IceHTAiPvH>ScfSv83;eVAfh1!f1~yi7de(;aHfDx& z&Nh~oMs9SDK>iPX8&|rY#Q(>zS*`}S(VrN4L+7$qN=6MpEgHJG(k@h-LiP`*ffOG>11SQiD z&1kJ0bDSp4xU!Ghk!*V@TsmmJg#rIm1mf@{0}ifl%$Fb;w8te*rsOm9!50zsIan-7 zBrel?MK5WKU3QW{wYmg+OC~NF<%8Yf!pNy@s(4U8v2Ac-t{SzUrwqV}kef?0ChcL( ziyl}x89YiMe%}Mi^a;lD&G?O@l72~E&*LwgN&PW6!Y7+mZ{l zc1Rb@ljyJ3vI(R&0^I$68FZ^^xTUF^x@O-kZxM?epsLLb)8K(37fEyt>tc5 zs)(F5hoC4IE2Pr15Ja~ij^_}_sGRQApsBV6K`so>BiZd79d((Il2T>@Vi0n5bnPCs zG#np9V14t-e%@(fRam!ZN98j1D%j{MVm%(bdv*y0n)JpnpWeBW&FEmm5#Qod-iSDn z?V}ob@UkEm_|lC8{4FMVXiWu>mG1TZ{!Rxg>XeUF#oZ|EvV9!0q_%Slz&)%flHlM9 zSQDnxtI#d%4cDH4&rJyJ&dD#ibFjiH7z{*|9{IFtZ7-?&KBFDCZEZgd6&pto2|&OL zGoH_VZc&9A#r>`vF1`A)+Yq1OVDA)cpt0dCYk0Nn9fPGCl> zbn#=UjuuxJZ*B%-;dS&ed&Z@IrcY$XQQg>}9)QiRA|!LDq*nXD7{-WO`P%v_uU)tY z?}#0d47-~Vi!Xm;>I(K?Pqu10O%0zcY*4}Z?f7w6Oht+o{gffk2D6eXeqt<{R6U8* zQ@B(;_64sOSqG-tP}Dy14yvLeDkH9<9U5cDpLU-6Y)Nq1V7Ia!nH#@Xb*see64w+z z?qvL$pOazQygFU#kr9j!V-;;vUtG1rc|+R7fdZKXHOhh}(NQ%j#u_7CFWq-gAHUtB zR)uQ#*h{hxr#gdc!uLE8Tlb)pspBSVqeXA;m5_2J?JAOVPJE?UtfWAzrD_BG5CfeW7`r&LvGxtOa0oG zp?v9G@B($FJp8AkPG-0jidI)Tmkk8$Xz))AzP&jx32)6GwH9vJad(7y`%u4DS|iti zui1m)NtR6<3+Cj`-?%vySI5P8qaBFp-M&A-a8+D019=9T&MdoxLw^&St@ajM_KYPO zB8xRfg4n`icwWxYWFM4Ct%(OW>^OH4vs659I<(o{=Pw*vAJO5(lz~1s+Y0y)$Td?vQl??%u%w` zAT3ACkf>k>o&#e}0<2T!yOxrPNFbHu2ph-gJ^Dfh$YHZVWfwxjm)mSZ!BpJ zGuBte*rim1V%K(V8sY_EBV5rMLtW8x(YcuqK@kC8;s?!^T$r0l#^pYziy{eRxu+eJ zs@8r(VTXYJQYM0nCY^dl3R)HkCW!rKy&w3PbCbein zjURl)e|tXZ!(2gQbA&VriCMErUUuCk#@=9wlhJgeZk8y9`_o!=fu2}qoebF*7@Q^| z#c$tAslONd#p0u!p|ZE2GoBpC7w){sm2lk|F1$V82mO6+b34Nc@X-5U}cU0Ml6 z1pBMiL%DG4NM@P~!VE&%CEVlw>R+3qR&aGg_`>J*htH15b3cK6J4Pqk66ZXI>K)>D zTs51&gO%bQV*Bb4vIedhplSI-0*>P5nT6v1D(0@sEDVW}jtF1)^?Z~NFSLyZak8z*Ush!n!8ggF+6O?$-0h6J_% zx^+qJ8al;DDNTzlscac zMsEGpmgP`K-Z~r6*sohqGGJG`%vM)qv*cr=4YZqDHbShtiL7IYusL;Pqvd@$5SDsj z5LIV)f`7Q2IubTl!U{yqthF=bAWwIOzE~4TFOnN zm@AXA7p>JBPBc_jElO z!v2*q4w7saNk#|rNtr^ChG(sS#uam~JQwS1XKroBxu9#sLTaxp<++u=YxZ6~vv!5d zhN^NKiM*hn1zq8Zd4;_?w2q-|bAT|m1L}tj__r{x_TEZ5wG5Jp8gbl)@Xa+wZIaIz zPNc9^6IUpKVyqfA)Zh<&eNA0@s&*URHcK5ABF>_Ty2Ag}=?Jnw&`rw6#2!W8-QaO- zQcB-vx~~hyB|}>@sk?$iDCse4Yj-~Hw|!1X`^w8C(Q01caL)PPO>hQJkw~y7aA=wO zpR?&kB`$0bUGz70ymh1(3K*~FYnT7R)jhH4`0dC3m9!RCDKU^z<0a1b+4mz*WDsN! zNZ?1~1)XrU59lElFz?0y9%K+;g>zVu=^Yts69go8oX93=1f&R1n%_Hze0VHYsZ=iqDxWC^0mBeX*5z7IS zG5nvQ{tLB**slcrV?8HJM+GBCdp9{7OEUwvhlQ}d zTJ)3vSU8IVeBZYRf4m2Q|J0VelaZ6rUon8cD(gweHryD%n>b((O!v6GCiw55e^L-J zvvmBY?}C>1TRI6W2nZJ7UG7^01)#~FCH<#3e&+gNLF_&Y+;9i@{a)bmKF`@eMau^u z|H#26Wn)4tt!HmxWdHZu!vrctuk;=P7W^9c&c1I({M|em{w;xrkts3#3TXi38$cq2 zf5QTAGr+mQ?^u5rZz%-BnGg`g3h+?g!&BmY5KqPi@MG3S299Pn*24DoKyc=dsJ36t zg1vmk@4H!01Gx9S*(l$Gxc}99Q|4lN-vfvo0OEZ+IC}mdqLP`Fk&Tn%ZtJjMRgu3PujLHr5VC#6Lvvdw&KaOph=MKnnkd9pFj-9{l&X)D2xP zK>_hP0OBC{iDiJ2%x`fYmH{ah1C9XTa!r7t;l9QaoeTN-&-HryBoB)`--*-oy--627o7vc#IsQZ6VLjNc zl8`_^o&z2a|6boU^nVBYFp~nS!Zja&Ui$&IbbnCfcYY8}*wx6u$@!<|nG>N9!0^CUfv!wfSj0}7bi{Hu7R7B6r5-4l&n@*=Y z>L5r1?0EsuME6)!4tWq(PS4)qcYwFeC)KzB;2H4Tm*QFIgMf-g_JBkA4U4sWUFYA2 zRucdb{~n75VGknS%LVeQJ?hmW?0-K^(R=*sSoJdecW8fE{lnThqvqFH1o-Ggw%f1UR5|8WTPUHw2RM>7LGz$rY;bZpHm z)klD7wf_)>OyX}z0COTeAkOPyR4^vrkGX&t)&K{?b5C6%$-hPYp03`^+T{P14zf;; zwoX7UN_!(ctA|NZODJU>0#i;QU{TaVZ z+5br5VfoZR1VLc};I9!tK!5@7r>6Gie@EMuj;d^LsbJ&+Ob7mH9rqcAouCld zBIpJ@|NW`kP{+Tc@vvwRAza+e0o5h|;$ghU`{4L*aRn`n^z46pxWBdhH=UhO1%TsG z2ezcX2NnI@;(+DI11qk-91k$(v;cB385#aDF8=uU4^=$ekszY-knbzfFTiIY_%{{c zEqDHZB4pzP_&IA6aqIu$E`Bb`b$>yTwe&v_e7HA17o)nb?xVBcf`7NzpQ?QQI$r%; z66C%kQab-F?q6FCKNYt675nGP65or8{M|^u{ucZHeDu#HMt(*AIUD?a&bfeXsoxmV zJ@kjA{d2?dLdCU~lcGcFz8v{h- sLcibe`T2~9`X`xzfUrIPw{-pz6*w?u1_6--e)KUxK;B6LvlEd22UYgUssI20 literal 0 HcmV?d00001 diff --git a/AndroidImageIndicator/res/layout/activity_indicator_auto.xml b/AndroidImageIndicator/res/layout/activity_indicator_auto.xml index 2ccaf93..6493e92 100644 --- a/AndroidImageIndicator/res/layout/activity_indicator_auto.xml +++ b/AndroidImageIndicator/res/layout/activity_indicator_auto.xml @@ -3,7 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" > - diff --git a/AndroidImageIndicator/res/values/strings.xml b/AndroidImageIndicator/res/values/strings.xml index eeb0256..0d69e25 100644 --- a/AndroidImageIndicator/res/values/strings.xml +++ b/AndroidImageIndicator/res/values/strings.xml @@ -1,4 +1,4 @@ - + AndroidImageIndicator diff --git a/AndroidImageIndicator/res/values/styles.xml b/AndroidImageIndicator/res/values/styles.xml index 79a39af..afe1d34 100644 --- a/AndroidImageIndicator/res/values/styles.xml +++ b/AndroidImageIndicator/res/values/styles.xml @@ -1,13 +1,13 @@ diff --git a/AndroidImageIndicator/src/com/allthelucky/common/view/AutoBrocastManager.java b/AndroidImageIndicator/src/com/allthelucky/common/view/AutoBrocastManager.java new file mode 100644 index 0000000..7a4a1bd --- /dev/null +++ b/AndroidImageIndicator/src/com/allthelucky/common/view/AutoBrocastManager.java @@ -0,0 +1,182 @@ +package com.allthelucky.common.view; + +import android.os.Handler; +import android.os.Message; + +import com.allthelucky.common.view.ImageIndicatorView; + +/** + * Auto BrocastManager for ImageIndicatorView + * + * @author steven-pan + * + */ +public class AutoBrocastManager { + + /** + * 自动播放标志位,默认播放 + */ + private boolean broadcastEnable = false; + /** + * 自动播放启动默认时间 + */ + private static final long DEFAULT_STARTMILS = 2 * 1000; + /** + * 自动播放间隔默认时间 + */ + private static final long DEFAULT_INTEVALMILS = 3 * 1000; + /** + * 启动时间ms + */ + private long startMils = DEFAULT_STARTMILS; + /** + * 间隔ms + */ + private long intevalMils = DEFAULT_INTEVALMILS; + /** + * 向右 + */ + private final static int RIGHT = 0; + /** + * 向左 + */ + private final static int LEFT = 1; + + /** + * 当前方向 + */ + private int direction = RIGHT; + + /** + * 自动播放默认次数(无限) + */ + private static final int DEFAULT_TIMES = -1; + + /** + * 自动播放次数 + */ + private int broadcastTimes = DEFAULT_TIMES; + + /** + * 自动播放次数记数 + */ + private int timesCount = 0; + + /** + * 循环播放 + */ + private Handler broadcastHandler = null; + + /** + * target ImageIndicatorView + */ + private ImageIndicatorView mImageIndicatorView = null; + + public AutoBrocastManager(ImageIndicatorView imageIndicatorView) { + this.mImageIndicatorView = imageIndicatorView; + this.broadcastHandler = new BroadcastHandler(AutoBrocastManager.this); + } + + /** + * 设置自动播放启动时间和间隔 + * + * @param startMils + * 启动时间ms(默认为8s) + * @param intevelMils + * 间隔ms(默认为3s) + */ + public void setBroadcastTimeIntevel(long startMils, long intevelMils) { + this.startMils = startMils; + this.intevalMils = intevelMils; + } + + /** + * 设置自动播放开关 + * + * @param flag + * 打开或关闭 + */ + public void setBroadcastEnable(boolean flag) { + this.broadcastEnable = flag; + } + + /** + * 设置循环播放次数 + * + * @param times + * 循环播放次数 + */ + public void setBroadCastTimes(int times) { + this.broadcastTimes = times; + } + + /** + * 启动循环播放 + */ + public void loop() { + if (broadcastEnable) { + broadcastHandler.sendEmptyMessageDelayed(0, this.startMils); + } + } + + protected void handleMessage(android.os.Message msg) { + if (broadcastEnable) { + if (System.currentTimeMillis() + - mImageIndicatorView.getRefreshTime() < 5 * 1000) {// 最近一次划动间隔小于5s + return; + } + if ((broadcastTimes != DEFAULT_TIMES) + && (timesCount > broadcastTimes)) {// 循环次数用完 + return; + } + + if (direction == RIGHT) {// roll right + if (mImageIndicatorView.getCurrentIndex() < mImageIndicatorView + .getTotalCount()) { + if (mImageIndicatorView.getCurrentIndex() == mImageIndicatorView + .getTotalCount() - 1) { + timesCount++;// 循环次数次数加1 + direction = LEFT; + } else { + mImageIndicatorView + .getViewPager() + .setCurrentItem( + mImageIndicatorView.getCurrentIndex() + 1, + true); + } + } + } else {// roll left + if (mImageIndicatorView.getCurrentIndex() >= 0) { + if (mImageIndicatorView.getCurrentIndex() == 0) { + direction = RIGHT; + } else { + mImageIndicatorView + .getViewPager() + .setCurrentItem( + mImageIndicatorView.getCurrentIndex() - 1, + true); + } + } + } + + broadcastHandler.sendEmptyMessageDelayed(1, this.intevalMils); + } + } + + static class BroadcastHandler extends Handler { + private AutoBrocastManager autoBrocastManager; + + public BroadcastHandler(AutoBrocastManager autoBrocastManager) { + this.autoBrocastManager = autoBrocastManager; + } + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + if (this.autoBrocastManager != null) { + autoBrocastManager.handleMessage(msg); + } + } + } + +} diff --git a/AndroidImageIndicator/src/com/allthelucky/common/view/AutoImageIndicatorView.java b/AndroidImageIndicator/src/com/allthelucky/common/view/AutoImageIndicatorView.java deleted file mode 100644 index c0d10e2..0000000 --- a/AndroidImageIndicator/src/com/allthelucky/common/view/AutoImageIndicatorView.java +++ /dev/null @@ -1,181 +0,0 @@ -package com.allthelucky.common.view; - -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -import android.content.Context; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; - -/** - * 自动播放的宣传画控件(间隔播放,自动切换方向,循环) - * - * @author savant-pan - * - */ -public class AutoImageIndicatorView extends ImageIndicatorView { - /** - * 定时服务 - */ - private ScheduledExecutorService scheduler; - /** - * 自动播放标志位,默认播放 - */ - private boolean broadcastEnagle = false; - /** - * 自动播放启动默认时间 - */ - private static final long DEFAULT_STARTMILS = 2 * 1000; - /** - * 自动播放间隔默认时间 - */ - private static final long DEFAULT_INTEVALMILS = 3 * 1000; - /** - * 启动时间ms - */ - private long startMils = DEFAULT_STARTMILS; - /** - * 间隔ms - */ - private long intevalMils = DEFAULT_INTEVALMILS; - /** - * 向右 - */ - private final static int RIGHT = 0; - /** - * 向左 - */ - private final static int LEFT = 1; - - /** - * 当前方向 - */ - private int direction = RIGHT; - - /** - * 自动播放默认次数(无限) - */ - private static final int DEFAULT_TIMES = -1; - - /** - * 自动播放次数 - */ - private int broadcastTimes = DEFAULT_TIMES; - - /** - * 自动播放次数记数 - */ - private int timesCount = 0; - - /** - * 循环播放 - */ - private Handler broadcastHandler = null; - - public AutoImageIndicatorView(Context context, AttributeSet attrs) { - super(context, attrs); - this.init(); - } - - public AutoImageIndicatorView(Context context) { - super(context); - this.init(); - } - - private void init() { - this.broadcastHandler = new BroadcastHandler(AutoImageIndicatorView.this); - this.scheduler = Executors.newScheduledThreadPool(1); - } - - /** - * 设置自动播放启动时间和间隔 - * - * @param startMils - * 启动时间ms(默认为8s) - * @param intevelMils - * 间隔ms(默认为3s) - */ - public void setBroadcastTimeIntevel(long startMils, long intevelMils) { - this.startMils = startMils; - this.intevalMils = intevelMils; - } - - /** - * 设置自动播放开关 - * - * @param flag - * 打开或关闭 - */ - public void setBroadcastEnable(boolean flag) { - this.broadcastEnagle = flag; - } - - /** - * 设置循环播放次数 - * - * @param times - * 循环播放次数 - */ - public void setBroadCastTimes(int times) { - this.broadcastTimes = times; - } - - @Override - public void show() { - super.show(); - // 定时播放服务 - this.scheduler.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - if (broadcastEnagle) { - if (System.currentTimeMillis() - getRefreshTime() < 5 * 1000) {// 最近一次划动间隔小于5s - return; - } - if ((broadcastTimes != DEFAULT_TIMES) && (timesCount > broadcastTimes)) {// 循环次数用完 - return; - } - broadcastHandler.sendEmptyMessage(0); - } - } - }, this.startMils, this.intevalMils, TimeUnit.MILLISECONDS); - } - - protected void handleMessage(android.os.Message msg) { - if (direction == RIGHT) {// roll right - if (getCurrentIndex() < getTotalCount()) { - if (getCurrentIndex() == getTotalCount() - 1) { - timesCount++;// 循环次数次数加1 - direction = LEFT; - } else { - getViewPager().setCurrentItem(getCurrentIndex() + 1, true); - } - } - } else {// roll left - if (getCurrentIndex() >= 0) { - if (getCurrentIndex() == 0) { - direction = RIGHT; - } else { - getViewPager().setCurrentItem(getCurrentIndex() - 1, true); - } - } - } - } -} - -class BroadcastHandler extends Handler { - private AutoImageIndicatorView autoImageIndicatorView; - - public BroadcastHandler(AutoImageIndicatorView autoImageIndicatorView) { - this.autoImageIndicatorView = autoImageIndicatorView; - } - - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - if (this.autoImageIndicatorView != null) { - autoImageIndicatorView.handleMessage(msg); - } - } -} diff --git a/AndroidImageIndicator/src/com/allthelucky/common/view/ImageIndicatorView.java b/AndroidImageIndicator/src/com/allthelucky/common/view/ImageIndicatorView.java index 36c4074..10ab8a2 100644 --- a/AndroidImageIndicator/src/com/allthelucky/common/view/ImageIndicatorView.java +++ b/AndroidImageIndicator/src/com/allthelucky/common/view/ImageIndicatorView.java @@ -5,9 +5,6 @@ import java.util.Arrays; import java.util.List; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.BitmapFactory.Options; import android.os.Handler; import android.os.Message; import android.os.Parcelable; @@ -19,12 +16,9 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; -import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import android.widget.RelativeLayout; -import com.allthelucky.http.RequestListener; -import com.allthelucky.http.RequestManager; import com.app.library.common.view.R; /** @@ -149,28 +143,28 @@ public class ImageIndicatorView extends RelativeLayout { * * @return */ - protected ViewPager getViewPager() { + public ViewPager getViewPager() { return viewPager; } /** * 取当前位置Index值 */ - protected int getCurrentIndex() { + public int getCurrentIndex() { return this.currentIndex; } /** * 取总VIEW数目 */ - protected int getTotalCount() { + public int getTotalCount() { return this.totelCount; } /** * 取最近一次刷新时间 */ - protected long getRefreshTime() { + public long getRefreshTime() { return this.refreshTime; } @@ -236,75 +230,6 @@ public class ImageIndicatorView extends RelativeLayout { } } - /** - * 设置显示图片URL列表 - * - * @param urlList - * URL列表 - */ - public void setupLayoutByImageUrl(final List urlList) { - if (urlList == null) - throw new NullPointerException(); - - final int len = urlList.size(); - if (len > 0) { - for (int index = 0; index < len; index++) { - final ImageView pageItem = new ImageView(getContext()); - pageItem.setScaleType(ScaleType.FIT_XY); - loadImage(pageItem, urlList.get(index), R.drawable.ic_launcher); - addViewItem(pageItem); - } - } - } - - private void loadImage(final ImageView pageItem, final String imageUrl,final int imageResId ) { - /** - * load callback for RequestManager - */ - final RequestListener requestListener = new RequestListener() { - - @Override - public void onStart() { - - } - - @Override - public void onCompleted(int statusCode, byte[] data, long lastModified, String description, int actionId) { - if (RequestListener.ERR == statusCode) { - pageItem.setImageResource(imageResId); - } else { - if (null != data) { - BitmapFactory.Options o = new BitmapFactory.Options();// decode image size - o.inJustDecodeBounds = true; - BitmapFactory.decodeByteArray(data, 0, data.length, o); - - final int REQUIRED_SIZE = 100; // Find the correct scale value. - int width_tmp = o.outWidth, height_tmp = o.outHeight; - int scale = 1; - while (true) { - if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) - break; - width_tmp /= 2; - height_tmp /= 2; - scale *= 2; - } - - BitmapFactory.Options options = new Options();// decode with scale - options.inSampleSize = scale; - Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options); - if (bitmap != null) { - pageItem.setImageBitmap(bitmap); - } else { - pageItem.setImageResource(imageResId); - } - } - } - } - }; - - RequestManager.getInstance().get(getContext(), imageUrl, null, requestListener, true, 0); - } - /** * 设置当前显示项 * diff --git a/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkApp.java b/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkApp.java new file mode 100644 index 0000000..2ab5fc6 --- /dev/null +++ b/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkApp.java @@ -0,0 +1,33 @@ +package com.allthelucky.common.view.network; + +import com.android.http.RequestManager; +import com.android.volley.toolbox.ImageLoader; + +import android.app.Application; + +/** + * @description NetworkApp + * + * @author steven-pan + * + */ +public class NetworkApp extends Application { + + private static ImageLoader sImageLoader = null; + + private final NetworkImageCache imageCacheMap = new NetworkImageCache(); + + public static ImageLoader getImageLoader() { + return sImageLoader; + } + + @Override + public void onCreate() { + super.onCreate(); + + RequestManager.getInstance().init(NetworkApp.this); + sImageLoader = new ImageLoader(RequestManager.getInstance() + .getRequestQueue(), imageCacheMap); + } + +} diff --git a/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkImageCache.java b/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkImageCache.java new file mode 100644 index 0000000..db29bf9 --- /dev/null +++ b/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkImageCache.java @@ -0,0 +1,44 @@ +package com.allthelucky.common.view.network; + +import com.android.volley.toolbox.ImageLoader.ImageCache; + +import android.graphics.Bitmap; +import android.support.v4.util.LruCache; + +/** + * @description NetworkImageCache + * + * @auther steven-pan + */ +public class NetworkImageCache extends LruCache implements + ImageCache { + + public NetworkImageCache() { + this(getDefaultLruCacheSize()); + } + + public NetworkImageCache(int sizeInKiloBytes) { + super(sizeInKiloBytes); + } + + @Override + protected int sizeOf(String key, Bitmap value) { + return value.getRowBytes() * value.getHeight() / 1024; + } + + @Override + public Bitmap getBitmap(String url) { + return get(url); + } + + @Override + public void putBitmap(String url, Bitmap bitmap) { + put(url, bitmap); + } + + public static int getDefaultLruCacheSize() { + final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); + final int cacheSize = maxMemory / 8; + return cacheSize; + } +} diff --git a/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkImageIndicatorView.java b/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkImageIndicatorView.java new file mode 100644 index 0000000..0b791ca --- /dev/null +++ b/AndroidImageIndicator/src/com/allthelucky/common/view/network/NetworkImageIndicatorView.java @@ -0,0 +1,52 @@ +package com.allthelucky.common.view.network; + +import java.util.List; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ImageView.ScaleType; + +import com.allthelucky.common.view.ImageIndicatorView; +import com.android.http.WebImageView; +import com.app.library.common.view.R; + +/** + * Network ImageIndicatorView, by urls + * + * @author steven-pan + * + */ +public class NetworkImageIndicatorView extends ImageIndicatorView { + + public NetworkImageIndicatorView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public NetworkImageIndicatorView(Context context) { + super(context); + } + + /** + * 设置显示图片URL列表 + * + * @param urlList + * URL列表 + */ + public void setupLayoutByImageUrl(final List urlList) { + if (urlList == null) + throw new NullPointerException(); + + final int len = urlList.size(); + if (len > 0) { + for (int index = 0; index < len; index++) { + final WebImageView pageItem = new WebImageView(getContext()); + pageItem.setScaleType(ScaleType.FIT_XY); + pageItem.setDefaultImageResId(R.drawable.ic_launcher); + pageItem.setImageUrl(urlList.get(index), + NetworkApp.getImageLoader()); + addViewItem(pageItem); + } + } + } + +} diff --git a/AndroidImageIndicator/src/com/allthelucky/common/view/sample/AutoImageIndicatorActivity.java b/AndroidImageIndicator/src/com/allthelucky/common/view/sample/AutoImageIndicatorActivity.java index 1086a12..4df5890 100644 --- a/AndroidImageIndicator/src/com/allthelucky/common/view/sample/AutoImageIndicatorActivity.java +++ b/AndroidImageIndicator/src/com/allthelucky/common/view/sample/AutoImageIndicatorActivity.java @@ -3,19 +3,19 @@ package com.allthelucky.common.view.sample; import android.app.Activity; import android.os.Bundle; -import com.allthelucky.common.view.AutoImageIndicatorView; +import com.allthelucky.common.view.AutoBrocastManager; import com.allthelucky.common.view.ImageIndicatorView; import com.app.library.common.view.R; public class AutoImageIndicatorActivity extends Activity { - private AutoImageIndicatorView autoImageIndicatorView; + private ImageIndicatorView autoImageIndicatorView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_indicator_auto); - this.autoImageIndicatorView = (AutoImageIndicatorView) findViewById(R.id.auto_indicate_view); + this.autoImageIndicatorView = (ImageIndicatorView) findViewById(R.id.auto_indicate_view); autoImageIndicatorView.setOnItemChangeListener(new ImageIndicatorView.OnItemChangeListener() { @Override public void onPosition(int position, int totalCount) { @@ -34,11 +34,16 @@ public class AutoImageIndicatorActivity extends Activity { private void initView() { final Integer[] resArray = new Integer[] { R.drawable.poster1, R.drawable.poster2, R.drawable.poster3 }; - this.autoImageIndicatorView.setBroadcastEnable(true); - this.autoImageIndicatorView.setBroadCastTimes(5);//循环播放5次 - this.autoImageIndicatorView.setBroadcastTimeIntevel(2 * 1000, 3 * 1000);//播放启动时间及间隔 + this.autoImageIndicatorView.setupLayoutByDrawable(resArray);//图片 this.autoImageIndicatorView.show(); + + AutoBrocastManager autoBrocastManager = new AutoBrocastManager(this.autoImageIndicatorView); + autoBrocastManager.setBroadcastEnable(true); + autoBrocastManager.setBroadCastTimes(5);//循环播放5次 + autoBrocastManager.setBroadcastTimeIntevel(2 * 1000, 3 * 1000);//播放启动时间及间隔 + autoBrocastManager.loop(); + } } diff --git a/AndroidImageIndicator/src/com/allthelucky/common/view/sample/SampleApp.java b/AndroidImageIndicator/src/com/allthelucky/common/view/sample/SampleApp.java new file mode 100644 index 0000000..e45a13c --- /dev/null +++ b/AndroidImageIndicator/src/com/allthelucky/common/view/sample/SampleApp.java @@ -0,0 +1,17 @@ +package com.allthelucky.common.view.sample; + +import com.allthelucky.common.view.network.NetworkApp; + +/** + * SampleApp + * + * @author steven-pan + * + */ +public class SampleApp extends NetworkApp { + @Override + public void onCreate() { + super.onCreate(); + } + +}