package Ġcom . wen jian . wan android . utils ĊĊ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Clip Data Ċ import Ġandroid . content . Clipboard Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . os . Build Ċ import Ġandroid . support . annotation . Color Int Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 4 . widget . Nested ScrollView Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Toolbar Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . Toast Ċ import Ġcom . wen jian . wan android . R Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ object ĠTools Ġ{ ĊĊĠĠĠ Ġval Ġscreen Width : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠResources . getSystem (). display Metrics . width Pixels ĊĊĠĠĠ Ġval Ġscreen Height : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠResources . getSystem (). display Metrics . height Pixels ĊĊĠĠĠ Ġfun Ġset System Bar Color ( act : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġact . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . clear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= Ġact . resources . getColor ( R . color . color Primary Dark ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset System Bar Color ( act : ĠActivity , Ġ@ Color Int Ġcolor Int : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġact . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . clear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= Ġcolor Int ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtrans luc ent ( act : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġact . window ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ; View . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġset System Bar Light ( act : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġact . findViewById < View >( android . R . id . content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġflags Ġ= Ġview . system Ui Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . system Ui Visibility Ġ= Ġflags ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear System Bar Light ( act : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġact . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠContext Compat . getColor ( act , ĠR . color . color Primary Dark ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMaking Ġnotification Ġbar Ġtransparent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset System Bar Transparent ( act : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġact . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Date Simple ( dateTime : ĠLong ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Format Ġ= ĠSimpleDateFormat (" MMMM Ġdd , Ġy yyy ") ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Format . format ( Date ( dateTime !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Date Event ( dateTime : ĠLong ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Format Ġ= ĠSimpleDateFormat (" EEE , ĠM MM Ġdd Ġy yyy ") ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Format . format ( Date ( dateTime !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Time Event ( time : ĠLong ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Format Ġ= ĠSimpleDateFormat (" h : mm Ġa ") ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Format . format ( Date ( time !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Email FromName ( name : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( name Ġ!= Ġnull Ġ&& Ġname Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . replace (" Ġ". to Regex (), Ġ". "). toLowerCase () Ġ+ Ġ"@ mail . com " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdp To Px ( c : ĠContext , Ġdp : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġc . resources ĊĠĠĠĠĠĠĠ Ġreturn ĠMath . round ( Typed Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġdp . toFloat (), Ġr . display Metrics )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġcopy To Clipboard ( context : ĠContext , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclipboard Ġ= Ġcontext . getSystem Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ĊĠĠĠĠĠĠĠ Ġval Ġclip Ġ= ĠClip Data . new Plain Text (" clipboard ", Ġdata ) ĊĠĠĠĠĠĠĠ Ġclipboard . primary Clip Ġ= Ġclip ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Text Ġcopied Ġto Ġclipboard ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnested Scroll To ( nested : ĠNested ScrollView , Ġtarget View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnested . post Ġ{ Ġnested . scrollTo ( 5 0 0 , Ġtarget View . bottom ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdip 2 px ( context : ĠContext , Ġdp Value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġcontext . resources . display Metrics . density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( dp Value Ġ* Ġscale Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpx 2 dip ( context : ĠContext , Ġpx Value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġcontext . resources . display Metrics . density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( px Value Ġ/ Ġscale Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Arrow ( view : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view . rotation Ġ== Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . animate (). set Duration ( 2 0 0 ). rotation ( 1 8 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . animate (). set Duration ( 2 0 0 ). rotation ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġtoggle Arrow ( show : ĠBoolean , Ġview : ĠView , Ġdelay : ĠBoolean Ġ= Ġtrue ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . animate (). set Duration (( if Ġ( delay ) Ġ 2 0 0 Ġelse Ġ 0 ). to Long ()). rotation ( 1 8 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . animate (). set Duration (( if Ġ( delay ) Ġ 2 0 0 Ġelse Ġ 0 ). to Long ()). rotation ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Navigate ion Icon Color ( toolbar : ĠToolbar , Ġ@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġtoolbar . navigation Icon ĊĠĠĠĠĠĠĠ Ġdrawable !!. mutate () ĊĠĠĠĠĠĠĠ Ġdrawable . setColor Filter ( color , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Menu Icon Color ( menu : ĠMenu , Ġ@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmenu . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġmenu . getItem ( i ). icon Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . mutate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setColor Filter ( color , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Overflow Menu Icon Color ( toolbar : ĠToolbar , Ġ@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġtoolbar . overflow Icon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable !!. mutate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setColor Filter ( color , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Period ically ( text : ĠString , Ġinsert : ĠString , Ġperiod : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder ( text . length Ġ+ Ġinsert . length Ġ* Ġ( text . length Ġ/ Ġperiod ) Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġprefix Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ< Ġtext . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( prefix ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġinsert ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( text . substring ( index , ĠMath . min ( index Ġ+ Ġperiod , Ġtext . length ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ+= Ġperiod ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ Toolbar é«ĺåº¦ å¡« åħħ åĪ° çĬ¶æĢģ æłı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinit Full Bar ( toolbar : ĠToolbar , Ġactivity : ĠAppCompatActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġtoolbar . layout Params ĊĠĠĠĠĠĠĠ Ġparams . height Ġ= ĠgetStatus Height ( activity ) Ġ+ Ġget System ActionBar Size ( activity ) ĊĠĠĠĠĠĠĠ Ġtoolbar . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġtoolbar . set Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . top Ġ+ ĠgetStatus Height ( activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Private Api ") ĊĠĠĠ Ġfun ĠgetStatus Height ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstatus Height Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= ĠClass . forName (" com . android . internal . R \$ dim en ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` object ` Ġ= Ġclazz . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= ĠInteger . parseInt ( clazz . getField (" status _ bar _ height ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get (` object `). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Height Ġ= Ġcontext . application Context . resources . get Dimension Pixel Size ( height ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstatus Height ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget System ActionBar Size ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtv Ġ= ĠTyped Value () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context . theme . resolve Attribute ( android . R . attr . action Bar Size , Ġtv , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value . complex To Dimension Pixel Size ( tv . data , Ġcontext . resources . display Metrics ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdip 2 px ( context , Ġ 4 8 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ