package Ġcom . avr az s ard ar . filter . widget Ċ Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġgal ata Ġon Ġ 1 3 . 0 9 . 1 6 . Ċ Ġ*/ Ċ Ċ internal Ġfun Ġcalculate Size ( measure Spec : ĠInt , Ġdesired Size : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġmode Ġ= ĠView . Measure Spec . get Mode ( measure Spec ) ĊĠĠĠ Ġval Ġsize Ġ= ĠView . Measure Spec . getSize ( measure Spec ) ĊĊĠĠĠ Ġval Ġactual Size Ġ= Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠ ĠView . Measure Spec . EX ACT LY Ġ-> Ġsize ĊĠĠĠĠĠĠĠ ĠView . Measure Spec . AT _ MO ST Ġ-> ĠMath . min ( desired Size , Ġsize ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdesired Size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġactual Size Ċ } Ċ Ċ internal Ġfun ĠViewGroup . dp To Px ( dp : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġdisplay Metrics Ġ= Ġcontext . resources . display Metrics ĊĠĠĠ Ġreturn ĠMath . round ( dp Ġ* Ġ( display Metrics . xd pi Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT )) Ċ } Ċ Ċ internal Ġfun ĠViewGroup . dp To Px ( dp : ĠFloat ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġdisplay Metrics Ġ= Ġcontext . resources . display Metrics ĊĠĠĠ Ġreturn ĠMath . round ( dp Ġ* Ġ( display Metrics . xd pi Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT )) Ċ } Ċ Ċ internal Ġfun ĠViewGroup . get Dim en ( res : ĠInt ): ĠInt Ġ= Ġcontext . resources . get Dimension Pixel Offset ( res ) Ċ Ċ internal Ġfun Ġcalculate X ( position : ĠInt , Ġsize : ĠInt , Ġmin Margin : ĠInt , Ġitem Size : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġreal Margin Ġ= Ġcalculate Margin ( size , Ġitem Size , Ġmin Margin ) ĊĠĠĠ Ġreturn Ġposition Ġ* Ġitem Size Ġ+ Ġposition Ġ* Ġreal Margin Ġ+ Ġreal Margin Ċ } Ċ Ċ internal Ġfun Ġcalculate Margin ( width : ĠInt , Ġitem Width : ĠInt , Ġmargin : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġcount Ġ= Ġcalculate Count ( width , Ġitem Width , Ġmargin ) ĊĠĠĠ Ġreturn Ġif Ġ( count Ġ> Ġ 0 ) Ġ( width Ġ- Ġcount Ġ* Ġitem Width ) Ġ/ Ġcount Ġelse Ġ 0 Ċ } Ċ Ċ internal Ġfun Ġcalculate Count ( width : ĠInt , Ġitem Width : ĠInt , Ġmargin : ĠInt ): ĠInt Ġ= Ġwidth Ġ/ Ġ( item Width Ġ+ Ġmargin ) Ċ Ċ internal Ġfun Ġis Click ( start X : ĠFloat , Ġstart Y : ĠFloat , Ġx : ĠFloat , Ġy : ĠFloat ): ĠBoolean Ġ= ĠMath . abs ( x Ġ- Ġstart X ) Ġ< Ġ 2 0 Ġ&& ĠMath . abs ( y Ġ- Ġstart Y ) Ġ< Ġ 2 0