package Ġcn . f eng . skin . demo . activity Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcn . f eng . skin . demo . databinding . Activity Main Binding Ċ import Ġcn . f eng . skin . manager . base . Base Fragment Activity Ċ import Ġcn . f eng . skin . manager . listener . IL o ader Listener Ċ import Ġcn . f eng . skin . manager . loader . Skin Manager Ċ import Ġcn . f eng . skin . manager . util . L Ċ import Ġcom . blank j . util code . util . Resource Utils Ċ import Ġcom . blank j . util code . util . Utils Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . io . File Ċ Ċ class ĠMainActivity Ġ: ĠBase Fragment Activity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSK IN _ NAME Ġ= Ġ" Black F ant acy . skin " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSK IN _ DIR Ġ= ĠUtils . getApp (). files Dir . absolute Path Ġ+ ĠFile . separator Ġ+ ĠSK IN _ NAME ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġvar Ġis Skin Default : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit Event () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . btn Skin Default . setOnClickListener Ġ{ Ġset Skin Default () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Skin New . setOnClickListener Ġ{ Ġset New Skin () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Event () Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" init Event : Ġ${ Thread . currentThread (). name }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Utils . copy File From Assets ( SK IN _ NAME , ĠSK IN _ DIR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Skin Default () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Skin Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis Skin Default Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠSk in Manager . getInstance (). restore Default Theme () ĊĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" åĪĩæį¢ æĪĲåĬŁ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset New Skin () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Skin Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis Skin Default Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġskin Ġ= ĠFile ( SK IN _ DIR ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! skin . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" è¯· æ£ĢæŁ¥ " Ġ+ ĠSK IN _ DIR Ġ+ Ġ" æĺ¯åĲ¦ åŃĺåľ¨ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSk in Manager . getInstance (). load ( skin . absolute Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠI Loader Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . e (" start load Skin ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . e (" load Skin Success ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" åĪĩæį¢ æĪĲåĬŁ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . e (" load Skin Fail ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" åĪĩæį¢ å¤±è´¥ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ }