package Ġcom . co met chat . pro . u ikit . ui _ components . ch ats Ċ Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . util . Typed Value Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView ĊĊ Ċ data Ġclass ĠItem Decorator ( ĊĠĠĠ Ġvar Ġcanvas : ĠCanvas , Ġvar Ġre cyclerView : ĠRecyclerView , Ġvar ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠ Ġvar Ġd X : ĠFloat , Ġvar Ġaction State : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġm Bg Color From Start ToEnd Ġ= ĊĠĠĠĠĠĠĠ ĠContext Compat . getColor ( re cyclerView . context , Ġandroid . R . color . transparent ) ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġm Bg Color From End To Start Ġ= ĊĠĠĠĠĠĠĠ ĠContext Compat . getColor ( re cyclerView . context , Ġandroid . R . color . transparent ) ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġm Icon Tint From Start ToEnd : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġm Icon Tint From End To Start : ĠInt ? Ġ= Ġnull ĊĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġm TextColor From Start ToEnd Ġ= ĠColor . DK GRAY ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġm TextColor From End To Start Ġ= ĠColor . DK GRAY ĊĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġprivate Ġvar Ġm Icon Res Id From Start ToEnd Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġprivate Ġvar Ġm Icon Res Id From End To Start Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġm Text From Start ToEnd : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Text From End To Start : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Type face From Start ToEnd Ġ= ĠType face . SAN S _ SER IF ĊĠĠĠ Ġprivate Ġvar Ġm Type face From End To Start Ġ= ĠType face . SAN S _ SER IF ĊĊĠĠĠ Ġprivate Ġvar Ġm Text Size From Start ToEnd Ġ= Ġ 1 4 f ĊĠĠĠ Ġprivate Ġvar Ġm Text Size From End To Start Ġ= Ġ 1 4 f ĊĊĠĠĠ Ġ/* ĠDefault Ġvalues Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Default Icon Horizontal Margin Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Default Text Unit Ġ= ĠTyped Value . COMPLEX _ UNIT _ SP ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Default Icon Horizontal Margin Ġ= ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ DIP , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . context . resources . display Metrics ĊĠĠĠĠĠĠĠ Ġ). toInt () ĊĠĠĠ Ġ} ĊĠĠĠ Ġclass ĠBuilder ( ĊĠĠĠĠĠĠĠ Ġcanvas : ĠCanvas , ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġd X : ĠFloat , ĊĠĠĠĠĠĠĠ Ġaction State : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Decorator Ġ= ĠItem Decorator ( canvas , Ġre cyclerView , ĠviewHolder , Ġd X , Ġaction State ) ĊĊĊĠĠĠĠĠĠĠ Ġfun ĠsetDefault Bg Color (@ Color Int Ġcolor : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Bg Color From Start ToEnd Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Bg Color From End To Start Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetDefault Icon (@ Drawable Res Ġresource Id : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Icon Res Id From Start ToEnd Ġ= Ġresource Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Icon Res Id From End To Start Ġ= Ġresource Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetDefault Icon Tint Color (@ Color Int Ġcolor : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Icon Tint From Start ToEnd Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Icon Tint From End To Start Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetDefault Text ( text : ĠString ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Text From Start ToEnd Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Text From End To Start Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun ĠsetDefault TextColor (@ Color Int Ġcolor : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m TextColor From Start ToEnd Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m TextColor From End To Start Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetDefault Text Size ( unit : ĠInt Ġ= ĠTyped Value . COMPLEX _ UNIT _ SP , Ġsize : ĠFloat ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Default Text Unit Ġ= Ġunit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Text Size From Start ToEnd Ġ= Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Text Size From End To Start Ġ= Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun ĠsetDefault Type Face ( type face : ĠType face ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Type face From Start ToEnd Ġ= Ġtype face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Type face From End To Start Ġ= Ġtype face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Icon Horizontal Margin ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit : ĠInt Ġ= ĠTyped Value . COMPLEX _ UNIT _ DIP , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Horizontal Margin : ĠInt ĊĠĠĠĠĠĠĠ Ġ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Default Icon Horizontal Margin Ġ= ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Horizontal Margin . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . re cyclerView . context . resources . display Metrics ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From Start ToEnd Bg Color (@ Color Int Ġcolor : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Bg Color From Start ToEnd Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From End To Start Bg Color (@ Color Int Ġcolor : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Bg Color From End To Start Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From Start ToEnd Icon (@ Drawable Res Ġdrawable Id : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Icon Res Id From Start ToEnd Ġ= Ġdrawable Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From End To Start Icon (@ Drawable Res Ġdrawable Id : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Icon Res Id From End To Start Ġ= Ġdrawable Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġset From Start ToEnd Icon Tint (@ Color Int Ġt int Color : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Icon Tint From Start ToEnd Ġ= Ġt int Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From End To Start Icon Tint (@ Color Int Ġt int Color : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Icon Tint From End To Start Ġ= Ġt int Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From Start ToEnd Text ( text : ĠString ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Text From Start ToEnd Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From End To Start Text ( text : ĠString ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Text From End To Start Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From Start ToEnd TextColor (@ Color Int Ġcolor : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m TextColor From Start ToEnd Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From End To Start TextColor (@ Color Int Ġcolor : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m TextColor From End To Start Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From Start ToEnd Text Size ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit : ĠInt Ġ= ĠTyped Value . COMPLEX _ UNIT _ SP , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize : ĠFloat ĊĠĠĠĠĠĠĠ Ġ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Default Text Unit Ġ= Ġunit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Text Size From Start ToEnd Ġ= Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From End To Start Text Size ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit : ĠInt Ġ= ĠTyped Value . COMPLEX _ UNIT _ SP , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize : ĠFloat ĊĠĠĠĠĠĠĠ Ġ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Default Text Unit Ġ= Ġunit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Text Size From End To Start Ġ= Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From Start ToEnd Type face ( type face : ĠType face ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Type face From Start ToEnd Ġ= Ġtype face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset From End To Start Type face ( type face : ĠType face ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Decorator . m Type face From End To Start Ġ= Ġtype face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate (): ĠItem Decorator Ġ= Ġm Decorator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDrawable . color Filter (@ Color Int Ġt int Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . setColor Filter ( tint Color , ĠPort er D uff . Mode . MULTI PLY ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . color Filter Ġ= ĠBlend Mode Color Filter ( tint Color , ĠBlend Mode . SRC _ AT OP ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecor ate () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action State Ġ!= ĠItem Touch Helper . ACTION _ STATE _ SW I PE ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( dX Ġ> Ġ 0 ) Ġfrom Start ToEnd Behavior () Ġelse Ġfrom End To Start Behavior () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfrom Start ToEnd Behavior () Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas . clip Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . left , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . top , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . left Ġ+ Ġd X . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠDraw s Ġa Ġcolor Ġdrawable Ġon Ġthe Ġcanvas , Ġwith Ġthe Ġsame Ġsize Ġas Ġthe Ġcanvas ĊĠĠĠĠĠĠĠ Ġif Ġ( m Bg Color From Start ToEnd Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv BackgroundColor Ġ= ĠColor Drawable ( m Bg Color From Start ToEnd ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv BackgroundColor . bounds Ġ= Ġcanvas . clip Bounds ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv BackgroundColor . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠDraw s Ġthe Ġicon Ġcontext ual izing Ġthe Ġswipe Ġaction ĊĠĠĠĠĠĠĠ Ġvar Ġicon Size Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( m Icon Res Id From Start ToEnd Ġ!= Ġ 0 Ġ&& Ġd X Ġ> Ġm Default Icon Horizontal Margin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . context , Ġm Icon Res Id From Start ToEnd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Size Ġ= Ġit . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Icon Ġ= Ġicon Size Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . top Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( view Holder . item View . bottom Ġ- ĠviewHolder . item View . top ) Ġ/ Ġ 2 Ġ- Ġhalf Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . left Ġ+ Ġm Default Icon Horizontal Margin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . left Ġ+ Ġm Default Icon Horizontal Margin Ġ+ Ġit . intrinsic Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ+ Ġicon Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Icon Tint From Start ToEnd ?. let Ġ{ Ġicon Tint Color Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . color Filter ( icon Tint Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠDraw s Ġthe Ġdescriptive Ġtext Ġcontext ual izing Ġthe Ġswipe Ġaction ĊĠĠĠĠĠĠĠ Ġm Text From Start ToEnd ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dX Ġ> Ġm Default Icon Horizontal Margin Ġ+ Ġicon Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Paint Ġ= ĠText Paint () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . text Size Ġ= ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Default Text Unit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Size From Start ToEnd , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . context . resources . display Metrics ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= Ġm TextColor From Start ToEnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . type face Ġ= Ġm Type face From Start ToEnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Top Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Holder . item View . top Ġ+ Ġ( view Holder . item View . bottom Ġ- ĠviewHolder . item View . top ) Ġ/ Ġ 2 . 0 Ġ+ Ġtext Paint . text Size Ġ/ Ġ 2 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . left Ġ+ Ġm Default Icon Horizontal Margin Ġ+ Ġicon Size Ġ+ Ġ( if Ġ( icon Size Ġ> Ġ 0 ) Ġm Default Icon Horizontal Margin Ġ/ Ġ 2 Ġelse Ġ 0 ). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfrom End To Start Behavior () Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas . clip Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . right Ġ+ Ġd X . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . top , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . right , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠDraw s Ġa Ġcolor Ġdrawable Ġon Ġthe Ġcanvas , Ġwith Ġthe Ġsame Ġsize Ġas Ġthe Ġcanvas ĊĠĠĠĠĠĠĠ Ġif Ġ( m Bg Color From End To Start Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv BackgroundColor Ġ= ĠColor Drawable ( m Bg Color From End To Start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv BackgroundColor . bounds Ġ= Ġcanvas . clip Bounds ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv BackgroundColor . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠDraw s Ġthe Ġicon Ġcontext ual izing Ġthe Ġswipe Ġaction ĊĠĠĠĠĠĠĠ Ġvar Ġimg End Ġ= ĠviewHolder . item View . right ĊĠĠĠĠĠĠĠ Ġvar Ġicon Size Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( m Icon Res Id From End To Start Ġ!= Ġ 0 Ġ&& Ġd X Ġ< Ġ- m Default Icon Horizontal Margin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . context , Ġm Icon Res Id From End To Start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Size Ġ= Ġit . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Icon Ġ= Ġicon Size Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . top Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( view Holder . item View . bottom Ġ- ĠviewHolder . item View . top ) Ġ/ Ġ 2 Ġ- Ġhalf Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg End Ġ= ĠviewHolder . item View . right Ġ- Ġm Default Icon Horizontal Margin Ġ- Ġicon Size Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg End , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . right Ġ- Ġm Default Icon Horizontal Margin Ġ- Ġicon Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ+ Ġit . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Icon Tint From End To Start ?. let Ġ{ Ġicon Tint Color Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . color Filter ( icon Tint Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠDraw s Ġthe Ġdescriptive Ġtext Ġcontext ual izing Ġthe Ġswipe Ġaction ĊĠĠĠĠĠĠĠ Ġm Text From End To Start ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dX Ġ< Ġ- m Default Icon Horizontal Margin Ġ- Ġicon Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Paint Ġ= ĠText Paint () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . text Size Ġ= ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Default Text Unit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Size From End To Start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . context . resources . display Metrics ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= Ġm TextColor From End To Start ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . type face Ġ= Ġm Type face From End To Start ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġtext Paint . measure Text ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Top Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Holder . item View . top Ġ+ Ġ( view Holder . item View . bottom Ġ- ĠviewHolder . item View . top ) Ġ/ Ġ 2 . 0 Ġ+ Ġtext Paint . text Size Ġ/ Ġ 2 . 0 ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg End Ġ- Ġwidth Ġ- Ġif Ġ( img End Ġ== ĠviewHolder . item View . right ) Ġm Default Icon Horizontal Margin Ġelse Ġm Default Icon Horizontal Margin Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }