匿名用户2021年11月23日
228阅读

技术信息

授权协议
Apache-2.0 License

作品详情

Splitties

SplittiesisacollectioofsmallKotlimultiplatformlibraries(withAdroidasfirsttarget).

Theselibrariesareitededtoreducetheamoutofcodeyouhavetowrite,freeigcodereadigadwritigtime,soyoucafocusmoreowhatyouwattobuildforyourusers(eveifyou'retheolyoe),orhavemoretimetohavefu.

Thisprojectisamed"Splitties"becauseitissplitismallmodules,distributedasidepedetlibraries,soyoucaaddolytheoesyoueedtoyourproject/module,helpigreducethesizeofthefialbiarythatusersdeviceswilleedtodowloadadkeepithelimitedstorage(BTW,everythigislimited).

SomeAdroidtargetigmoduleshaveacotetsimilartowhatAkooffers.SeeashortcomparisoofSplittieswithAkohere.

Eachmodulehasbeedesigedtohaveasmallfootpritadbeasefficietaspossible.

Afewexamples

Splittiesisallaboutsimplifyigyourcode.Hereareafewexamples:

Kotli:

startActivity(Itet(this,DemoActivity::class.java))

KotliwithSplittiesActivities:

start<DemoActivity>()

Kotli:

Sackbar.make(root,R.strig.refresh_successful,Sackbar.LENGTH_SHORT).show()

KotliwithSplittiesSackbar:

root.sack(R.strig.refresh_successful)

Racigcorouties:(raceOf(…)comesfromtheCoroutiesmodule)

suspedfuawaitUserChoice(ui:SomeUi,choices:List<Stuff>):Stuff?=raceOf({ui.awaitSomeUserActio(choices)},{ui.awaitDismissal()ull},{ui.showSomethigIRealtimeUtilCacelled()//RetursNothig,willru,butever"wi".})

Kotli:

Sackbar.make(root,getStrig(R.strig.deleted_x_items,deletedCout),Sackbar.LENGTH_LONG).setActio(adroid.R.strig.cacel){deleteOperatio.requestRollback()}.setActioTextColor(CotextCompat.getColor(this,R.color.facy_color)).show()

KotliwithSplittiesSackbar:

root.logSack(str(R.strig.deleted_x_items,deletedCout)){actio(adroid.R.strig.cacel,textColor=color(R.color.facy_color)){deleteOperatio.requestRollback()}}OverviewSystemiteractio(Adroidoly)UseriputaduseriterfacerelatedsplitsSmallmessages(Adroidoly)Dialogs(Adroidoly)SystemUI(Adroidoly)ExtesiosforViews(Adroidoly)CreatigViewbasedUIswiththepowerofKotli(Adroidoly)VariousUIutilities(Adroidoly)MaterialDesighelpers(Adroidoly)Iteradcrossappcommuicatio:Activities,Fragmets,Itets,adBudlesCocurrecy(Multiplatform)Datapersistece(Multiplatform)Utilities(Multiplatform)Debuggig(Adroidoly)Legacy(Adroidoly)Systemiteractio(Adroidoly):AppCotext:AlwayshaveyourapplicatioCotextathadwithappCtx.SystemServices:Nomorecotext.getSystemService(NAME_OF_SERVICE)asNameOfMaager.Useriputaduseriterfacerelatedsplits:Smallmessages(Adroidoly)Sackbar:Grabasackwithoutceremoywithsack(…)adlogSack(…).Toast:Showatoastbyjustcalligtoast(yourText),addodgeAPI25BadTokeExceptio.Dialogs(Adroidoly)AlertDialog:Createsimplealertdialogswithsimplecode.AlertDialogAppCompat:AppCompatversioofAlertDialog.AlertDialogAppCompatCorouties:showAdAwaitextesiofuctiosforAppCompatAlertDialog.AlertDialogMaterial:MaterialCompoetsextesioofAlertDialogAppCompat.SystemUI(Adroidoly)Dagerouspermissios:Requestrutimepermissioswithoutpollutigyourcodebase.ExtesiosforViews(Adroidoly)Views:ExtesiosfuctioadpropertiesoViews.ViewsAppCompat:AppCompatextesioofViews.IcludeshelpersforImageViewtitig,ActioBaradtooltip.ViewsCardView:CardViewextesioofViews.ProvidesacotetPaddigproperty.ViewsMaterial:MaterialCompoetsextesioofViews.ViewsCoroutiesMaterial:MaterialCompoets+Kotlicorouties.ViewsRecyclerView:RecyclerViewextesioofViews.ViewsCorouties:AdroidViews+Kotlicorouties.CreatigViewbasedUIswiththepowerofKotli(Adroidoly)ViewsDSL:CreateUIswithreadableKotlicode(IDEpreviewsupported).ViewsDSLAppCompat:AppCompatextesioofViewsDSL.ViewsDSLCostraitLayout:CostraitLayoutextesioofViewsDSL.ViewsDSLCoordiatorLayout:CoordiatorLayoutextesioofViewsDSL.ViewsDSLMaterial:MaterialCompoetsextesioofViewsDSL.ViewsDSLRecyclerView:RecyclerViewextesioofViewsDSL.VariousUIutilities(Adroidoly)Resources:Extesiostogetresourceslikestrigs,colorsordrawableseasily,withsupportforthemedattributes.Dimesios:AdroiddpextesiosforViewadCotext.ParticularlyhadywheusigViewsDSL.SelectableviewsSelectableViews:SelectableViewswithforegroudpropertybeforeAPI23.SelectableViewsAppCompat:SelectableViewsforAppCompatTextView.SelectableViewsCostraitLayout:SelectableViewsforCostraitLayout.TypesafeRecyclerView:TypesafeViewHolderadItemViewHolderforeasybasicusageofRecyclerView.MaterialDesighelpers(Adroidoly)MaterialColors:2014MaterialDesigcolorpalettesascolorresources.MaterialLists:ListitemViewsimplemetigMaterialDesigguidelies(perfectforusageiaRecyclerView).Iteradcrossappcommuicatio:Activities,Fragmets,Itets,adBudlesActivities:Startactivitieswithmiimalboilerplate.Itets:Trasformcompaioobjectsitopowerfultypesafeitetspecs,adcreatePedigItetsthecleaadeasyway.Fragmets:Startactivitiesfromfragmetsaddotrasactioswithmiimalboilerplate.FragmetArgs:Fragmetargumetswithoutceremoythakstodelegatedproperties.Budle:BudleSpectouseBudlewithpropertysytaxforItetextrasadmore.Cocurrecy(Multiplatform)Corouties:Geeralpurposeextesiostokotlix.corouties.LifecycleCorouties(Adroidoly):CoroutiesitegratiowithAdroidXLifecycle.MaiThread:Propertiesadprecoditiocheckersrelatedtothemaithread.MaiHadler(Adroidoly):Top-levelmaiHadlerpropertytostopallocatigmultipleHadlersformaiLooper.CheckedLazy(Adroidoly):maiThreadLazythatcheckspropertyaccessoDatapersistece(Multiplatform)Prefereces:PropertysytaxforAdroid'sSharedPrefereces/DataStoreadmacOS/iOS/watchOSNSUserDefaults.ArchRoom:RoomhelperstoistatiateyourDBadperformtrasactiosiKotli.Utilities(Multiplatform)BitFlags:hasFlag,withFlagadmiusFlagextesiosoLog,It,Short,Byte,adtheirusigedcouterparts.Collectios:forEachforListswithoutIteratorallocatio.Debuggig(Adroidoly)Stethoiit:HaveStethoforyourdebugbuilds,withoutwritigaycode!Legacy(Adroidoly)Exceptios:uexpectedValue(…),usupportedActio(…)adsimilarfuctiosthatreturNothig.ArchLifecycle:ExtesiostogetViewModels,useLiveDataadobserveLifecycles.DowloadGradleistructios

MakesureyouhavemaveCetral()itherepositoriesdefiediyourproject's(root)build.gradlefile(defaultforewAdroidStudioprojects).

TomakeiteasiertotakeadvatageofthecotetsofSplittiesforyourAdroidprojects,therearegroupigartifactsthaticludemostsplits.

Adroidbase

AddigwithrefreshVersios:Splitties.pack.adroidBaseorSplitties.pack.adroidBaseWithViewsDsl.

These2packsdo'ticludeAppCompatadaresuitableforWearOSapps.

Icludesthefollowigmodules:

activitiesappctxbitflagsbudlecollectioscoroutiesdimesiosfragmetsfragmetargsitetslifecycle-coroutiesmaihadlermaithreadmaterial-colorspermissiospreferecesresourcessystemservicestoastviewsviews-coroutiesviews-recyclerviewviews-selectableviews-selectable-costraitlayout

Gradledepedecy:

implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-base:3.0.0")

There'salsoaversiowithViewsDSL.Itadditioallyicludesthefollowigmodules:

views-dslviews-dsl-costraitlayoutviews-dsl-recyclerview

Gradledepedecy:

implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-base-with-views-dsl:3.0.0")AdroidAppCompat

AddigwithrefreshVersios:Splitties.pack.appCompatorSplitties.pack.appCompatWithViewsDsl.

These2packsicludetheAdroidbasepack,adthefollowigmodules:

alertdialog-appcompatalertdialog-appcompat-coroutiesviews-appcompatviews-selectable-appcompat

Gradledepedecy:

implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-appcompat:3.0.0")

There'salsoaversiowithViewsDSL.ItadditioallyicludestheViewsDSLversiooftheAdroidbasepackadthefollowigmodule:

views-dsl-appcompat

Gradledepedecy:

implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-appcompat-with-views-dsl:3.0.0")AdroidMaterialCompoets

AddigwithrefreshVersios:Splitties.pack.adroidMdcorSplitties.pack.adroidMdcWithViewsDsl.

These2packsicludetheAdroidAppCompatpack,adthefollowigmodules:

alertdialog-materialmaterial-listssackbarviews-cardviewviews-corouties-materialviews-material

Gradledepedecy:

implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-material-compoets:3.0.0")

There'salsoaversiowithViewsDSL.ItadditioallyicludestheViewsDSLversiooftheAdroidAppCompatpackadthefollowigmodules:

views-dsl-coordiatorlayoutviews-dsl-material

Gradledepedecy:

implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-material-compoets-with-views-dsl:3.0.0")Alltheartifacts(47)

Siceyoumightusemultipleartifacts,tootrepeatyourself,werecommedyoutoputtheversioiacetralplace,soit'slittleefforttoupgradetoewerversios.

ThebestwaytodothisistouserefreshVersios,ithasbuilt-idepedecyotatiosforSplitties,adalsomayotherpopularadqualitativelibraries,likekotlix,AdroidX,librariesfromSquare/CashAppadlibrariesfromGoogle.

Mostimportatly,withit,ruigtherefreshVersiostaskwillshowyoutheavailableupdatesiamatterofsecods,forallofyourdepedecies,rightitotheversios.properties,iawaythatmakesupgradigeffortless,evewithjustthekeyboard.

FYI,thecurretlatestreleaseofSplittiesistheversio3.0.0

Herearethemavecoordiatesofalltheartifactsofthislibrary,forreferece.(Clicktoexpad)com.louiscad.splitties:splitties-activitiescom.louiscad.splitties:splitties-alertdialogcom.louiscad.splitties:splitties-alertdialog-appcompatcom.louiscad.splitties:splitties-alertdialog-appcompat-coroutiescom.louiscad.splitties:splitties-appctxcom.louiscad.splitties:splitties-arch-lifecyclecom.louiscad.splitties:splitties-arch-roomcom.louiscad.splitties:splitties-bitflagscom.louiscad.splitties:splitties-budlecom.louiscad.splitties:splitties-checkedlazycom.louiscad.splitties:splitties-collectioscom.louiscad.splitties:splitties-coroutiescom.louiscad.splitties:splitties-dimesioscom.louiscad.splitties:splitties-exceptioscom.louiscad.splitties:splitties-fragmetscom.louiscad.splitties:splitties-fragmetargscom.louiscad.splitties:splitties-itetscom.louiscad.splitties:splitties-lifecycle-coroutiescom.louiscad.splitties:splitties-maihadlercom.louiscad.splitties:splitties-maithreadcom.louiscad.splitties:splitties-material-colorscom.louiscad.splitties:splitties-material-listscom.louiscad.splitties:splitties-permissioscom.louiscad.splitties:splitties-preferecescom.louiscad.splitties:splitties-resourcescom.louiscad.splitties:splitties-sackbarcom.louiscad.splitties:splitties-stetho-iitcom.louiscad.splitties:splitties-systemservicescom.louiscad.splitties:splitties-toastcom.louiscad.splitties:splitties-typesaferecyclerviewcom.louiscad.splitties:splitties-viewscom.louiscad.splitties:splitties-views-appcompatcom.louiscad.splitties:splitties-views-cardviewcom.louiscad.splitties:splitties-views-coroutiescom.louiscad.splitties:splitties-views-corouties-materialcom.louiscad.splitties:splitties-views-dslcom.louiscad.splitties:splitties-views-dsl-appcompatcom.louiscad.splitties:splitties-views-dsl-costraitlayoutcom.louiscad.splitties:splitties-views-dsl-coordiatorlayoutcom.louiscad.splitties:splitties-views-dsl-ide-previewcom.louiscad.splitties:splitties-views-dsl-materialcom.louiscad.splitties:splitties-views-dsl-recyclerviewcom.louiscad.splitties:splitties-views-materialcom.louiscad.splitties:splitties-views-recyclerviewcom.louiscad.splitties:splitties-views-selectablecom.louiscad.splitties:splitties-views-selectable-appcompatcom.louiscad.splitties:splitties-views-selectable-costraitlayoutSapshots

Let'ssayyoueedtotryaewfeatureorafixthatdidotmakeittoareleaseyet:

Youcagrabitithesapshotversiobyaddigthecorrespodigrepositoryasshowbelow,adchagigthelibraryversiotothelatestsapshot,3.0.0-SNAPSHOT:

allProjects{repositories{maveCetral()google()//Addsoatypesapshotsrepobelowmave(url="https://oss.soatype.org/cotet/repositories/sapshots")}}Newversiosotificatios

ReleasesareaoucedoGitHub,youcasubscribebyclickigo"Watch",the"Releasesoly".

However,ifyouuserefreshVersios,you'llalsolearaboutupdateswheyourutherefreshVersiostaskrightitheversios.propertiesfile.

Improvethislibrary

Ifyouwatthislibrarytohaveaewfeatureoraimprovemetiaeworiaexistigmodule,please,opeaissueorvote/commetasimilaroefirst,soitcabediscussed.

Documetatiocotributiosarealsowelcome.Fortyposorothersmallimprovemets,feelfreetosubmitaPR(pullrequest)directly.Formoresigificatdoccotributios,pleaseopeaissuefirst,soitcabediscussed.

Ifyoufidabug,pleaseopeaissuewithalltheimportatdetails.IfyoukowasimplefixthatisotAPIbreakigadthatdoesothavesideeffectsthateedtobecosidered,youmayalsodirectlysubmitaPR.

YoucaalsojoithediscussiooKotli'sSlackithe#splittieschael(youcagetaivitatiohere).

Whatisasplit

A"split"isamoduleoftheSplittieslibrarythatyoucaaddasadepedecy.Itolyicludestherequiredtrasitivedepedecies.Thisallowsyoutoolyaddwhatyoueediyourapporlibrarymodule,sothefialapk/ipa/appisassmallaspossibleaddoes'ticludestuffotusedbyyourapp.

Let'ssayyou'rebuildigaWearOSappusigtheViewsDSL.WearOSappsdo'teedAppCompat.Icludigitwouldbeawasteofbadwidthadstorage.TheViewsDSLcoremodulereliesotheAdroidSDKbutotoAppCompat,soyoudo'tbloatyourwristappwithAppCompatbyusigViewsDSL.However,ifyouarebuildigaphoe,tabletorcomputerAdroidapp,there'saViewsDSLAppCompatsplitwithafewextesiosforyoutouse.

Credits

SpecialthakstoJovcheMitrejchevskiforhelpigitakigdecisiosforthisproject.

ThakstoJetBraisadthecotributorsforAko,whichwasagreatsourceofispiratio,especiallyforViewsDSL,adofcoursethaksfortheexcelletKotliprogrammiglaguagethatmakesthisprojectpossible.

ThakstoDougStevesoforhisarticles"Kotli&Adroid:ABrassTacksExperimet".ItisfairtosaythatViewsDSLhasitsrootithisexperimet.

Licese

ThislibraryispublisheduderApacheLiceseversio2.0whichyoucaseehere.

功能介绍

Splitties Splitties is a collection of small Kotlin multiplatform libraries (with Android as firs...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论