package Ġcom . r ht y me . swipe to action Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . H aptic Feedback Constants Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlin . math . abs Ċ Ċ class ĠSw ipe To Actions Callback ( ĊĠĠĠ Ġvar Ġswipe Config : ĠSw ipe Config , ĊĠĠĠ Ġval Ġswipe Listener : ĠSw ipe Listener Ċ ) Ġ: ĊĠĠĠ ĠItem Touch Helper . Simple Callback ( 0 , Ġswipe Config . swipe Direction . to Movement Flags ()) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġd X Ġ= Ġ 0 f ĊĊĠĠĠ Ġprivate Ġvar Ġlast Animation Time : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġicon Scale Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġswipe Back Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis V ibrate Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġleft Active BackColor Drawable : ĠColor Drawable Ġ= ĠColor Drawable ( Color . WHITE ) ĊĠĠĠ Ġvar Ġright Active BackColor Drawable : ĠColor Drawable Ġ= ĠColor Drawable ( Color . WHITE ) ĊĠĠĠ Ġvar Ġdisable BackColor Drawable : ĠColor Drawable Ġ= ĠColor Drawable ( Color . WHITE ) ĊĊĠĠĠ Ġprivate Ġvar Ġconfig Parsed Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġtext Edge Margin : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġval Ġbackground Corner Offset Ġ= Ġ 2 0 ĊĊĠĠĠ Ġprivate Ġvar Ġstart Tracking Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġtext Paint Ġ= ĠText Paint ( Paint . ANTI _ ALIAS _ FLAG Ġor ĠPaint . D IT HER _ FLAG ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Movement Flags ( ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( view Holder Ġis ĠSw ipe able ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . swipe Config Ġ= ĠviewHolder . provide Swipe Config () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Config ( view Holder . item View . context ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! config Parsed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Config ( view Holder . item View . context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtext Edge Margin Ġ= ĠconvertTo Dp ( 5 , ĠviewHolder . item View ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠItem Touch Helper . Callback . make Movement Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Touch Helper . ACTION _ STATE _ IDLE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Config . swipe Direction . to Movement Flags () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Config ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Parsed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtext Paint . text Size Ġ= ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ SP , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Config . text Size Sp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . display Metrics ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtext Paint . textAlign Ġ= ĠPaint . Align . LEFT ĊĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= Ġswipe Config . textColor ĊĠĠĠĠĠĠĠ Ġtext Paint . style Ġ= ĠPaint . Style . FILL ĊĊĠĠĠĠĠĠĠ Ġif Ġ( swipe Config . swipe Direction Ġ== ĠSw ipe Direction . TO _ LEFT _ RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġswipe Config . swipe Direction Ġ== ĠSw ipe Direction . TO _ LEFT ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Active BackColor Drawable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Drawable ( swipe Config . left Active BackColor Ġ?: ĠColor . WHITE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( swipe Config . swipe Direction Ġ== ĠSw ipe Direction . TO _ LEFT _ RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġswipe Config . swipe Direction Ġ== ĠSw ipe Direction . TO _ RIGHT ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Active BackColor Drawable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Drawable ( swipe Config . right Active BackColor Ġ?: ĠColor . WHITE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdisable BackColor Drawable Ġ= ĠColor Drawable ( swipe Config . disable BackColor Ġ?: ĠColor . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġprivate Ġfun Ġset Touch Listener ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView . setOn Touch Listener Ġ{ Ġ_, Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Back Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . action Ġ== ĠMotion Event . ACTION _ CANCEL Ġ|| Ġevent . action Ġ== ĠMotion Event . ACTION _ UP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( swipe Back Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs ( view Holder . item View . translation X ) Ġ>= ĠconvertTo Dp ( 1 0 0 , ĠviewHolder . item View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Holder . item View . translation X Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Listener . on Swipe From Left To Right ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Listener . on Swipe From Right To Left ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis V ibrate Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠconvertTo Absolute Direction ( flags : ĠInt , Ġlayout Direction : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( swipe Back ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Back Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . convertTo Absolute Direction ( flags , Ġlayout Direction ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Child Draw ( ĊĠĠĠĠĠĠĠ Ġc : ĠCanvas , ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġd X : ĠFloat , ĊĠĠĠĠĠĠĠ Ġd Y : ĠFloat , ĊĠĠĠĠĠĠĠ Ġaction State : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Currently Active : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action State Ġ== ĠItem Touch Helper . ACTION _ STATE _ SW I PE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Touch Listener ( re cyclerView , ĠviewHolder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= ĠconvertTo Dp ( 1 3 0 , ĠviewHolder . item View ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( dX Ġ> Ġ 0 Ġ&& Ġswipe Config . swipe Direction . can Swipe To Right ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( view Holder . item View . translation X ) Ġ< Ġdiff Ġ|| Ġd X Ġ< Ġthis . dX ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Child Draw ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Currently Active ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dX Ġ= Ġd X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Tracking Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Left Layout ( c , ĠviewHolder , Ġd X ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( dX Ġ< Ġ 0 Ġ&& Ġswipe Config . swipe Direction . can Swipe To Left ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( view Holder . item View . translation X ) Ġ< Ġdiff Ġ|| Ġd X Ġ> Ġthis . dX ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Child Draw ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Currently Active ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dX Ġ= Ġd X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Tracking Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Right Layout ( c , ĠviewHolder , Ġd X ) ĊĠĠĠĠĠĠĠ Ġ} Ċ /* ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Active BackColor Drawable . setBounds ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright BackColor . setBounds ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft BackColor . draw ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright BackColor . draw ( c ) ĊĠĠĠĠĠĠĠ Ġ} Ċ */ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Left Layout ( ĊĠĠĠĠĠĠĠ Ġc : ĠCanvas , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġd X : ĠFloat ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠviewHolder . item View ĊĠĠĠĠĠĠĠ Ġval Ġleft Icon Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Config . left Icon Ġ?: Ġthrow ĠResources . NotFoundException (" left Icon Ġnot Ġfound !! !") ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Active BackColor Ġ= Ġswipe Config . left Active BackColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠResources . NotFoundException (" left Active BackColor Ġnot Ġfound !! !") ĊĊĠĠĠĠĠĠĠ Ġval Ġicon Top Param Ġ= Ġif Ġ( swipe Config . left Text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġicon Top : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . top Ġ+ Ġ( item View . height Ġ- Ġleft Icon . intrinsic Height ) Ġ/ Ġicon Top Param ĊĠĠĠĠĠĠĠ Ġval Ġicon Bottom : ĠInt Ġ= Ġicon Top Ġ+ Ġleft Icon . intrinsic Height ĊĊĠĠĠĠĠĠĠ Ġvar Ġtext X Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġtext Y Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġtext Width Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġicon Left : ĠInt Ġ= Ġleft Icon . intrinsic Width Ġ/ Ġ 2 ĊĊĊĠĠĠĠĠĠĠ Ġswipe Config . left Text ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Bounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . getText Bounds ( it , Ġ 0 , Ġit . length , Ġtext Bounds ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Width Ġ= Ġtext Bounds . width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext X Ġ= ĠitemView . left Ġ+ Ġtext Edge Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Y Ġ= Ġicon Bottom Ġ+ Ġtext Edge Margin Ġ+ Ġtext Bounds . height () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Width Ġ> Ġleft Icon . intrinsic Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Left Ġ= Ġ( text X Ġ+ Ġ(( text Width Ġ- Ġleft Icon . intrinsic Width ) Ġ/ Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġicon Right : ĠInt Ġ= Ġicon Left Ġ+ Ġleft Icon . intrinsic Width ĊĊĠĠĠĠĠĠĠ Ġleft Icon . setBounds ( icon Left , Ġicon Top , Ġicon Right , Ġicon Bottom ) ĊĊĠĠĠĠĠĠĠ Ġleft Active BackColor Drawable . setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . left , ĠitemView . top , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . left Ġ+ Ġd X . toInt () Ġ+ Ġbackground Corner Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠ Ġdraw Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc , ĠitemView , Ġleft Active BackColor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Icon , Ġleft Active BackColor Drawable , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Config . left Text , Ġtext X , Ġtext Y ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Right Layout ( ĊĠĠĠĠĠĠĠ Ġc : ĠCanvas , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġd X : ĠFloat ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠviewHolder . item View ĊĊĠĠĠĠĠĠĠ Ġval Ġright Icon Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Config . right Icon Ġ?: Ġthrow ĠResources . NotFoundException (" right Icon Ġnot Ġfound !! !") ĊĊĠĠĠĠĠĠĠ Ġval Ġright Active BackColor Ġ= Ġswipe Config . right Active BackColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠResources . NotFoundException (" right Active BackColor Ġnot Ġfound !! !") ĊĊĠĠĠĠĠĠĠ Ġval Ġicon Top Param Ġ= Ġif Ġ( swipe Config . right Text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġicon Top : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . top Ġ+ Ġ( item View . height Ġ- Ġright Icon . intrinsic Height ) Ġ/ Ġicon Top Param ĊĠĠĠĠĠĠĠ Ġval Ġicon Bottom : ĠInt Ġ= Ġicon Top Ġ+ Ġright Icon . intrinsic Height ĊĊĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġvar Ġtext X Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġtext Y Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġtext Width Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġicon Left : ĠInt Ġ= ĠitemView . right Ġ- Ġ( right Icon . intrinsic Width Ġ* Ġ 3 Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġswipe Config . right Text ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Bounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . getText Bounds ( it , Ġ 0 , Ġit . length , Ġtext Bounds ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Width Ġ= Ġtext Bounds . width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext X Ġ= ĠitemView . right Ġ- Ġtext Width Ġ- Ġtext Edge Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Y Ġ= Ġicon Bottom Ġ+ Ġtext Edge Margin Ġ+ Ġtext Bounds . height () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Width Ġ> Ġright Icon . intrinsic Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Left Ġ= Ġ( text X Ġ+ Ġ(( text Width Ġ- Ġright Icon . intrinsic Width ) Ġ/ Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġicon Right : ĠInt Ġ= Ġicon Left Ġ+ Ġright Icon . intrinsic Width ĊĊĠĠĠĠĠĠĠ Ġright Icon . setBounds ( icon Left , Ġicon Top , Ġicon Right , Ġicon Bottom ) ĊĊĠĠĠĠĠĠĠ Ġright Active BackColor Drawable . setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right Ġ+ Ġd X . toInt () Ġ- Ġbackground Corner Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . top , ĠitemView . right , ĠitemView . bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġright Icon . setBounds ( icon Left , Ġicon Top , Ġicon Right , Ġicon Bottom ) ĊĊĠĠĠĠĠĠĠ Ġdraw Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc , ĠitemView , Ġright Active BackColor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Icon , Ġright Active BackColor Drawable , Ġswipe Config . right Text , Ġtext X , Ġtext Y ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Layout ( ĊĠĠĠĠĠĠĠ Ġc : ĠCanvas , ĊĠĠĠĠĠĠĠ ĠitemView : ĠView , ĊĠĠĠĠĠĠĠ Ġ@ Color Int Ġback Ground Active Color : ĠInt , ĊĠĠĠĠĠĠĠ Ġicon : ĠDrawable , ĊĠĠĠĠĠĠĠ Ġbackground : ĠColor Drawable , ĊĠĠĠĠĠĠĠ Ġtext : ĠString ?, ĊĠĠĠĠĠĠĠ Ġtext X : ĠInt , ĊĠĠĠĠĠĠĠ Ġtext Y : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtranslation X Ġ= ĠitemView . translation X ĊĊĠĠĠĠĠĠĠ Ġif Ġ( abs ( translation X ) Ġ>= Ġactive Translation Threshold Dp ( item View )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground . color Ġ= Ġback Ground Active Color ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground . color Ġ= Ġswipe Config . disable BackColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis V ibrate Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Time Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( start Tracking ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is V ibrate Ġ&& Ġabs ( item View . translation X ) Ġ>= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Translation Threshold Dp ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . perform H aptic Feedback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH aptic Feedback Constants . KEY BOARD _ T AP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH aptic Feedback Constants . FLAG _ IGNORE _ GLOBAL _ SETTING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Animation Time Ġ= Ġnew Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Scale Ġ= Ġ 1 . 2 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis V ibrate Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . post Invalidate Delayed ( ICON _ ANIM ATION _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( abs ( last Animation Time Ġ- Ġnew Time ) Ġ>= ĠICON _ ANIM ATION _ TIME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Scale Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġscale Ratio Ġ= Ġ( convertTo Dp ( 4 , ĠitemView ) Ġ* Ġicon Scale ). toInt () ĊĠĠĠĠĠĠĠ Ġicon . setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon . bounds . left Ġ- Ġscale Ratio , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon . bounds . top Ġ- Ġscale Ratio , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon . bounds . right Ġ+ Ġscale Ratio , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon . bounds . bottom Ġ+ Ġscale Ratio ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbackground . draw ( c ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Text ( text , Ġtext X . toFloat (), Ġtext Y . toFloat (), Ġtext Paint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġicon . draw ( c ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠconvertTo Dp ( pixel : ĠInt , Ġview : ĠView ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠView Utils . fetch Dp ( pixel . toFloat (), Ġview . context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġactive Translation Threshold Dp ( view : ĠView ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠconvertTo Dp ( ACTIVE _ TRANSL ATION _ THRESHOLD , Ġview ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS WI PE _ TAG Ġ= Ġ" SW I PE _ TAG " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACT IVE _ TRANSL ATION _ THRESHOLD Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠICON _ ANIM ATION _ TIME Ġ= Ġ 1 0 0 L ĊĠĠĠ Ġ} Ċ }