From 1341602f16c08057dddd193411e7dab96f963b77 Mon Sep 17 00:00:00 2001 From: Evgeny Shishkin Date: Wed, 26 Jul 2017 13:00:07 +0300 Subject: [PATCH] Support AppCompat v26.0.0 fixed #59 --- CHANGELOG.md | 11 ++ README.md | 28 ++-- build.gradle | 1 + dependencies.gradle | 14 +- gradle.properties | 4 +- gradle/wrapper/gradle-wrapper.jar | Bin 54208 -> 54713 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 6 +- .../src/main/res/layout/activity_inflater.xml | 64 ++++----- .../src/main/res/layout/activity_main.xml | 64 ++++----- .../robototextview/RobotoTypefaces.java | 72 +++++----- .../style/RobotoTypefaceSpan.java | 8 +- robototextview/src/main/res/values/attrs.xml | 128 +++++++++--------- 13 files changed, 210 insertions(+), 193 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baa16e6..4b920b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ Change Log ========== +## Version 4.0.0 + +_2017-07-26_ + + * Support AppCompat v26.0.0. Changed attribute names: + - `typeface` -> `robotoTypeface` + - `fontFamily` -> `robotoFontFamily` + - `textWeight` -> `robotoTextWeight` + - `textStyle` -> `robotoTextStyle` + + ## Version 3.0.0 _2017-02-14_ diff --git a/README.md b/README.md index 17c6266..6f4a349 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,16 @@ Supported fonts: +Deprecated :cry: +---------- + +This project is deprecated in favor of the [native implementation](https://developer.android.com/preview/features/fonts-in-xml.html) introduced in Android O. + + Compatibility ------------- -This library is compatible from API 9 (Android 2.3). +This library is compatible from API 14 (Android 4.0). Download @@ -32,7 +38,7 @@ Download Gradle: ```groovy -compile 'com.github.johnkil.android-robototextview:robototextview:3.0.0' +compile 'com.github.johnkil.android-robototextview:robototextview:4.0.0' ``` Maven: @@ -41,7 +47,7 @@ Maven: com.github.johnkil.android-robototextview robototextview - 3.0.0 + 4.0.0 aar ``` @@ -52,7 +58,7 @@ Usage #### In XML -To set up a typeface you must specify the parameter `typeface`: +To set up a typeface you must specify the parameter `robotoTypeface`: ``` xml + app:robotoTypeface="roboto_light_italic"/> ``` -or specify a set of parameters `fontFamily`, `textWeight` and `textStyle`: +or specify a set of parameters `robotoFontFamily`, `robotoTextWeight` and `robotoTextStyle`: ``` xml + app:robotoFontFamily="roboto" + app:robotoTextWeight="light" + app:robotoTextStyle="italic"/> ``` Set up typeface in code: @@ -137,7 +143,7 @@ and specify the typeface in xml: xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:typeface="roboto_light_italic" + app:robotoTypeface="roboto_light_italic" tools:ignore="MissingPrefix"/> ``` @@ -159,7 +165,7 @@ android.applicationVariants.all{ variant -> if (file.getName().contains("RobotoSlab")) { println("delete " + file.getName() + " font") file.delete() - }; + } } } } diff --git a/build.gradle b/build.gradle index e8c54fd..7237490 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,7 @@ buildscript { allprojects { repositories { + google() jcenter() } } diff --git a/dependencies.gradle b/dependencies.gradle index c034fe8..b2d894a 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,14 +1,14 @@ ext.versions = [ - minSdk : 9, - targetSdk : 25, - compileSdk : 25, - buildTools : '25.0.2', + minSdk : 14, + targetSdk : 26, + compileSdk : 26, + buildTools : '26.0.1', - androidGradlePlugin : '2.3.0-beta3', - versionsGradlePlugin: '0.14.0', + androidGradlePlugin : '2.3.3', + versionsGradlePlugin: '0.15.0', junit : '4.12', - supportLib : '25.1.1' + supportLib : '26.0.0' ] ext.gradlePlugins = [ diff --git a/gradle.properties b/gradle.properties index 2620da1..29e0d3b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ GROUP=com.github.johnkil.android-robototextview -VERSION_NAME=3.0.0 +VERSION_NAME=4.0.0 -POM_DESCRIPTION=Implementation of the fragment with the ability to display indeterminate progress indicator when you are waiting for the initial dataImplementation of a TextView and all its direct/indirect subclasses with native support for the Roboto fonts, includes the brand new Roboto Slab and Roboto Mono fonts. +POM_DESCRIPTION=Implementation of a TextView and all its direct/indirect subclasses with native support for the Roboto fonts, includes the brand new Roboto Slab and Roboto Mono fonts. POM_URL=https://github.com/johnkil/Android-RobotoTextView POM_SCM_URL=https://github.com/johnkil/Android-RobotoTextView diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 3743dc940a60054b59045d454c30863c8d3ad470..7f4c49141aa406e46f25ac5543d51e47c4bbebee 100755 GIT binary patch delta 19181 zcmZ6yV{m3&w>2Ew?6_mwwr$(Cadpzk6(=3rwylnB+qRv&_j&H~)mP8?v1`rRHP^0M zRb!8-vHq5Tw^e{6DanFEV1R(Yz<_{&2!q5Sk^f@|gK)(i$;9z$V5gtp+_~JkfP(xV zx6+>w|8bw7{C9n3{Lk9pK+OU9A1k4hVdpL(FvcSWu!X=@u3r5y z{&N>8=QoGFZncMeBZ+ejqAmiv=%4C)ob7te?`iRLT;nJRl6bo!fyRx8{r=D9z5UL4ODV`5f(yi zVZh^C*&pM4cV;SH4@jv65Rk`0EoM7JD!n6C7nwL2gybnT{qpPx;woxaqpvCQVns19 zyj75-x(>Mr4Lq2fY=ERe7^lzkr0QZ+cLlpQAE}LFT-d%x-hdBzvPhu8x?=fd%rDsD z*=7P2i=Xtv|Q=c`3^TFdX&KOq&?uixhEl zg8vOx(gsDXO~u<93tikV3LpC;;@dM7Ax*Hn_}5|^I%{EQI4H92)>UrBAhGD&Mr8cJ z0ywbB&p#+XiKv+-q=6Vn$r|>Znw}jK2SaabUtKQajD|Xn{bY--Xa$EV7Y@6iiQ#7*7;x)!8K}A8I^6 z@*xY4w>JpSvkIN8d#{iAVp{c3Kt6FiW(+m8ugSTs#EjIG-mW=$B8+Ltq!Uw*sJII0 zmD4G$Qq}+sQZFdF!YoeV1M0s~^XC?I3Jw_w1cU+~1cVqQL3sc(fe#M`z+h@;?CP4O z4R3_8?9Q*awuuuhL8Kv7Yjk7s7wZid?>9Yy1R5AbJc@_!j^nf4`b}QYdhUKJpi##jqon!q z$p6a!x!ZTT>$>~#xaaj0Fb%ds&G18Nr#;ZPQ>}l?((GP)wUaJG^Wco}U;fEJykI9bat@r9jdf}`4>IX1z{WcxAy>O!om434h)%QXG-V?c`Y` z*Ei2iFVLM1J4CnY1gtJcIR^@c39N?mH`6LFX`|J8w@$f-)nn+w2HHe-Kwbn0>Y|vZ>u_Ni33K3Fim)xjX9YAXMA6gbj(q+#rR%-O}J> zd)S#tB!k23phjCShrHeLKvjCHJP6oP?*57aU`(duvQfxu!IhEz!Qw-E{Wd{0`Pv8U zvA}c~ITmri1o?>whlrcvClut_n?B{GZj7LD5sODtV}TIBe)}a)6x@u{iLJhP zRZ@Co<|;FQ80EwheWBBs>U4!PtxbBJ*IK@KL3@LmmfhG}ntMtS>SL8mzRQ|DsVu*v z++usudHaOfA>AeG^gwQ?VO%+P!eEmo{6Wkh>hEM#n?L^gH6an+#C5t`2Qs;8^O|x4 z8f+OHb7N+rlJttT;OW70wc(U(D6(F9{qZ458Xi1=1)5;{37=NnoW-ErZkf1#(Q>YN znb-8#SXxriqPT=yqJ)S7~^ zqGthEB{*E#zfDNDDk9TqotB|28S82)$amE!r`t4>!yI<2W!ueVy=38*)3Nq_t_HP~ z*?nJHf@>|qsETH7&N00M+5?t~4mlEMyr0}6=Gt9t3pwq@^>P
    ;{uxCFdo17>QTVNzIrR=a?@u;vR$fngPL2ck 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 delta 18702 zcmY&r)|Vm3hKWok%sR0Ul*kuB?SC`f=yPhGn~MIfDmC5?=blQI2KsH z`L*WPFP@0(_tm*-5(UX9S`yGDF`F7oA2^!orxDAhUr|_f#vY~x9vT=}3 z$9?Si>NXA6ow1ekNa`x*Z9q}nekmcI)_BFJID(uR)Z@CP;Wq2>aMH&~VnC-`1$b^( zD%O`;cHY|-a?^Yzuw6(V&CuvfHyv$Q?{G&!Jg`@rM&<~lWlx)1ETmYgl#y6-ybm@f~7#~conPSTBz3D=4g z7BgS6GT)KdMY7cRCMMZPNu62ckN1LBu61ZftHmBB2*1+3bNjsoz?-t7Yoe*)5RHpv zPr5SDNf=&t)`GW>_HI(e=92fzCQE4UBe#%Drt+C?4h&KF3ZGN9Hz|k(R4I$eGvlUT zabYF>9fI0$LN!>Q$5OY}S<=o*_8P66u)t}7#Vx7)35dNVrsnoaC*@W!+Ng(Kh5r41 zO35$*!`l#!6vA@^VEc5g-2K3ppD`-7HN;$j!yPaJ5#gjYtcuy{Te*wqE4;|v4G+0e zEpph!c`XUhxT8b1TBTyZd~M;z9DxI=-E#xkQ5y8P<6gV%8+i+<+`f=j1(vwiA1qI+ z!ALVR&<`Jc^>-sjg%ck+=rX&VdBcvkgJ0Zdpw5@EUmK7fHvgH z?M9@!8T+y#A?bJw`Gj6~kQcj+?RYxPlz;`%pP)@z^;- zr3C~~fP5UJnxsO^mD~{vN->UlXyjAiAr+ah8C+}P`k=!}J4@Xbj=8x~7t4YN_NYdY zuBl;_JMs?u{j!YC9kJ33AA4g%sBRXztsXno0@s~}YmygHdLn13kOse7gs`o;7%SqH z`14nqkwvZE=VLltoq?G2{GRU(Pu5gPvJ6jJK&mWRretv7%TK)YcK@_$Ac$PkR@)!F zo2{QlW~Qd~C;N9*`i#|u*3=6T8$;ZlNIzgMzF`m+R!P--Ibh#i!r~wPmG*YolkTi~ z>Dji?&mS0q2>jzZ30oBwYGQKcz3;e;bSt&m6-}Br=np9nv7l0|)KpERNU>VQf|2tj zfL5c1RyK!bZmT0~>#f!&HrFRO$t#`sT+uS}$mty^{}9zD4%lbt)kiPqpAX6i%xNgN zL{TT{$3jB)y{6TP%bj%HH)N0mw5@4P}A70FqdXSDz=+rD(J%C+i&Rxet_A;lDe;KW}qZ zN?+l(@Rq%Q0PlUVu58fD+ zx=4ExmoLd61{!&^?6DhT;*L9K%br~3t*n`S-HUqJeXV4OEQCGTFM@xi4Dvsc_a9km z#FqgFhWrnD@viDil!XumzOqk@gCGLfK%;0jZV?R<9%;$?f`6Id$oT>hjC(?qAxoEC z$F_T1bG>Z4SeOI8-=9GQv108=;~Vz~EsW>_GTE2wOki5=MB`iQ?DpVA zKGO-_-?>Cs4OUIUmP}O`X_vkfyRPx@A)i7BKvA788v6h6)%Z3NK$vt~c|ZX+lkPR4Qba?zJO0K=z){Zd`-z_5c3Hl-%Cr)yW&E+eG#b zo&Qi~qhK@$fyH?f{^I-T>sGXMU@te`qX)rUesJ+gr7^$#s}xS;0UzJLoy@m{$l%BF z`y7=Tn+jf8vk3d-ud$}B%@!5Fee$nEr?6JrNgibE^c{m^hD}^TaKoPuPeX3rrrWUm zS3u}k+*_eFv}QIBlZba3=55{46?}&_E;H#=H>H#;pW*8G3I(P1n^C1QCyucv^Pkt) z^0PC{@Y#mt^b9J^BNDc=`_v4-jRT}g0M85B8f(TC{HYHHzBPp z0m*%E7UX=>NN9g-n`9*mao;dn1CwbS9)$*#b={?h=uUe*3T>Oy3b)Wc4L$DQH?P|D zf@u3?8EycTE>5bCG&}S1fVs_B6r>5=h)(~L(fWBD03>y+fp#Rn|X!M8>|03#N>|p;EIHusc|GFY2V}X(W!=J799V$#XAfRn5ARwYd zCvg14z7cRhwkDJ>>WbfYPE#ifHaHPFBJFD3>Iftr&A}?}eqDT=VLg45q-po;U=r{;8@uzR55zN^6u_BdJ)i~n493k#8Ds$u4U7Q;Nxh|qyJ62e zXb5=O)dIO0c5(L9pZ_ez{T>&j_|_hT!QQqoWUIln?EirKhwDkB1POzoZoWf(5_e2o zzMFj%w^AUv1Eoi|>EzaLRWUPIue?2Z{}fX_ri2j;5c%J*5^lc3eHwQh;NR#53-Jk& zy@>$f9(s?SnmwHPAcyfiF|N;U+#a$}hlxEN=hqt60|M92!T=&)h0zzcPr*S1xXWP` z?r$mnAFYJX$gHnQ(4!q#+>zdkR|Jrs@Spj+9qiwvt=|%(Kj*LYAsUvi;Y5T%^w^YY ztk%SN;d%7J9kZI<_=8?uqJEc zZgO@@Vq&0QEICu__68&Oyc;Nxu^rRHZz5iR<>~jcq$8dh!H3h;zw!0oqWjl9g$IKk zvl(rD8-B~NZ3d&~G`EABMb)LO$AHJe8WuhdZ%&;a!<8wOGk`nu z83FpSMNjP5nQ6kqT^17bJ&USBk1cI_eekVaYJ<;6&OC`oetcY3(_XtqCi547T`sGp zy7aZqg(%ahifY|QZhTC>)Z)IT8x^4F_Gg5>Tq~EF3DVYz20OL+>-w(Vb8N9`fiG@) zbzF8TBg5G)wjg~){%H4&Iq5h&bt-<9!ZjvsN`#@{Qy-_`6ex%`i* z&9qO8kL3uxS6ZFIacOBW1&;j7e2(pJ`^l7++VS@3DAwwkF`4|RSd*mlLq9;kasv~I zmq6-Ec&FWzlD9w5+$tQKHkPs$4;dYqm`KLS#rWr)EnDZY*1~gJCi-d@Xgi+F+}_iC z#;T-Fm|^Wvv5HK0eIfnpgk6F?qw*0O9wkwPMJe9#T+z{5r~TPXi7M;XsyfB$IhgxI z)D=ehCecQ&TiD46HTO!+v?4&q<1Xs4q&f`4s(F9DS}rqw%*8Z;Kgp*xrtK>wQ%a`7 zO-=QvPLp&~PYg4GiJ0P|l2bJuQx)P+YwA++h$Y1#Hr1%Dria7&rpj=l!gR$Y$+O?d zE7>uc6U`IYX5(C%@o+mRJ3HaXO3X=#8orW7A~|r+b9jCJ&~qs>bQ7>h8%&nfmDym{ zQddPs?j$?TR8!rTZ2Ff z&CYo>Kipl#HB26*b`;={=}Cis@>Kk$2kju|nodmKA?K91S{|M$cZcj0Np8Qf|Fi|zyErA^+EIrH|MMD8tHuW*T>sWQD3?`#Vtiq1gLZRj;eJ(9*6ZcAJe4pPEN zX}>UZRl-T?EjLH;oVi~&v{n^Eq4Id(qyqbQFO1VVqAd$AaS(uqOX)B>q;pFFEOdrH zgDPUIxtpIDIudd)C{b{Le?Z~=I21ltRslMNJj8I-DKk^*JQCg0GT=v2{9=5$ zuS?FJJ}o~CuhVlhb7H%!%`Mn1tbRh-$B?l+;gLC^xC+ojVjtm<^Pa9r@G@tbB;9rM zJrH9k`dX`e<-ZbZj3IcsZ_g6JDJj^@v@i?9&%{*D_vWxsWvVqP?n+4?e38C7wk$7@ z+R0`MCUcQZE?a$5?q`;%R3_3^)16jxXB~}1yD03}nrbPQUM{iIe_>}>Z<*RC{k|&8 z$S_tek_0#>GY=^%pRnq4^*md%*-`{+P?#C>U+7>|>MG$uJmfeuvR4~QHasiE2-I#P zYpCUIH&vVA$*e04Hhv90Hzm*9g4LIw2djvbnx-w0#lKNh*XhoquFyp~q)IoUW^`Im zUwK!E@eIE{<2?hZB_)4bx^3K()6J{*?v$@8?*lASkfLl2)L81B!Xq-w%bLHTND>UA z)?SX+eyQJX>6d<#?R>JM#8*s5kd;Fxtf$z>W!pVF)tvwOV^`|qF=V3)FmCZ|N(fdJ z?rE#>E5`7k`fauzsj&^Wl)Y0{1v)WRwqEjEjsCA%?M*_=Tlx-^YrC#_`F)A?agWx7 zoFu@ok*c#KnyaYnXa%TROJ`<_^&~L!8OspcD15Z|SM(?B{%`67&jtjd%kaf2Iu+f6 z&$5HJ;WbK|Sm+*4E4#NzkL<<+FCBEDbSaP;HkQ)&!p)hZvm>6nAA-y-sjxgvEC;CN z;uMu**_D~4j}(2k2E4}!2W&5er<8(Rn*o5R-8IdKjT#0ui#?WByO5s7i~s2awTg1% z)eob)QvKtq@q(WZUe3aVXGJls%>l<}70Z6+bdJZhk>O?apPMu8xD}gEvbgStp3fqO zY7db&u$A9Wt48MB7^-P9wFV2z9&7~TWmUdlK_z$|)Ay;m`S8kaHHrlT>RDpA!03R$ z)iA3`M}C;RUsg3UYSlMFn(n7rp=OCSIb2V+#8cglT;95GMR2$6`F_6&x(~2en>_gc zj6By^AnvN)N|8;Sv>_42WJ+}hGZ$Evu-Q1`EgyIvdd=%6{ds81`+l+fGtaOnt38`% zJ|7}J{noD7VCZin)y$6D0eS_U!5{)qhyY{N3sjohmZjbmKV6lt=1CH7{Hrlf=}2%* z(VWC3Z!OhZ(ddr`mPWC`!;MkrT;3)hak0-^G9(sBdjwN8z_4p3Jxtw&+bcP3u+Q6< zZ8S}wsY?D^)S~KeEb_9#ClD`nR=2MrXV$EVl)=O;Az~0llLZ$Ft*(V)b{h!*MQeyx zZ+A6E9B}&{rrsAKnddL5;P~{M@^Z@OyBi?TI2zZ=~{Tg*VVmVQ>BR z7`R1OoE2-k!~Y`3hHaUR&-992JG!~;cg@+8L(ygF9OAZmUo^#1N%zKS#A)>Iwhq)VXw9hCCU^u)CG19l6h|!<%EUuETInxKIta$D<)WZlV{oI=1 z7lgk<`&i?A5PoYEzZNVhUEixzr(Ny?HUDM4XS@OE{AxvT3qe2w%;H?z_@alxoDy8a zBK&=d2U-~$VdKo$wO7cKi6hkStIshcMTEL%&9S|N+)?Tygo@#d&8PUwO{^u6S|<)% zfbXTS%N#>7Xu^zxGBYQcUC$~mKyLXCLOtx~W`;$8;pI(Gx$<>-ob2Oy#v~qE#4E85 zq1we)M%a;!&ChJUd*Om{v;g@Qqfz4U>DkiUPSqMbLkX^#&PyV?CGbgIO0HZt5Q^NG!!bk&rLR z7{5rIFRFYaNvb29joVZ+M7H@glu+kKH|33Y2-pouCqx1_Nm{kD*d43HrNdV3kcOnV zV-K#BitW{t(<7UV@(b;d1`WNFp9W5H1Okj`#W}mzLvtP43MxG$$|Amr+ZhgIfoZ$G zpVHc53V{9JRt(&ZAOjBt2yZi>Kz zjR+?dw~827hlzMc?vkjRPPW}Hf_$M)pssx-zGXLzXKjU+3>qC_x7FODURmAT+_L=K z{M_ABeDlxh`f2wtXO^M|Chzrq*>>Q%_{qBQHPC%V7=R zWd*#=m)&#G3!3rj??K`3x8}ep`ooyo7O)2Y${9*5rh>jjrH7xb=2gqc8(08lO)s7J z#DboAe5eANIgT4B1+&DSfx128)$o=s;u6{O`js(t0HQl?_N(H+`K>ChL^-3vx8@i- z_~gSYU;xH!qyT8@V0gZFXh!C!U3Q31Wdtw{t;n?U?$yq#ad@}Z#oTvt+y1L-iK>fQ zaH0>!L2%A3sCc|7_ZK|0tNE9_r^gMY@WI5hkpI2rp*toULn#@e) zxAeh2Ad4g}2b&Zy?_zTkAfH-2!u+*ytu(_F8kD|hC`{#Y^=bCY5>2AQ3XEVl*cvN# z*4u4``Q>g0Ath>=?CjMxYxO<$2LSAnfn%9wJ#9JBNVlaX?GmI5?P=B;eta2C?aB2j zv4q(pYjOk9?WN*O*@esla}BxF@?a8gx!Url$5V5;M!vA*Z^teU^l%%a5-od_Ol;+Y zfntfqjtfHLCO+b%lQufdTt0}%k~2TNc+-K^;#ziMZ#{|79LcIB;|w~TXaG*|$N@bN z*A6s^xh73IJ^dGGH@{XQN~B&(`j`#@!i6kKMs(VCLR8Deu{hkH{Q%EU^tGz=5Z_Yn zZuQn*GgFR7v_0XXgnoI0i)=CujL7HC{AJ$ z&zvf2Qi*}$Ms*y~&qclt%m5PE1H5~tt%|j#d?=NOhSDZ?8<TK`JU>+~!iKa~CtxC;56$ms%X@S>=+#{6Ow&rC3=UW&oLk=?t{I-DT+CMCglu1` zQKa=QtM=vT6fXt8MdA|)LRpdS5I)patvkbNS}e{M$Bx56G}ef4R4{SH+I5(f#_HTe zk1?YpQmTa9wXz-|uVEu}$^>~r7inhLNyu_j7v;56q+AwPb!HIrz11e%kJ-AJXlaU{}U4`?-Cv6)W3A@5wl z*mzeR{u~(~13;fLAW9bB^aArYk^vyWfy&}0=rhm0(uV+(ziE2u3=%Qp9$joJad^%& zaXIrk(87|kOh~~t9!5&VNt_5m>NqdDZ1x0WlUdABH6fn|sVCz8y-zzHU2m#7V`_JF z@48QeKfwn!2ZeW+^Ie5Iq^ftGk-1syTnBFBWy|VC3@~o@H`j5!{(O5#&(LeFdi-`D zFQ+VZ=wXE^(&C)74ybe9!CR=(ed&}{N+fSmgskRt6J8Tj$XG5wS>QIZms-%KZK{wD zUS8fCmNC5pqo{vXeXy3_DKMg!37)uDarba%e#T4I(fJ~{PD z-Yzw$1h5MJq5g{cT{Exp*d)C&FHq(R=O7^DP`V*vF~oBQPj$hY4CuRr`hppi!IJgjw3_sb~Zfi|y5x zccu2mluhTvp;ZzJ&(QcLj&nTFQSXemmizMT00I{G^;sx=OUHM19V&b=ZdBgvdn7V^ z)Or+H+YF8%PVFv%2O~L1O;V7SSk^Mm5*}=Wh1Y_GE%l|0^(k>zQ1Uf5q4PhRSV_?5 zjla^&jT@t7fGgqIO5C^O&=A~+BSRngZRg{^X9Fj@zO5HA2R~Pu4I=E52@b!E>p-Xh zfXEjnJAoQRs%@ycu+V~BdEjJ%eTT}X*lYDSLV(24%>ebLU8?gY&JG7 zDt|SpIok(}clAa!NBaAZ(c0&gnOf-JRiMIU= z%u|{ZZPU9*oonx{bDVmzu(q2uu61Y;z!DA%3Ud?{Z!fKm7RriTRK|?OaL7DW8~>d3 zU@i{5VbWCi@(5LNsX&vma~?LoqyjFPRNDBg2{XZ2F(m6cYM4j4S+DwvG7f5K4QxH_ zS26)QD}TW~(QnngQPtnNxPUZ>IyHpSDei^EcQTI(UP*^a-=JK@Hz_Ziz?suhK;WTZ zCz6a^p3jN9tHc4NFz-YPtGE(i^2f`>xK=rp=$<+H{V03vGe@;};m7+qHppfm-1xZH=Vpi}W zDlHRKDan46JkFnP?a2g7S>u>p1~jJ3j5x?7&jRj{b@?NL`wQqF$s>XX9O|E-ogvLy z74V8r^dHru);GMxyqe}%>E4rEs!x~X9W>X^z#SPKZ`tUQdxkxe?_@&@z=)+q6^>Gu z+?4#-n#g|W%P`$);I}9N&1b-P@1Bj?H{DLiruQe`uV#l131NJ&odFdAvQj>qPKF7K zvgBfMIy>uxldi-rM8Tynl4Hqtuwt`92hft3j3l>_9Nly83ixbEmJ+;DXOR2y8Wd=W zaJyVw=5siWf?typo3xkTfJL(z$;#{|=j*351(|HKb6o^-_J(>4chdMf6LmShphQSK zr_nvz8b!x<3SHCPKG-L_FJrt}K)^(Q*Ci+iQKIfV#yk?fQU76!nwi`zN|EfrvP zuWu1UK75ysE)gdooP;IOPbSS_cm>uV1vQzyeSa$SKst5FZZzN)fXp*-=Im|twfdI+ zkvx8Ian8QwFudR#MWD4ULPau%c~$So|LC@EwZ=abmEU7m<)iyV<(w#cO@=aZ#F!63 zk7E)Q)#>+cCfOgZq&k0jD0!7tlzm!jqcB7wC6nrj-7fW9$m~zRw@TbF^K(Hob*tr` zAj2^^M`D1~t}*`sfZZ638ND+r?cr@tMH1Xt!8bFZ*S(Jx73nbi1F4NU&HFX7slqWl#qi>tmbz z;I3KEU$vEhi%%Wrs@iLupI?B%roc&mK!>7o~ zxa_PCI{3XpQ($P-0wu0LhT0BKSk%!xwBAP52H*CbOqCslGWIw z39Ts+=F&OnR)k-FMv*Z62!CMCNo4du@cVUzapwj{>3Nr>!!PM|B!X&5Gnp&N0GHsM zHj=D?OJ3Y{&-gZ83BT|v!XAn2|G45ym>p%!ynql<%p?# zIrQ5}Xa`Zwo(ADPuss<~?T;#}ph`~hzJ&Og7C7F7P&;yi`kZS;$l-$>*9zw*vvW;R z?VP?OAW6nzZsm+z5o*@B1MB(8(2i?MxK*U_Z1w@Z1EukJ7WN%{+xJnf>e={6PxH@1 zMIi!5K7)V!1#~HX{_Z+a#bOg9S5DHXuZKAyvZV5$uI7=AXYc$@e}Z}eLk zYw`(IXe|9B)=!g5u+cjI=(0r!dWkxx_?s92n0=Y-W(5%A!MsO&M%Hi(mo6QHJ%C%r zyx5N;P=h@{oIcVCiFF*?uU(ydjp`#%gQzmwrYx}{T?Hd{Mw8E~3!32QdLm7gT(QQ| zhvd7@rZ2*~1fB8DTYqySM@-Mj~6~zL2b#r#2X|5 zrqiCdI|#&uhYXiM9tn%m1UoGS@cgx4sDyR~pcyPhPl?{yCp(aJ5&qe`pzA-E#K8Dsf9u;-WdZ=UjGp&gVa;?S1MX|RNyTHNO; z+RR-!#S8P-V|40b9i-(}pEXD_!Y zGy`U+RWfgL2-f@ESy3-pIfJKfJ$CB^yEk0k+ft>U_-%*zKO}_bwuccSBC4C}N^Q<@ z(^?aBBChtCH&zuk52!VP7tj}boUgU{ZgJSzpDoyLa5X$P@Z5M%@>m4`Hb!-oy*H3Y zEGJfckVRfWo0o-iB5Nz00yjHmz!#w&qa+TgN|SN_h_={dYkBqZ4=@@;^1u}Q;-By3 zU+WEEUSh}t!E_&15rghD`VZMFk=j6=4YtP{5-h3x1Ce*mkR2FA1qg((e;=3*ksxd_ zRG8K~jlO&g>p$wwHe;~>2=m0EesssR!jr8e13pM6D}+4`g0eRvL%jZ!oIuJrKKJ@O8*L&p=t-VIvr)VwzvrwgL=u6T5Ap=JPcE1q7S2-pTrZ zQf;g#zT)&lQwat(3FczwJXU}E42C>QV9fwT1?u?(!ncQRvRgs`4zoJ!O)iJbG|f)- z!>N70wfAC3T*nHF;1qpa#EeFPf?cjlb#H`b`ejei)_G%q1!m?^^X#YqYOR4$bHbLF4;&wQ>}=s}rx%k=uM9w6Z-%<^fv zfKUF&=p341xzH6FtR0WXSAH+nco1<)AztDY$gkaW;F`M0c(ar8;dr(u8AWBoZ<4gC z)LSZ35h$H93o_+BP7y_b?DN@?jDVjt2r(-Gfp*U)L%xFp#*o`6UKThZUdQsBU4QB` zgU;yB9yc6>e&$4GEqT}(7v#@VzF-Lnr1f0+tP3tA?BZ_>AN8pHw}mYEF}T%*CmPQ{ zOeYb9&PZn8L59x=gw7Dk2EQS-2?}f8SSbCXeBTw)Nm(&At{@(9R^548)^?1Wi(b32 zc&@>!vZGA^3}w)l&~cdngbMt>br87UkZTL=&2R?*Uxh&H>P2Kb znQo8y*Kz93gwrj+;UMN7x5O(+|AaPlWPuuj2FoI3!^PQaz|OUY!_i zfHA?k&xWnf=ra)c@Z*d-|5TXfZfUQ72Z=GsvF9y7b)2Ry|1DGoDOb+1V~X)mHXk6z zq;%;!VER-))mx@a)Qb1%3 zL3&!-{yH=}duvl+RQ&oF?DuN8-d6g-^l{>rmqiLs0NS)sY$nrc_Onxz5EpI5kt4m| z@^mMcq|5Y7H7{86uOET`d&JfnZg^1u4Fp7u`Oo_A5t|_~DS$T)PCSSRau-Y;Qz}eO z5^ux5AEYac2#V`)5Ix>ioSP|QDc+UTZhbzzNzP-zHK8eaixcWhHuKu`rhC5o<+Zo7 zkya-3u2x|8Z2P6>%kSo+XEgE0>y-&8a|j)c$FVhH$}?P7pE@;_inFjlGBEPi8Lam9 zAo+Kf^tFEVK7g%lG}hv9h+gyYk@H5FoL$x7EFc7wYo@ z=lc8%2>|VgIiq-VlvRid`KUH!Wm+dzTs9|HPRXeYdDL7-ghY#L^?+@1cXw;DcvEes z{D9!$0dJT+YRm%@9o{GmFKZStG}8Nu^RJ!4&2NgRu^c#+8jZyq`}HL`87G~A#K&Gl zQRsXF?6<7RN>kz@@5q(^mY1%rY+}DwQQi% zQ;110NFJ^CKX=|PqyQVoiz>s~#)`(`r6W+t;B6`pmlg(1DzehPQrbt4y%0zLu4i(y9#qy#&ZbLKskcx~_#5RXP&kl}1Uf zGl%ys!~FEw(w;rXs34iFXHol^lI}nNSDu?om^{matGf+xV%JWJ)Xu~n5o=`XVkNtQ zSq65gbM^%p1w(vre<)DUeyOS(?Z2AH0(9Q8<*+c+I_A+>Oi5MP#h;p@x+*;fgdDFy z)TFSfShAxqtEu)ey>$(p)LW;AJlCE3NS9)Y3hU$fNsL8Dt7$W)_%$Y`+%V)5fgfr! zFy?f*@}D=%IbY1A`h)EffZ22-FIc1Y)!|xq&EZBJSt{p(=@UW>cC9+7ce10f0Y7To zMK}vXo17y>v$ryz(*3pn+{E;fO*;h?9GsO2<=VXo)Z~Ti?7d)r`wLLNCWZ(cFvwP< z!!+wCM7v!aV1GySTD|go=Mx32t;ox<8l_ zo1c?Z{hA(=f}0t>nveWRziP3H0QhyVEoVq$IjJue4Sg_RbO1Hu|J7(LDWmQ#%!j?gR!$F5J3&phav-(h*1PnFl41GL5SC0T=_ z)ytw_Ncs6mSe1~cM4|!ntUrnlGzpV{Zy{L_2N5&zC1aObh)7JC{#D}`nnvQzU_Ho( z%-lrcGYhg_DYniuFSfdgHxVD2ACj(@mWH)5Zbrp`-Qe&tnQtF&^lcK?ot%A6Bf=p& zEC?#81XYuy5T`6&uPm}L22^X7hCdak?=s&z+Q?BFVPq;=Z-$A+ibuyQvO3{^%SDte zi1O8#cs)}xMCoRxlW*A~$bAeYuaHLDDT)@7vxh}@#RS?8X0(B}(ikUp5wy-jozRgd zcsJT2)TenlGdh_BuH<=iSXEV5<|-V}vFrIUyx<}n8_x0QNt{s10J`ZP=9&1GGH~Ta zql4UtmKuDIWF1+#Gvx1$t7#}ZgGc_RXqYPCJv5KF(EcTAjKtTOD>FKBA1+?Nt8`RU z+~gA9J@;abz@@K>qI>f4;Sw#bR@Zt0c6)1Mb)O2BfTEu0^d#(U6c`zT{CSl z^ZKfuz1S8xDezqj0_X`)nADaq>b>$QSS)$!_#3aP&pwLizwJ>CoblvX===4jxYVCm zrrZRABc#0fxpSzHk&ot5AMXZR^bNo^xM(QcZ*ws*j9r^GvR2{i!G~(kW5%92Q%aS1 z)>Yf<8$DugSf5BpKhT)x*)=$Evd?ozR{NvnZMkmK*_1fw03zyT#H$zfd~qZ6xHv)% zAl}BELm2pHq1&dj5_aYvvg=dgRW#gtrsV(1yIfhP=Rj@p$t0LHoS_?zYk6ALG=h&L z980|oGPq)3Ys2(+|4RG}%<$rEiCP0yk^p8eX?1q{K`r?4cp; zF0Sr`_nkUIXcmsETO~Z%r5l)uS2-01VID0QHMs=jx%#eYAGsL%g_kv2H>>muT}*t_ zoQrr>1OwK#Bk(}{piDs^xFNNB_P?at2&UI6Hwh-!0I5y@N(%#dXd(he-C7D#ST0Qv zF*p=Ngmuc$cJz(DsYsVVkfV(?L^ZZUd-P;~E;;DK$y0Fu?raus|~+ zDU_C~0HA2Xk)?`qNyAvQV|nC%6N{(5^8g2=fzFLp?WTjI^w#QstOrq35Flhq>H=*H zk4V+!2w8)d28Dh=mt}YNsjA3I-LR^1>wOS_byw!5F08ERw$x&=Sq;Ik>(OxPaO74M zO7;H8Jx-xx2IUNxwZUyTLS)<#+m2%ChPzlc1N=CyUqd}5u6FqbEDkWgv;v_--^f7j z5eecB)G_hgsQU5itd$_+NI-#JqgHPcy_)XiVO4Q*r-1xv$~^=Q+EAU}4n ztY8CJy37G`ZlRSlVoFz9=s;23qz;pmd#L zm@`1=uxxuVWXKpDi*J-JG4)qx1;Q)I0k=^uHO$p0ZSPfdl?grVn@gr-Wk?l?JO@6zN`jd!>MU-xR4=kKf{nnOE8=h&7Ld43LqD3py) zXO2m$V~bl$OOkT#|J=5)tS)pLVVl$rt)JYMzfWH^&v<)I`OL(B0H~X0 z`{&2(o*5j`5_>aud@c<}bEY0CUe$!BCNzPp(DD&e}wuLs#qOFG?ZhZ$dklumG>j}-N_-=)H#HlvV*1Koq_1^1=6chS;d=#%p zX*fPuP80caMSo-uvoD({iK5M9Ie*e&HLVPA#e^ z;1^;l!$r+$9F|N&0ejcNlLU*Scl6f-upnjNJzC(PLb~GyF~E$g&sS_k=kab0Ar32eXr!blY*^ZDMm7o=;aDP)$1^AH=e# zCIC5;s&55nme`LO#M3dN-|j;_9c%_;VLKH+btG9V!gZ~cr(2r;p#@AEgHYZG$j6Sx z)I5Ry`1mfz1)VwyGe60Nr$>>ncrP;QGZvI=ZFv({nJIW=5Daluh{i*bZAPx{)pNt9 z+;}H3uxbAwDHwm;Ea!-GNW!-_D&OppXO8b@LxHeN;{>Hj@02z(M$rM!Ve0zaVKOkz zY4JK6}8DwE>$7)bNNk^)DZc&1yIdV$mmG@wDf@wvX=q||cD9CWoMJgnSt6u(1 zs8sp`me81t!7v>ViLA9b++8P%&U1K&D;aJq`WZ+Yn`Bs-OgZ@rW&jk4zvuzeUF4G_ zN%#YkV}PG?OkX7C`gbm^bNSBy^7y~REOk5mmyV>#Z@>OUpS`pHgPiPjf5HDJ%#(ay z)esa22pc9*&{7oOfvtx64G$~JoPHdb&qiJ?1&am@SKVSo$11(BXgDTT9&SbB?hloY zYVK$rCi?T|rsl}U-~z@@S4JcE3-24=EjNJBw60idU|;un&Em!Z@R8;BdQfWsfN%s8 zkmL;AAWk968phkMl5C4qAgdytD$Tu{sBADJoY0qAeSOE zK~1_(F}C*IMuvXQF=x`9!8E7RXHGWOipCh%=1p$3RiRqVEKyRE(^085D^yl`B7m3UWa zfvMPN;nHHh*Qi&dgL0wrL$!dcml$gYMWXE0a+`##tz0Cw%sKyaiAc^oj}9XTjcMOG z%Sj%I*NH60Y~7+BQ%kiZdN`EDtieVJMJp%eU4Rd;r#i~$P_E6WFyo2??p}SgbQy9D zEoUVYt%t*pT7?}sM~cS5`=e@Skxr16cslJ)kTrOIx7WU0o#8s@DwERIo9r!QM~r$0 zXU0*P>^kh;@Nt0iuvWV9m#V+!8Sd{|d;E?Dj63l@y3+W0s+UVKPvOTxML^B6jxYJzN0TOn>5rOGQqkLL5fdR5>y(YHBhRj zDHzgt7PVx4z7rMI5(n#m6cI<;8E5RT?W4nDw}y>#^1m@%bo!flgEj3sOhXdr#T`&e zt%LfE!+5oPJu97FtSz>5^&D=V_FJzx-x&w+`*d2qD0koi`e1ZPV_T)lL{s!kw~b+N zu&J{0kUr#xBCO_OAntOs#l~P`aQK_Gyl%E~UsYwF2=TfK2y1Fz!@f;tfHAN6pMIgc z1`cnDZ8t@EjO=@PspE=w5aHBlDO>7AWwqzLpaf&-eS}`54g<~Vn{?6gBf8GVBX<~J zK3j1oBKPb`dFDDp!G(EEhGBmCGt6}x3pwJz*L*WeE6=wj_j;WB=Svs_fxP^QXMnJz z@20xY|Dg>C5|{x_USQ$e!b^es#;C@uNqSxXoI%{Lx4-cq+o3OW3#kmH0q%9#818k& zm=z5NbM<@01_-!05!5xJ=LCs37PlYZx}c2`zyduN8@~;ymdAKy-sKsG{_;)X^`ep+ z>D&tk%T9=A6lU}_k7OE>TPOU71(sp2ok|umU=Lgz-A`y|1~YQb^%2rU-&SClbgE0p z03-m4=oAH?<5u0~>;|LW;;{cBuSYN`a1{~>1!iaU__mYV(QeD&)5=bj6T!sR`$S(iB(6BjBJ73Y1icnHItSB6+9tj0De7oeT1Xjy^ z>^kMOwr?yG!siY+oP4AakaRcYUM*~6&FQ+G`O@Qcv*ED)I6A|y1B7}v*@t)xhiN@m zpJy`XA41lg#+{;;VXHJ65u+9oKzH`nFq0@HSHN&~+zSL0JYCI&UF)lMOoW_6(xH9o^vLOU#SZhA(2g;zV0(3$xP-*{bE#9kO;S zy45n7K_@qW4^vu`(T$$t;MKmJEDh^Tx2d$y?t3Je1-*bSKWIxLvlaiQ$9)j86cOQv zk(a1Xg!C!00s}d^{k09K(zR*Q;A^lJD(5M{zI&O_@Db%oCMsURL`=E(cpFaW2-^Gs z!U}md8$=RP32%5}sF)I5KPDh+?Fe2iQ6A~pc(h)IDYs|aTC$hIlO_x>1y-o9G5NFS zWe{Vwr_&kZz|{kLSiZ!Ezu<>haZm_K9%nA8cQRGyG-%bKTtx>!AM|8s#>9W_h04I( zaK`R8dJVC}Hh<6VXXX?BBfgK$rv;}ACDUoNo^EQTjcCvY`XdWJ3Rw+8{Z~aYKGzb& z5$8bBMeJTQRDej_$*|NhAno~A$1{?)tbb+|fbW5z5~ODbzPqbuV(#re%9|n2_qK?w+w$N#J&B0vyK0u zX-i+7OWHp)t@!6zJl{Wigt}2Xw(Wmdy%UyawL!0+`X^{3ksv`3V5hL4i2B=p zWlo73(?R7HOcWN!!OWi!7AeaZ9fL8Q=*|RdiuO!<-hC){4`DCTpik2H^)i+?XM^3P zPI^zoXNK>DYo`6Bs|ir^`wLvLFD8oh*!1yU1L2sA_Ag>Rr3usovc9xteEj|gs=k!w z!L1vV7!(e&K8vdzX3Cx&fSJ_!%@4fZl;9lJ4{dPXBQqLg>#Yhetq7}Zm2GNs1^3U5 zNb#v3n{LSDcD==_`j|bgP0aBc{2%2O+AXT|jEnOi&5Bidy=tEI{PIe+1x2Wh*(wqI zM(!oP$|pLk&Jah<`0x3nW9_h$P|e(imXNH?>A4D)(80Pq*=GF&T)3~Ot3 zy=w0mqov4zXhM~C_Ji&Ic>RZnZ0z6Adm9686|*CBU{I>?udel4G^k!nkr#0Aa zG7lNNg~>m7&1YC8@3pWvcUtSD*6r3D*%>`1w=I9&gK|$6p_xxLZozesTd>q`R*{8L zHZo~&>~=p@khiHR0eg6EM^nN~w!<}56xciDI8eay6s$bO z!#2FpQ&a+n1rg+YK#M@oVvC>>toG;)STUeHN=2!pBCUm@MjqvL2V8liJY(t~k`@b9 z5{YQr?`8?du*oKyx!?Euely?f&Nq8IBWpPLlXNP>aKKybmn82Lnq7Jl(4He5^-e3P z`ed&8=j^+c8N8j6+M4&|=?0tQ<6q?qz3SdJ=f?4)v!)gICpRV}TBgabxi@DHJ+&_?JK;NZ zZ$8teC#W@K*MPM8$iXYuJsod;eL!H8cPBv>VeIp=HdJwrw`h63<5<(W#QvDf{zgva zM_29J1Y@S%ON%n);$O}i27Se+BKA5pmW)|6iIC`WSYV^%wfI&{=gh}s&U>#uxsdJu zsHQ!Vdssgr3@x;8vmf=;fh{O>^`1`Ny#U_=Qzmfk4(HHjly>h56y4#uvUvrPclfgN zJXMD)d+}e#R`$ZXGXSsG9RIhF)1^mICBW#2E_B+%3{e-k^)W)tYR+e~F(+?>n+Z5Y zaB2^ybx8cHIf`;ILPgy?mh;aZhBh_8<@{b7OrYKGf}%XN)^HWL9!a{y7<5#4w77{w zQTt)&^CmzXE6f%iX^5i2Ezx)n4;yF}DI3AlU~`nWYFNbhyR zh86Xei^K4o`M_vxeIi5{*xSv=z`4`0-^>B~h(1NR5FQeoFffwCpv_8FPHO()lo|ky zz-dQ-uekzv11i?hMPuD8xb~EL%YM*K!5rF#0Dta=nHxfQC{)FQiPf|O*klWUtzmKP zdaRfDK%4-k24dETt%lC4JBuc|#9v;7QTrZjlpwM|KFhkfw@yzK@ylQx z^vK4{c&!&y4snQ1z!+8UCN?&aeGKiMgx*iyh`#FM;lu@9hcbB*YU#5UYQ}|Nb;_&) z9F{{vkzMCu67rBcp(V8?Yk0h$p{r6*RkkDgq2CG{i%$2%D!{M|mLhK=s#Yokpa3nU z^H2q}vc?nfT7v)|O9!wWyyfs5|;v{eQ!n^l>zWxLf3{mx0OD6Z551r9A&M>5RN zbQU@>9DRmW&HR>W8GF;F{~r6|8uFzB^8XumQPgI1@TfdptS z7t2ezu|X?k*APRy>wZq4!D3=W`IY5@%r_v@hai4^4NX7x zL&hU4P@Ai+m8mKR)&L~!UuLXmHE#trA%w%3U`(n+kA_4>wxhU+{yj~qqrVdXy2d%TS*o4jGYa*Eb0t@MUsnoYQ8QI`~rP>3qerW zh`~k`IFQ)eN*WFN0|@YR6OOv{HxcVCZ;+vT??YMON^{QG8NLXH<_rgK9)$6O7VsoM z6G}VmWhKFZI&C9>dt0#=ceQ}^G6A>eO_*;9`A!$QJBcgXbG@_uXZ?|cF`yaeF+q?h( diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a852c1c..a538c14 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sun Feb 12 01:14:28 MSK 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip diff --git a/gradlew b/gradlew index 4453cce..cccdd3d 100755 --- a/gradlew +++ b/gradlew @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -155,7 +155,7 @@ if $cygwin ; then fi # Escape application args -save ( ) { +save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } diff --git a/robototextview-sample/src/main/res/layout/activity_inflater.xml b/robototextview-sample/src/main/res/layout/activity_inflater.xml index 5b54fda..37913c4 100644 --- a/robototextview-sample/src/main/res/layout/activity_inflater.xml +++ b/robototextview-sample/src/main/res/layout/activity_inflater.xml @@ -39,14 +39,14 @@ android:layout_height="wrap_content" android:text="Roboto Thin & " android:textSize="22sp" - app:typeface="roboto_thin"/> + app:robotoTypeface="roboto_thin"/> + app:robotoTypeface="roboto_thin_italic"/> @@ -60,14 +60,14 @@ android:layout_height="wrap_content" android:text="Roboto Light & " android:textSize="22sp" - app:typeface="roboto_light"/> + app:robotoTypeface="roboto_light"/> + app:robotoTypeface="roboto_light_italic"/> @@ -81,14 +81,14 @@ android:layout_height="wrap_content" android:text="Roboto Regular & " android:textSize="22sp" - app:typeface="roboto_regular"/> + app:robotoTypeface="roboto_regular"/> + app:robotoTypeface="roboto_italic"/> @@ -102,14 +102,14 @@ android:layout_height="wrap_content" android:text="Roboto Medium & " android:textSize="22sp" - app:typeface="roboto_medium"/> + app:robotoTypeface="roboto_medium"/> + app:robotoTypeface="roboto_medium_italic"/> @@ -123,14 +123,14 @@ android:layout_height="wrap_content" android:text="Roboto Bold & " android:textSize="22sp" - app:typeface="roboto_bold"/> + app:robotoTypeface="roboto_bold"/> + app:robotoTypeface="roboto_bold_italic"/> @@ -144,14 +144,14 @@ android:layout_height="wrap_content" android:text="Roboto Black & " android:textSize="22sp" - app:typeface="roboto_black"/> + app:robotoTypeface="roboto_black"/> + app:robotoTypeface="roboto_black_italic"/> @@ -165,14 +165,14 @@ android:layout_height="wrap_content" android:text="Roboto Condensed Light & " android:textSize="22sp" - app:typeface="roboto_condensed_light"/> + app:robotoTypeface="roboto_condensed_light"/> + app:robotoTypeface="roboto_condensed_light_italic"/> @@ -186,14 +186,14 @@ android:layout_height="wrap_content" android:text="Roboto Condensed Regular & " android:textSize="22sp" - app:typeface="roboto_condensed_regular"/> + app:robotoTypeface="roboto_condensed_regular"/> + app:robotoTypeface="roboto_condensed_italic"/> @@ -207,14 +207,14 @@ android:layout_height="wrap_content" android:text="Roboto Condensed Bold & " android:textSize="22sp" - app:typeface="roboto_condensed_bold"/> + app:robotoTypeface="roboto_condensed_bold"/> + app:robotoTypeface="roboto_condensed_bold_italic"/> + app:robotoTypeface="roboto_slab_thin"/> @@ -241,7 +241,7 @@ android:layout_height="wrap_content" android:text="Roboto Slab Light" android:textSize="22sp" - app:typeface="roboto_slab_light"/> + app:robotoTypeface="roboto_slab_light"/> @@ -255,7 +255,7 @@ android:layout_height="wrap_content" android:text="Roboto Slab Regular" android:textSize="22sp" - app:typeface="roboto_slab_regular"/> + app:robotoTypeface="roboto_slab_regular"/> + app:robotoTypeface="roboto_slab_bold"/> @@ -282,14 +282,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Thin & " android:textSize="22sp" - app:typeface="roboto_mono_thin"/> + app:robotoTypeface="roboto_mono_thin"/> + app:robotoTypeface="roboto_mono_thin_italic"/> @@ -303,14 +303,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Light & " android:textSize="22sp" - app:typeface="roboto_mono_light"/> + app:robotoTypeface="roboto_mono_light"/> + app:robotoTypeface="roboto_mono_light_italic"/> @@ -324,14 +324,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Regular & " android:textSize="22sp" - app:typeface="roboto_mono_regular"/> + app:robotoTypeface="roboto_mono_regular"/> + app:robotoTypeface="roboto_mono_italic"/> @@ -345,14 +345,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Medium & " android:textSize="22sp" - app:typeface="roboto_mono_medium"/> + app:robotoTypeface="roboto_mono_medium"/> + app:robotoTypeface="roboto_mono_medium_italic"/> @@ -366,14 +366,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Bold & " android:textSize="22sp" - app:typeface="roboto_mono_bold"/> + app:robotoTypeface="roboto_mono_bold"/> + app:robotoTypeface="roboto_mono_bold_italic"/> diff --git a/robototextview-sample/src/main/res/layout/activity_main.xml b/robototextview-sample/src/main/res/layout/activity_main.xml index 6e76dc4..957b3de 100644 --- a/robototextview-sample/src/main/res/layout/activity_main.xml +++ b/robototextview-sample/src/main/res/layout/activity_main.xml @@ -46,14 +46,14 @@ android:layout_height="wrap_content" android:text="Roboto Thin & " android:textSize="22sp" - app:typeface="roboto_thin"/> + app:robotoTypeface="roboto_thin"/> + app:robotoTypeface="roboto_thin_italic"/> @@ -67,14 +67,14 @@ android:layout_height="wrap_content" android:text="Roboto Light & " android:textSize="22sp" - app:typeface="roboto_light"/> + app:robotoTypeface="roboto_light"/> + app:robotoTypeface="roboto_light_italic"/> @@ -88,14 +88,14 @@ android:layout_height="wrap_content" android:text="Roboto Regular & " android:textSize="22sp" - app:typeface="roboto_regular"/> + app:robotoTypeface="roboto_regular"/> + app:robotoTypeface="roboto_italic"/> @@ -109,14 +109,14 @@ android:layout_height="wrap_content" android:text="Roboto Medium & " android:textSize="22sp" - app:typeface="roboto_medium"/> + app:robotoTypeface="roboto_medium"/> + app:robotoTypeface="roboto_medium_italic"/> @@ -130,14 +130,14 @@ android:layout_height="wrap_content" android:text="Roboto Bold & " android:textSize="22sp" - app:typeface="roboto_bold"/> + app:robotoTypeface="roboto_bold"/> + app:robotoTypeface="roboto_bold_italic"/> @@ -151,14 +151,14 @@ android:layout_height="wrap_content" android:text="Roboto Black & " android:textSize="22sp" - app:typeface="roboto_black"/> + app:robotoTypeface="roboto_black"/> + app:robotoTypeface="roboto_black_italic"/> @@ -172,14 +172,14 @@ android:layout_height="wrap_content" android:text="Roboto Condensed Light & " android:textSize="22sp" - app:typeface="roboto_condensed_light"/> + app:robotoTypeface="roboto_condensed_light"/> + app:robotoTypeface="roboto_condensed_light_italic"/> @@ -193,14 +193,14 @@ android:layout_height="wrap_content" android:text="Roboto Condensed Regular & " android:textSize="22sp" - app:typeface="roboto_condensed_regular"/> + app:robotoTypeface="roboto_condensed_regular"/> + app:robotoTypeface="roboto_condensed_italic"/> @@ -214,14 +214,14 @@ android:layout_height="wrap_content" android:text="Roboto Condensed Bold & " android:textSize="22sp" - app:typeface="roboto_condensed_bold"/> + app:robotoTypeface="roboto_condensed_bold"/> + app:robotoTypeface="roboto_condensed_bold_italic"/> + app:robotoTypeface="roboto_slab_thin"/> @@ -248,7 +248,7 @@ android:layout_height="wrap_content" android:text="Roboto Slab Light" android:textSize="22sp" - app:typeface="roboto_slab_light"/> + app:robotoTypeface="roboto_slab_light"/> @@ -262,7 +262,7 @@ android:layout_height="wrap_content" android:text="Roboto Slab Regular" android:textSize="22sp" - app:typeface="roboto_slab_regular"/> + app:robotoTypeface="roboto_slab_regular"/> + app:robotoTypeface="roboto_slab_bold"/> @@ -289,14 +289,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Thin & " android:textSize="22sp" - app:typeface="roboto_mono_thin"/> + app:robotoTypeface="roboto_mono_thin"/> + app:robotoTypeface="roboto_mono_thin_italic"/> @@ -310,14 +310,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Light & " android:textSize="22sp" - app:typeface="roboto_mono_light"/> + app:robotoTypeface="roboto_mono_light"/> + app:robotoTypeface="roboto_mono_light_italic"/> @@ -331,14 +331,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Regular & " android:textSize="22sp" - app:typeface="roboto_mono_regular"/> + app:robotoTypeface="roboto_mono_regular"/> + app:robotoTypeface="roboto_mono_italic"/> @@ -352,14 +352,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Medium & " android:textSize="22sp" - app:typeface="roboto_mono_medium"/> + app:robotoTypeface="roboto_mono_medium"/> + app:robotoTypeface="roboto_mono_medium_italic"/> @@ -373,14 +373,14 @@ android:layout_height="wrap_content" android:text="Roboto Mono Bold & " android:textSize="22sp" - app:typeface="roboto_mono_bold"/> + app:robotoTypeface="roboto_mono_bold"/> + app:robotoTypeface="roboto_mono_bold_italic"/> diff --git a/robototextview/src/main/java/com/devspark/robototextview/RobotoTypefaces.java b/robototextview/src/main/java/com/devspark/robototextview/RobotoTypefaces.java index 756e708..7336b5c 100644 --- a/robototextview/src/main/java/com/devspark/robototextview/RobotoTypefaces.java +++ b/robototextview/src/main/java/com/devspark/robototextview/RobotoTypefaces.java @@ -162,8 +162,8 @@ private RobotoTypefaces() {} * Obtain typeface. * * @param context The Context the widget is running in, through which it can access the current theme, resources, etc. - * @param typefaceValue The value of "typeface" attribute - * @return specify {@link Typeface} or throws IllegalArgumentException if unknown `typeface` attribute value. + * @param typefaceValue The value of "robotoTypeface" attribute + * @return specify {@link Typeface} or throws IllegalArgumentException if unknown `robotoTypeface` attribute value. */ @NonNull public static Typeface obtainTypeface(@NonNull Context context, @RobotoTypeface int typefaceValue) { @@ -179,9 +179,9 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoTypeface * Obtain typeface. * * @param context The Context the widget is running in, through which it can access the current theme, resources, etc. - * @param fontFamily The value of "fontFamily" attribute - * @param textWeight The value of "textWeight" attribute - * @param textStyle The value of "textStyle" attribute + * @param fontFamily The value of "robotoFontFamily" attribute + * @param textWeight The value of "robotoTextWeight" attribute + * @param textStyle The value of "robotoTextStyle" attribute * @return specify {@link Typeface} or throws IllegalArgumentException. */ @NonNull @@ -210,8 +210,8 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoFontFamil typeface = TYPEFACE_ROBOTO_BLACK; break; default: - throw new IllegalArgumentException("`textWeight` attribute value " + textWeight + - " is not supported for this font family " + fontFamily + + throw new IllegalArgumentException("`robotoTextWeight` attribute value " + textWeight + + " is not supported for this fontFamily " + fontFamily + " and textStyle " + textStyle); } } else if (textStyle == TEXT_STYLE_ITALIC) { @@ -235,12 +235,12 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoFontFamil typeface = TYPEFACE_ROBOTO_BLACK_ITALIC; break; default: - throw new IllegalArgumentException("`textWeight` attribute value " + textWeight + - " is not supported for this font family " + fontFamily + + throw new IllegalArgumentException("`robotoTextWeight` attribute value " + textWeight + + " is not supported for this fontFamily " + fontFamily + " and textStyle " + textStyle); } } else { - throw new IllegalArgumentException("`textStyle` attribute value " + textStyle + + throw new IllegalArgumentException("`robotoTextStyle` attribute value " + textStyle + " is not supported for this fontFamily " + fontFamily); } } else if (fontFamily == FONT_FAMILY_ROBOTO_CONDENSED) { @@ -256,8 +256,8 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoFontFamil typeface = TYPEFACE_ROBOTO_CONDENSED_BOLD; break; default: - throw new IllegalArgumentException("`textWeight` attribute value " + textWeight + - " is not supported for this font family " + fontFamily + + throw new IllegalArgumentException("`robotoTextWeight` attribute value " + textWeight + + " is not supported for this fontFamily " + fontFamily + " and textStyle " + textStyle); } } else if (textStyle == TEXT_STYLE_ITALIC) { @@ -272,12 +272,12 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoFontFamil typeface = TYPEFACE_ROBOTO_CONDENSED_BOLD_ITALIC; break; default: - throw new IllegalArgumentException("`textWeight` attribute value " + textWeight + - " is not supported for this font family " + fontFamily + + throw new IllegalArgumentException("`robotoTextWeight` attribute value " + textWeight + + " is not supported for this fontFamily " + fontFamily + " and textStyle " + textStyle); } } else { - throw new IllegalArgumentException("`textStyle` attribute value " + textStyle + + throw new IllegalArgumentException("`robotoTextStyle` attribute value " + textStyle + " is not supported for this fontFamily " + fontFamily); } } else if (fontFamily == FONT_FAMILY_ROBOTO_SLAB) { @@ -296,12 +296,12 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoFontFamil typeface = TYPEFACE_ROBOTO_SLAB_BOLD; break; default: - throw new IllegalArgumentException("`textWeight` attribute value " + textWeight + - " is not supported for this font family " + fontFamily + + throw new IllegalArgumentException("`robotoTextWeight` attribute value " + textWeight + + " is not supported for this fontFamily " + fontFamily + " and textStyle " + textStyle); } } else { - throw new IllegalArgumentException("`textStyle` attribute value " + textStyle + + throw new IllegalArgumentException("`robotoTextStyle` attribute value " + textStyle + " is not supported for this fontFamily " + fontFamily); } } else if (fontFamily == FONT_FAMILY_ROBOTO_MONO) { @@ -323,8 +323,8 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoFontFamil typeface = TYPEFACE_ROBOTO_MONO_BOLD; break; default: - throw new IllegalArgumentException("`textWeight` attribute value " + textWeight + - " is not supported for this font family " + fontFamily + + throw new IllegalArgumentException("`robotoTextWeight` attribute value " + textWeight + + " is not supported for this fontFamily " + fontFamily + " and textStyle " + textStyle); } } else if (textStyle == TEXT_STYLE_ITALIC) { @@ -345,16 +345,16 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoFontFamil typeface = TYPEFACE_ROBOTO_MONO_BOLD_ITALIC; break; default: - throw new IllegalArgumentException("`textWeight` attribute value " + textWeight + - " is not supported for this font family " + fontFamily + + throw new IllegalArgumentException("`robotoTextWeight` attribute value " + textWeight + + " is not supported for this fontFamily " + fontFamily + " and textStyle " + textStyle); } } else { - throw new IllegalArgumentException("`textStyle` attribute value " + textStyle + + throw new IllegalArgumentException("`robotoTextStyle` attribute value " + textStyle + " is not supported for this fontFamily " + fontFamily); } } else { - throw new IllegalArgumentException("Unknown `fontFamily` attribute value " + fontFamily); + throw new IllegalArgumentException("Unknown `robotoFontFamily` attribute value " + fontFamily); } return obtainTypeface(context, typeface); } @@ -364,8 +364,8 @@ public static Typeface obtainTypeface(@NonNull Context context, @RobotoFontFamil * * @param context The Context the widget is running in, through which it can * access the current theme, resources, etc. - * @param typeface The value of "typeface" attribute - * @return Roboto {@link Typeface} or throws IllegalArgumentException if unknown `typeface` attribute value. + * @param typeface The value of "robotoTypeface" attribute + * @return Roboto {@link Typeface} or throws IllegalArgumentException if unknown `robotoTypeface` attribute value. */ @NonNull private static Typeface createTypeface(@NonNull Context context, @RobotoTypeface int typeface) { @@ -468,7 +468,7 @@ private static Typeface createTypeface(@NonNull Context context, @RobotoTypeface path = "fonts/RobotoMono-BoldItalic.ttf"; break; default: - throw new IllegalArgumentException("Unknown `typeface` attribute value " + typeface); + throw new IllegalArgumentException("Unknown `robotoTypeface` attribute value " + typeface); } return Typeface.createFromAsset(context.getAssets(), path); } @@ -482,13 +482,13 @@ private static Typeface createTypeface(@NonNull Context context, @RobotoTypeface */ @NonNull public static Typeface obtainTypeface(@NonNull Context context, @NonNull TypedArray attrs) { - if (attrs.hasValue(R.styleable.RobotoTextView_typeface)) { - @RobotoTypeface int typefaceValue = attrs.getInt(R.styleable.RobotoTextView_typeface, TYPEFACE_ROBOTO_REGULAR); + if (attrs.hasValue(R.styleable.RobotoTextView_robotoTypeface)) { + @RobotoTypeface int typefaceValue = attrs.getInt(R.styleable.RobotoTextView_robotoTypeface, TYPEFACE_ROBOTO_REGULAR); return obtainTypeface(context, typefaceValue); } else { - @RobotoFontFamily int fontFamily = attrs.getInt(R.styleable.RobotoTextView_fontFamily, FONT_FAMILY_ROBOTO); - @RobotoTextWeight int textWeight = attrs.getInt(R.styleable.RobotoTextView_textWeight, TEXT_WEIGHT_NORMAL); - @RobotoTextStyle int textStyle = attrs.getInt(R.styleable.RobotoTextView_textStyle, TEXT_STYLE_NORMAL); + @RobotoFontFamily int fontFamily = attrs.getInt(R.styleable.RobotoTextView_robotoFontFamily, FONT_FAMILY_ROBOTO); + @RobotoTextWeight int textWeight = attrs.getInt(R.styleable.RobotoTextView_robotoTextWeight, TEXT_WEIGHT_NORMAL); + @RobotoTextStyle int textStyle = attrs.getInt(R.styleable.RobotoTextView_robotoTextStyle, TEXT_STYLE_NORMAL); return obtainTypeface(context, fontFamily, textWeight, textStyle); } } @@ -520,7 +520,7 @@ public static void setUpTypeface(@NonNull TextView textView, @NonNull Context co * Set up typeface for TextView. * * @param textView The text view - * @param typeface The value of "typeface" attribute + * @param typeface The value of "robotoTypeface" attribute */ public static void setUpTypeface(@NonNull TextView textView, @RobotoTypeface int typeface) { setUpTypeface(textView, obtainTypeface(textView.getContext(), typeface)); @@ -530,9 +530,9 @@ public static void setUpTypeface(@NonNull TextView textView, @RobotoTypeface int * Set up typeface for TextView. * * @param textView The text view - * @param fontFamily The value of "fontFamily" attribute - * @param textWeight The value of "textWeight" attribute - * @param textStyle The value of "textStyle" attribute + * @param fontFamily The value of "robotoFontFamily" attribute + * @param textWeight The value of "robotoTextWeight" attribute + * @param textStyle The value of "robotoTextStyle" attribute */ public static void setUpTypeface(@NonNull TextView textView, @RobotoFontFamily int fontFamily, @RobotoTextWeight int textWeight, @RobotoTextStyle int textStyle) { diff --git a/robototextview/src/main/java/com/devspark/robototextview/style/RobotoTypefaceSpan.java b/robototextview/src/main/java/com/devspark/robototextview/style/RobotoTypefaceSpan.java index 0787d28..b2fbc2c 100644 --- a/robototextview/src/main/java/com/devspark/robototextview/style/RobotoTypefaceSpan.java +++ b/robototextview/src/main/java/com/devspark/robototextview/style/RobotoTypefaceSpan.java @@ -39,7 +39,7 @@ public RobotoTypefaceSpan(Context context) { * * @param context The Context the span is using in, through which it can * access the current theme, resources, etc. - * @param typeface The value of "typeface" attribute + * @param typeface The value of "robotoTypeface" attribute */ public RobotoTypefaceSpan(Context context, @RobotoTypeface int typeface) { this.typeface = RobotoTypefaces.obtainTypeface(context, typeface); @@ -50,9 +50,9 @@ public RobotoTypefaceSpan(Context context, @RobotoTypeface int typeface) { * * @param context The Context the span is using in, through which it can * access the current theme, resources, etc. - * @param fontFamily The value of "fontFamily" attribute - * @param textWeight The value of "textWeight" attribute - * @param textStyle The value of "textStyle" attribute + * @param fontFamily The value of "robotoFontFamily" attribute + * @param textWeight The value of "robotoTextWeight" attribute + * @param textStyle The value of "robotoTextStyle" attribute */ public RobotoTypefaceSpan(Context context, @RobotoFontFamily int fontFamily, @RobotoTextWeight int textWeight, @RobotoTextStyle int textStyle) { diff --git a/robototextview/src/main/res/values/attrs.xml b/robototextview/src/main/res/values/attrs.xml index 77e5b8a..cb8a82d 100644 --- a/robototextview/src/main/res/values/attrs.xml +++ b/robototextview/src/main/res/values/attrs.xml @@ -18,112 +18,112 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + @@ -158,14 +158,14 @@ - + - + @@ -174,7 +174,7 @@ - +