package Ġcom . mo ony . calc . utils čĊč Ċ import Ġandroid . graphics . Rect č Ċ import Ġandroid . view . View č Ċ import Ġandroidx . annotation . Px č Ċ import Ġandroidx . recyclerview . widget . RecyclerView čĊčĊč Ċ class ĠGrid Spacing Item Decoration ( čĊĠĠĠ Ġprivate Ġval Ġcolumn Count : ĠInt , čĊĠĠĠ Ġ@ Px Ġpreferred Space : ĠInt , čĊĠĠĠ Ġprivate Ġval Ġinclude Edge : ĠBoolean č Ċ ) Ġ: ĠRecyclerView . Item Decoration () Ġ{ čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠIn Ġthis Ġalgorithm Ġspace Ġshould Ġdivide Ġby Ġ 3 Ġwithout Ġrem n ant Ġor Ġwidth Ġof Ġitems Ġcan Ġhave Ġa Ġdifference čĊĠĠĠĠ Ġ* Ġand Ġwe Ġwant Ġthem Ġto Ġbe Ġexactly Ġthe Ġsame čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġval Ġspace Ġ= čĊĠĠĠĠĠĠĠ Ġif Ġ( preferred Space Ġ% Ġ 3 Ġ== Ġ 0 ) Ġpreferred Space Ġelse Ġ( preferred Space Ġ+ Ġ( 3 Ġ- Ġpreferred Space Ġ% Ġ 3 )) čĊčĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( čĊĠĠĠĠĠĠĠ Ġout Rect : ĠRect , čĊĠĠĠĠĠĠĠ Ġview : ĠView , čĊĠĠĠĠĠĠĠ Ġparent : ĠRecyclerView , čĊĠĠĠĠĠĠĠ Ġstate : ĠRecyclerView . State čĊĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġparent . getChild Adapter Position ( view ) čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( include Edge ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ% Ġcolumn Count Ġ== Ġ 0 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġspace čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġspace Ġ/ Ġ 4 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ% Ġcolumn Count Ġ== Ġcolumn Count Ġ- Ġ 1 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġspace čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġspace Ġ/ Ġ 4 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġspace Ġ* Ġ 2 Ġ/ Ġ 3 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġspace Ġ* Ġ 2 Ġ/ Ġ 4 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ% Ġcolumn Count Ġ== Ġ 0 Ġ-> Ġout Rect . right Ġ= Ġspace Ġ* Ġ 2 Ġ/ Ġ 3 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ% Ġcolumn Count Ġ== Ġcolumn Count Ġ- Ġ 1 Ġ-> Ġout Rect . left Ġ= Ġspace Ġ* Ġ 2 Ġ/ Ġ 3 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġspace Ġ/ Ġ 3 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġspace Ġ/ Ġ 3 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊč Ċ }