package Ġcom . eth anh ua . skeleton Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . On Attach State ChangeListener Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . facebook . shim mer . Sh im mer Ċ import Ġcom . facebook . shim mer . Sh im mer Frame Layout Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġeth anh ua Ġon Ġ 2 0 1 7 / 7 / 2 9 . Ċ Ġ*/ Ċ class ĠView Skeleton Screen Ġprivate Ġconstructor ( builder : ĠBuilder ) Ġ: ĠS keleton Screen Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm View Re placer Ġ= ĠView Re placer ( builder . m View ) ĊĠĠĠ Ġprivate Ġval Ġm Actual View Ġ= Ġbuilder . m View ĊĠĠĠ Ġprivate Ġval Ġm Use Alpha Ġ= Ġbuilder . m Use Alpha ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Angle Ġ= Ġbuilder . m Sh im mer Angle ĊĠĠĠ Ġprivate Ġval Ġm Skeleton Res ID Ġ= Ġbuilder . m Skeleton Layout Res ID ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Color Ġ= Ġbuilder . m Sh im mer Color ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Base Color Ġ= Ġbuilder . m Sh im mer Base Color ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Alpha Ġ= Ġbuilder . m Sh im mer Alpha ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Base Alpha Ġ= Ġbuilder . m Sh im mer Base Alpha ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Ġ= Ġbuilder . m Sh im mer ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Duration Ġ= Ġbuilder . m Sh im mer Duration ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Direction Ġ= Ġbuilder . m Sh im mer Direction ĊĠĠĠ Ġprivate Ġval Ġm Sh im mer Shape Ġ= Ġbuilder . m Sh im mer Shape ĊĠĠĠ Ġprivate Ġval Ġm Repeat Count Ġ= Ġbuilder . m Repeat Count ĊĠĠĠ Ġprivate Ġval Ġm Repeat Delay Ġ= Ġbuilder . m Repeat Delay ĊĠĠĠ Ġprivate Ġval Ġm Repeat Mode Ġ= Ġbuilder . m Repeat Mode ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Sh im mer Container Layout ( parent View : ĠViewGroup ): ĠSh im mer Frame Layout Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshim mer Layout Ġ= ĠLayoutInflater . from ( m Actual View . context ). inflate ( R . layout . layout _ shim mer , Ġparent View , Ġfalse ) Ġas ĠSh im mer Frame Layout ĊĠĠĠĠĠĠĠ Ġval Ġshim mer Ġ= Ġif Ġ( m Use Alpha ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSh im mer . Alpha Highlight Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Base Alpha ( m Sh im mer Base Alpha ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Highlight Alpha ( m Sh im mer Alpha ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSh im mer . Color Highlight Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Base Color ( m Sh im mer Base Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Highlight Color ( m Sh im mer Color ) ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset T ilt ( m Sh im mer Angle . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Shape ( m Sh im mer Shape . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Direction ( m Sh im mer Direction . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Duration ( m Sh im mer Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Repeat Count ( m Repeat Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Repeat Delay ( m Repeat Delay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Repeat Mode ( m Repeat Mode . value ) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġshim mer Layout . set Sh im mer ( shim mer ) ĊĠĠĠĠĠĠĠ Ġval Ġinner View Ġ= ĠLayoutInflater . from ( m Actual View . context ). inflate ( m Skeleton Res ID , Ġshim mer Layout , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinner View . layout Params ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshim mer Layout . layout Params Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshim mer Layout . addView ( inner View ) ĊĠĠĠĠĠĠĠ Ġshim mer Layout . add On Attach State ChangeListener ( object Ġ: ĠOn Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshim mer Layout . start Sh im mer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshim mer Layout . stop Sh im mer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġshim mer Layout . start Sh im mer () ĊĠĠĠĠĠĠĠ Ġreturn Ġshim mer Layout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Skeleton Loading View (): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Parent Ġ= Ġm Actual View . parent ĊĠĠĠĠĠĠĠ Ġif Ġ( view Parent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" the Ġsource Ġview Ġhave Ġnot Ġattach Ġto Ġany Ġview ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġparent View Ġ= Ġview Parent Ġas ĠViewGroup ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Sh im mer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Sh im mer Container Layout ( parent View ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠLayoutInflater . from ( m Actual View . context ). inflate ( m Skeleton Res ID , Ġparent View , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow (): ĠView Skeleton Screen Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġskeleton Loading View Ġ= Ġgenerate Skeleton Loading View () ĊĠĠĠĠĠĠĠ Ġif Ġ( skeleton Loading View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Re placer . replace ( skeleton Loading View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( m View Re placer . target View Ġas ? ĠSh im mer Frame Layout )?. stop Sh im mer () ĊĠĠĠĠĠĠĠ Ġm View Re placer . restore () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBuilder ( m View : ĠView ) Ġ: ĠS keleton Builder ( m View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠView Skeleton Screen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠView Skeleton Screen ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠView Skeleton Screen :: class . java . name ĊĠĠĠ Ġ} Ċ }