@ file : Suppress (" unused ", Ġ" Member Visibility Can Be Private ") Ċ Ċ package Ġcom . l uk el or us so . vert ic alse ek bar Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . view . View Compat Ċ import Ġkotlinx . android . synt hetic . main . layout _ vert ic alse ek bar . view .* Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* ĠA Ġn icer , Ġrede signed Ġand Ġvertical ĠSeek Bar Ċ Ġ*/ Ċ open Ġclass ĠVertical Seek Bar Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ MAX _ VALUE Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ PROGRESS Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ DRAW ABLE _ BACKGROUND : ĠString Ġ= Ġ"# 0 0 0 0 0 0 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ DRAW ABLE _ PROGRESS _ START : ĠString Ġ= Ġ"# 1 A 1 A 1 A " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ DRAW ABLE _ PROGRESS _ END : ĠString Ġ= Ġ"# 2 5 2 5 2 5 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠPlace holder Ġ{ ĊĠĠĠĠĠĠĠ ĠOUT SIDE , ĊĠĠĠĠĠĠĠ ĠIN SIDE , ĊĠĠĠĠĠĠĠ ĠM ID DLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġon Progress ChangeListener : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠonPress Listener : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Release Listener : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġclick To Set Progress Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġbar Corner Radius : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġbar Background Drawable : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġbar Background Start Color : ĠInt Ġ= ĠColor . parse Color ( DEFAULT _ DRAW ABLE _ BACKGROUND ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background Drawable Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġbar Background End Color : ĠInt Ġ= ĠColor . parse Color ( DEFAULT _ DRAW ABLE _ BACKGROUND ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background Drawable Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġbar Progress Drawable : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġbar Progress Start Color : ĠInt Ġ= ĠColor . parse Color ( DEFAULT _ DRAW ABLE _ PROGRESS _ START ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress Drawable Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġbar Progress End Color : ĠInt Ġ= ĠColor . parse Color ( DEFAULT _ DRAW ABLE _ PROGRESS _ END ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress Drawable Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġbar Width : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmin Layout Width : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmin Layout Height : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmax Placeholder Drawable : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmax Placeholder Position Ġ= ĠPlace holder . MIDDLE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmin Placeholder Drawable : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmin Placeholder Position Ġ= ĠPlace holder . MIDDLE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġshow Thumb Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġthumb Container Color : ĠInt Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġthumb Container Corner Radius : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġthumb Placeholder Drawable : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġuse Thumb To Set Progress Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar ĠmaxValue Ġ= ĠDEFAULT _ MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ< Ġ 1 Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ> ĠnewValue ) Ġprogress Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Views () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġprogress : ĠInt Ġ= ĠDEFAULT _ PROGRESS ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ< Ġ 0 Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ> ĠmaxValue Ġ-> ĠmaxValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= ĠnewValue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Progress ChangeListener ?. invoke ( newValue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Views () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġy Delta : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġinit Ended Ġ= ĊĠĠĠĠĠĠĠ Ġfalse Ġ// Ġif Ġtrue Ġallows Ġthe Ġview Ġto Ġbe Ġupdated Ġafter Ġsetting Ġan Ġattribute Ġprogram matically ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinf late ( context , ĠR . layout . layout _ vert ic alse ek bar , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( attrs Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Vertical Seek Bar , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick To Set Progress Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ click _ to _ set _ progress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick To Set Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Corner Radius Ġ= Ġattributes . get Layout Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ bar _ corner _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Corner Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background Start Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ bar _ background _ gradient _ start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background Start Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background End Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ bar _ background _ gradient _ end , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background End Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . get Drawable ( R . style able . Vertical Seek Bar _ vs b _ bar _ background )?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background Drawable Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress Start Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ bar _ progress _ gradient _ start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress Start Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress End Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ bar _ progress _ gradient _ end , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress End Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . get Drawable ( R . style able . Vertical Seek Bar _ vs b _ bar _ progress ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress Drawable Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Width Ġ= Ġattributes . get Dimension Pixel Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ bar _ width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Width Ġ?: Ġcontainer . layout Params . width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . get Layout Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ android _ layout _ width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Layout Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . layout Params . width Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġ- 1 Ġ&& Ġit Ġ< Ġmin Layout Width ) Ġmin Layout Width Ġ// Ġwrap _ content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . get Layout Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ android _ layout _ height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Layout Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . layout Params . height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġ- 1 Ġ&& Ġit Ġ< Ġmin Layout Height ) Ġmin Layout Height Ġ// Ġwrap _ content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . get Drawable ( R . style able . Vertical Seek Bar _ vs b _ max _ placeholder _ src ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder Drawable Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder Position Ġ= ĠPlace holder . values ()[ attributes . getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ max _ placeholder _ position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder Position . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . get Drawable ( R . style able . Vertical Seek Bar _ vs b _ min _ placeholder _ src ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder Drawable Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder Position Ġ= ĠPlace holder . values ()[ attributes . getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ min _ placeholder _ position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder Position . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Thumb Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getBoolean ( R . style able . Vertical Seek Bar _ vs b _ show _ thumb , Ġshow Thumb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Container Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ thumb _ container _ tint , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Container Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Container Corner Radius Ġ= Ġattributes . get Layout Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ thumb _ container _ corner _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Container Corner Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . get Drawable ( R . style able . Vertical Seek Bar _ vs b _ thumb _ placeholder _ src ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Placeholder Drawable Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getInt ( R . style able . Vertical Seek Bar _ vs b _ max _ value , ĠmaxValue ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxValue Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getInt ( R . style able . Vertical Seek Bar _ vs b _ progress , Ġprogress ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Thumb To Set Progress Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Vertical Seek Bar _ vs b _ use _ thumb _ to _ set _ progress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Thumb To Set Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ended Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġapply Attributes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Progress ChangeListener ( listener : Ġ(( Int ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Progress ChangeListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Press Listener ( listener : Ġ(( Int ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Press Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Release Listener ( listener : Ġ(( Int ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Release Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region ĠPRO TECT ED ĠMETHO DS ĊĠĠĠ Ġprotected Ġfun ĠContext . dp To Pixel ( dp : ĠFloat ): ĠFloat Ġ= ĊĠĠĠĠĠĠĠ Ġdp Ġ* Ġ( resources . display Metrics . density D pi . toFloat () Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT ) ĊĊĠĠĠ Ġprotected Ġfun ĠContext . pixel To Dp ( px : ĠFloat ): ĠFloat Ġ= ĊĠĠĠĠĠĠĠ Ġpx Ġ/ Ġ( resources . display Metrics . density D pi . toFloat () Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT ) ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ", Ġ" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġapply Attributes () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( init Ended ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ended Ġ= Ġfalse Ġ// Ġwill Ġbe Ġreleased Ġat Ġthe Ġend ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġthumb Card View : ĠRelative Layout ? Ġ= Ġnull Ġ// Ġnullable Ġfor Ġcustomization ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Card View Ġ= Ġthumb . findViewById ( R . id . thumb Card View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNoSuch FieldError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġthumb Text Ġ: TextView ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Text Ġ= Ġthumb . findViewById ( R . id . thumb Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNoSuch FieldError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġthumb Placeholder : ĠImageView ? Ġ= Ġnull Ġ// Ġnullable Ġfor Ġcustomization ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Placeholder Ġ= Ġthumb . findViewById ( R . id . thumb Placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNoSuch FieldError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCustom izing Ġdrawable Card View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Card View . layout Params . width Ġ= Ġbar Width Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background Top . layout Params . width Ġ= Ġbar Width Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCustom izing Ġdrawable Background ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bar Background Drawable Ġ== Ġnull ) Ġbar Background Drawable Ġ= ĠGradient Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGradient Drawable . Orientation . TOP _ BOTTOM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( bar Background Start Color , Ġbar Background End Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġcorner Radius Ġ= Ġ 0 f Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Background . background Ġ= Ġbar Background Drawable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCustom izing Ġdrawable Progress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bar Progress Drawable Ġ== Ġnull ) Ġbar Progress Drawable Ġ= ĠGradient Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGradient Drawable . Orientation . TOP _ BOTTOM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( bar Progress Start Color , Ġbar Progress End Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġcorner Radius Ġ= Ġ 0 f Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress . background Ġ= Ġbar Progress Drawable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠApply ing Ġcard Ġcorner Ġradius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Card View . radius Ġ= Ġbar Corner Radius . toFloat () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Card View ?. radius Ġ= Ġthumb Container Corner Radius . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠApply ing Ġcustom Ġplaceholders ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder . setImage Drawable ( max Placeholder Drawable ) Ġ// Ġcan Ġalso Ġbe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder . setImage Drawable ( min Placeholder Drawable ) Ġ// Ġcan Ġalso Ġbe Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLet 's Ġshape Ġthe Ġthumb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthumb Measure Increase Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Card View Ġ!= Ġnull ) Ġ( View Compat . get Elevation ( thumb Card View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġcontext . dp To Pixel ( 1 F )). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Thumb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Placeholder Drawable ?. also Ġ{ Ġthumb Placeholder ?. setImage Drawable ( it ) Ġ} Ġ// ĠCAN NOT Ġbe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstates Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( android . R . attr . state _ enabled ), Ġ Ġ// Ġenabled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf (- android . R . attr . state _ enabled ), Ġ// Ġdisabled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf (- android . R . attr . state _ checked ), Ġ// Ġunchecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( android . R . attr . state _ pressed ) ĠĠ Ġ// Ġpressed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Container Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Container Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Container Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Container Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). to IntArray () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Card View Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . setBackground Tint List ( thumb Card View , ĠColor State List ( states , Ġcolors )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb . measure ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb . layout Params Ġ= Ġ( thumb . layout Params Ġas ĠLayout Params ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġthumb . meas ured Width Ġ+ Ġthumb Measure Increase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġthumb . meas ured Height Ġ+ Ġthumb Measure Increase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Card View ?. layout Params Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( thumb Card View ?. layout Params Ġas ĠLayout Params ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġthumb Measure Increase Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġthumb . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdding Ġsome Ġmargin Ġto Ġdrawable Card View , Ġmax Placeholder Ġand Ġmin Placeholder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Placeholder LayoutParams Ġ= Ġ( max Placeholder . layout Params Ġas ĠLayout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Placeholder LayoutParams Ġ= Ġ( min Placeholder . layout Params Ġas ĠLayout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Card View . layout Params Ġ= Ġ( bar Card View . layout Params Ġas ĠLayout Params ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthumb Half Height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Thumb ) Ġthumb . meas ured Height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Placeholder Half Height Ġ= Ġ( max Placeholder . drawable ?. intrinsic Height Ġ?: Ġ 0 ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( max Placeholder Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlace holder . INS IDE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġthumb Half Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder LayoutParams . top Margin Ġ= Ġtop Margin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlace holder . OUT SIDE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġmax Placeholder . drawable . intrinsic Height Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Half Height Ġ> Ġmax Placeholder . drawable . intrinsic Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Half Height Ġ- Ġmax Placeholder . drawable . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder LayoutParams . top Margin Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ- Ġmax Placeholder . drawable . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġmax ( thumb Half Height , Ġmax Placeholder Half Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder LayoutParams . top Margin Ġ= Ġtop Margin Ġ- Ġmax Placeholder Half Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder LayoutParams . bottom Margin Ġ= Ġmax Placeholder LayoutParams . top Margin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Placeholder . layout Params Ġ= Ġmax Placeholder LayoutParams ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Placeholder Half Height Ġ= Ġ( min Placeholder . drawable ?. intrinsic Height Ġ?: Ġ 0 ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( min Placeholder Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlace holder . INS IDE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġthumb Half Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder LayoutParams . bottom Margin Ġ= Ġbottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlace holder . OUT SIDE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġmin Placeholder . drawable . intrinsic Height Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Half Height Ġ> Ġmin Placeholder . drawable . intrinsic Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Half Height Ġ- Ġmin Placeholder . drawable . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder LayoutParams . bottom Margin Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ- Ġmin Placeholder . drawable . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġmax ( thumb Half Height , Ġmin Placeholder Half Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder LayoutParams . bottom Margin Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ- Ġmin Placeholder Half Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ+= Ġthumb Measure Increase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder LayoutParams . bottom Margin Ġ+= Ġthumb Measure Increase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder LayoutParams . top Margin Ġ= Ġmax Placeholder LayoutParams . bottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Placeholder . layout Params Ġ= Ġmin Placeholder LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhere Ġwe Ġintercept Ġthe Ġclick Ġon Ġthe Ġthumb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Thumb Ġ&& Ġuse Thumb To Set Progress ) Ġthumb . setOn Touch Listener Ġ{ Ġthumb , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Y Ġ= Ġevent . raw Y . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . action Ġand ĠMotion Event . ACTION _ MASK ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ Ġ// Ġhere Ġwe Ġget Ġthe Ġmax Ġtop Ġy Ġcoordinate Ġ( y Delta ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Delta Ġ= Ġraw Y Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( bar Card View . layout Params Ġas ĠLayout Params ). top Margin Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( thumb . layout Params Ġas ĠLayout Params ). top Margin Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb . meas ured Height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonPress Listener ?. invoke ( progress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Y Ġ= Ġraw Y Ġ- Ġy Delta Ġ// Ġhere Ġwe Ġcalculate Ġthe Ġdisplacement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfill Height Ġ= Ġbar Card View . meas ured Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ Ġ// Ġhere Ġwe Ġupdate Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Y Ġin Ġ 1 Ġuntil Ġfill Height Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxValue Ġ- Ġ( position Y . toFloat () Ġ* ĠmaxValue Ġ/ Ġfill Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= ĠnewValue . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Y Ġ<= Ġ 0 Ġ-> Ġprogress Ġ= ĠmaxValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Y Ġ>= Ġfill Height Ġ-> Ġprogress Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Text ?. text Ġ= Ġ" p =${ progress }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġon Release Listener ?. invoke ( progress ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġthumb . setOn Touch Listener ( null ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhere Ġwe Ġintercept Ġthe Ġclick Ġon Ġthe Ġbar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( click To Set Progress ) Ġbar Card View . setOn Touch Listener Ġ{ Ġbar , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Y Ġ= Ġevent . y . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfill Height Ġ= Ġbar . meas ured Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ Ġ// Ġhere Ġwe Ġupdate Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Y Ġin Ġ 1 Ġuntil Ġfill Height Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= ĠmaxValue Ġ- Ġ( position Y . toFloat () Ġ* ĠmaxValue Ġ/ Ġfill Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= ĠnewValue . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Y Ġ<= Ġ 0 Ġ-> Ġprogress Ġ= ĠmaxValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Y Ġ>= Ġfill Height Ġ-> Ġprogress Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . action Ġand ĠMotion Event . ACTION _ MASK ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonPress Listener ?. invoke ( progress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġif Ġ( use Thumb To Set Progress ) Ġaction . invoke () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġon Release Listener ?. invoke ( progress ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġbar Card View . setOn Touch Listener ( null ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ended Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Views () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIn side Ġhere Ġthe Ġviews Ġare Ġre position ed Ġbased Ġon Ġthe Ġnew Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( init Ended ) Ġpost Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbar Card View LayoutParams Ġ= Ġbar Card View . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfill Height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ- Ġbar Card View LayoutParams . top Margin Ġ- Ġbar Card View LayoutParams . bottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmargin By Progress Ġ= Ġfill Height Ġ- Ġ( progress Ġ* Ġfill Height Ġ/ ĠmaxValue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumb . layout Params Ġ= Ġ( thumb . layout Params Ġas ĠLayout Params ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġmargin By Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthumb Half Height Ġ= Ġif Ġ( show Thumb ) Ġthumb . meas ured Height Ġ/ Ġ 2 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bar Card View LayoutParams . top Margin Ġ> Ġthumb Half Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplacement Ġ= Ġbar Card View LayoutParams . top Margin Ġ- Ġthumb Half Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ+= Ġdisplacement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar Progress . translation Y Ġ= -( bar Background . height -( bar Background . height Ġ* Ġ( max Value Ġ- Ġprogress ) Ġ/ ĠmaxValue ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ