package Ġcom . tutorials buzz . re cy ler view swipe t ode lete Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . core . graphics . drawable . Drawable Compat Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView ĊĊ Ċ // abstract Ġclass ĠSw ipe ToDelete Callback Ġconstructor ( internal Ġvar Ġcontext : ĠContext ) Ġ: ĠItem Touch Helper . Callback () Ġ{ Ċ abstract Ġclass ĠSw ipe ToDelete Callback Ġ: ĠItem Touch Helper . Simple Callback Ġ{ ĊĊĠĠĠ Ġvar Ġleft BG : ĠInt Ġ= ĠColor . LT GRAY ĊĠĠĠ Ġvar Ġleft Label : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġleft Icon : ĠDrawable ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġright BG : ĠInt Ġ= ĠColor . LT GRAY ; ĊĠĠĠ Ġvar Ġright Label : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġright Icon : ĠDrawable ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġcontext : ĠContext ; ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġdrag Dir : ĠInt , Ġswipe Dir : ĠInt ) Ġ: Ġsuper ( drag Dir , Ġswipe Dir ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbackground : ĠDrawable ĊĊĠĠĠ Ġvar Ġinitiated : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ// Setting ĠSw ipe ĠText ĊĠĠĠ Ġval Ġpaint Ġ= ĠPaint () ĊĊĠĠĠ Ġfun Ġinit Swipe View (): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġpaint . setColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġpaint . setText Size ( 4 8 f ) ĊĠĠĠĠĠĠĠ Ġpaint . setText Align ( Paint . Align . CENTER ) ĊĠĠĠĠĠĠĠ Ġbackground Ġ= ĠColor Drawable (); ĊĠĠĠĠĠĠĠ Ġinitiated Ġ= Ġtrue ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ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 ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠLog . d (" on Child Draw ", Ġ" dx : Ġ" Ġ+ Ġd X ) ĊĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠviewHolder . item View ĊĠĠĠĠĠĠĠ Ġif Ġ(! initi ated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Swipe View () ĊĠĠĠĠĠĠĠ Ġ} ĊĊ Ċ // ĠĠĠĠĠĠĠ Ġval Ġintr insic Height Ġ= Ġright Icon !!. get Intr insic Width () Ċ // ĠĠĠĠĠĠĠ Ġval Ġx Mark Top Ġ= ĠitemView . top Ġ+ Ġ(( item View . bottom Ġ- ĠitemView . top ) Ġ- Ġintr insic Height ) Ġ/ Ġ 2 Ċ // ĠĠĠĠĠĠĠ Ġval Ġx Mark Bottom Ġ= Ġx Mark Top Ġ+ Ġintr insic Height ĊĊĠĠĠĠĠĠĠ Ġif Ġ( dX Ġ!= Ġ 0 . 0 f ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dX Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// right Ġswipe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintr insic Height Ġ= Ġright Icon !!. get Intr insic Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Mark Top Ġ= ĠitemView . top Ġ+ Ġ(( item View . bottom Ġ- ĠitemView . top ) Ġ- Ġintr insic Height ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Mark Bottom Ġ= Ġx Mark Top Ġ+ Ġintr insic Height ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Can avas ( c , Ġright BG , ĠitemView . left Ġ+ Ġd X . toInt (), ĠitemView . top , ĠitemView . left , ĠitemView . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Text On Canvas ( c , Ġright Label , Ġ( item View . left Ġ+ Ġ 1 5 0 ). toFloat (), Ġ( x Mark Top Ġ+ Ġ 1 0 ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Icon On Can V as ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc , Ġright Icon , ĠitemView . left Ġ+ Ġright Icon !!. intrinsic Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Mark Top Ġ+ Ġ 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . left Ġ+ Ġ 2 Ġ* Ġright Icon !!. intrinsic Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Mark Bottom Ġ+ Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// left Ġswipe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintr insic Height Ġ= Ġleft Icon !!. get Intr insic Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Mark Top Ġ= ĠitemView . top Ġ+ Ġ(( item View . bottom Ġ- ĠitemView . top ) Ġ- Ġintr insic Height ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Mark Bottom Ġ= Ġx Mark Top Ġ+ Ġintr insic Height ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Can avas ( c , Ġleft BG , ĠitemView . right Ġ+ Ġd X . toInt (), ĠitemView . top , ĠitemView . right , ĠitemView . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Text On Canvas ( c , Ġleft Label , Ġ( item View . right Ġ- Ġ 1 5 0 ). toFloat (), Ġ( x Mark Top Ġ+ Ġ 1 0 ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Icon On Can V as ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc , Ġleft Icon , ĠitemView . right Ġ- Ġ 2 Ġ* Ġleft Icon !!. get Intr insic Width (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Mark Top Ġ+ Ġ 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right Ġ- Ġleft Icon !!. get Intr insic Width (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Mark Bottom Ġ+ Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . on Child Draw ( c , Ġre cyclerView , ĠviewHolder , Ġd X , Ġd Y , Ġaction State , Ġis Currently Active ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġcolor Can avas ( canvas : ĠCanvas , Ġcanvas Color : ĠInt , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ): ĠUnit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ( background Ġas ĠColor Drawable ). color Ġ= Ġcanvas Color ĊĠĠĠĠĠĠĠ Ġbackground . setBounds ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġbackground . draw ( canvas ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġdraw Text On Canvas ( canvas : ĠCanvas , Ġlabel : ĠString , Ġx : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas . draw Text ( label , Ġx , Ġy , Ġpaint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdraw Icon On Can V as ( ĊĠĠĠĠĠĠĠ Ġcanvas : ĠCanvas , Ġicon : ĠDrawable ?, Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ĊĠĠĠ Ġ): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġicon !!. setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġicon . draw ( canvas ) ĊĊĠĠĠ Ġ} Ċ Ċ }