package Ġcom . example . ants _ todo . presentation . to Do . adapter Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . ants _ todo . R ĊĊ Ċ class ĠTo Do Swipe Callback ( private Ġval Ġtodo Adapter : ĠTo Do Adapter ) Ġ: ĠItem Touch Helper . Callback () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Movement Flags ( view : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġswipe Flags Ġ= ĠItem Touch Helper . LEFT ĊĠĠĠĠĠĠĠ Ġval Ġdrag Flags Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Movement Flags ( drag Flags , Ġswipe Flags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Long Press Drag Enabled (): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġis Item View Swipe Enabled (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( view : ĠRecyclerView , Ġv Holder : ĠRecyclerView . ViewHolder , Ġtarget : ĠRecyclerView . ViewHolder ): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtodo Adapter . delete Item ( view Holder . adapter Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Child Draw ( c , Ġre cyclerView , ĠviewHolder , Ġd X , Ġd Y , Ġaction State , Ġis Currently Active ) ĊĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠviewHolder . item View ĊĠĠĠĠĠĠĠ Ġval Ġbackground Corner Offset Ġ= Ġ 2 0 ĠĠĠĠ Ġ// Ġbackground Ġis Ġbehind Ġthe Ġrounded Ġcorners Ġof ĠitemView ĊĊĠĠĠĠĠĠĠ Ġval Ġicon Delete Ġ= ĠContext Compat . get Drawable ( item View . context , ĠR . drawable . ic _ delete _ white _ 3 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbg Red Ġ= ĠColor Drawable ( Context Compat . getColor ( item View . context , ĠR . color . color _ red _ 7 0 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġicon Margin Ġ= Ġ( item View . height Ġ- Ġ( icon Delete ?. intrinsic Height Ġ?: Ġ 0 )) Ġ/ Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġicon Top Ġ= ĠitemView . top Ġ+ Ġ( item View . height Ġ- Ġ( icon Delete ?. intrinsic Height Ġ?: Ġ 0 )) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġicon Bottom Ġ= Ġicon Top Ġ+ Ġ( icon Delete ?. intrinsic Height Ġ?: Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbackground : ĠColor Drawable ĊĠĠĠĠĠĠĠ Ġbackground Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( dX Ġ< Ġ 0 ) Ġ-> Ġ{ ĠĠ Ġ// Ġdelete Ġswipe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Left Ġ= ĠitemView . right Ġ- Ġicon Margin Ġ- Ġ( icon Delete ?. intrinsic Height Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Right Ġ= ĠitemView . right Ġ- Ġicon Margin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Delete ?. setBounds ( icon Left , Ġicon Top , Ġicon Right , Ġicon Bottom ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbg Red . setBounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right Ġ+ Ġd X . toInt () Ġ- Ġbackground Corner Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbg Red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbg Red . setBounds ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbg Red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbackground . draw ( c ) ĊĠĠĠĠĠĠĠ Ġicon Delete ?. draw ( c ) ĊĠĠĠ Ġ} Ċ }