package Ġcom . d 4 vid i . vp 2 rv . core Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . support . annotation . Px Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . View Ċ Ċ /** Ċ Ġ* ĠA Ġ[ RecyclerView Ġdecorator ][ RecyclerView . Item Decoration ] Ġwhich , Ġif Ġapplied Ġover Ġa Ġre cycler Ġview Ċ Ġ* Ġwith Ġa Ġ[ Pager Snap Helper ][ android . support . v 7 . widget . Pager Snap Helper ] Ġset Ġup Ġ( i . e . Ġthat Ġbehaves Ġlike Ċ Ġ* Ġa Ġfull - screen Ġ[ ViewPager ][ android . support . v 4 . view . ViewPager ]), Ġallows Ġfor Ġeasily Ġsetting Ġup Ġg aps Ċ Ġ* Ġbetween Ġthe ĠR V 's Ġitems Ġas Ġtypically Ġdone Ġin Ġa Ġcards Ġcarousel , Ġall - the - while Ġkeeping Ġthe Ġitems Ċ Ġ* Ġproperly Ġsn apped Ġto Ġthe Ġscreen 's Ġcenter . Ċ Ġ* Ċ Ġ* Ġ** Typ ical Ġusage :** Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* Ġ// ĠGet Ġeach Ġitem Ġto Ġtake Ġexactly Ġ 8 0 % Ġof Ġthe Ġscreen 's Ġwidth . Ċ Ġ* Ġ// ĠIn Ġaddition , Ġenable Ġa Ġs ne ak - preview Ġof Ġneighbour ing Ġ( un sn apped ) Ġitems Ġof Ġ 1 % Ġof Ġtheir Ġwidth . Ċ Ġ* Ġval Ġcard Width Pixels Ġ= Ġactivity . resources . display Metrics . width Pixels Ġ* Ġ 0 . 8 0 f Ċ Ġ* Ġre cyclerView . addItem Decoration ( R VP ager Snap F ancy Decorator ( activity , Ġcard Width Pixels , Ġ 0 . 0 1 f )) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ open Ġclass ĠR VP ager Snap F ancy Decorator Ġ: ĠRecyclerView . Item Decoration Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Inter Items Gap : ĠInt ĊĠĠĠ Ġprivate Ġval Ġm Net One Side d Gap : ĠInt ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġ@ Px Ġitem Width : ĠInt , Ġitem Peek ing Percent : ĠFloat Ġ= Ġ. 0 3 5 f ) ĊĠĠĠĠĠĠĠ Ġ: Ġthis ( context . resources . display Metrics . width Pixels , Ġitem Width , Ġitem Peek ing Percent ) ĊĊĠĠĠ Ġconstructor (@ Px Ġtotal Width : ĠInt , Ġ@ Px Ġitem Width : ĠInt , Ġitem Peek ing Percent : ĠFloat Ġ= Ġ. 0 3 5 f ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcard Peek ing Width Ġ= Ġ( item Width Ġ* Ġitem Peek ing Percent Ġ+ Ġ. 5 f ). toInt () ĊĊĠĠĠĠĠĠĠ Ġm Inter Items Gap Ġ= Ġ( total Width Ġ- Ġitem Width ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Net One Side d Gap Ġ= Ġm Inter Items Gap Ġ/ Ġ 2 Ġ- Ġcard Peek ing Width ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect ?, Ġview : ĠView ?, Ġre cyclerView : ĠRecyclerView ?, Ġstate : ĠRecyclerView . State ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġre cyclerView !!. getChild Adapter Position ( view ) ĊĠĠĠĠĠĠĠ Ġval Ġis First Item Ġ= Ġis First Item ( index ) ĊĠĠĠĠĠĠĠ Ġval Ġis Last Item Ġ= Ġis Last Item ( index , Ġre cyclerView ) ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Inset Ġ= Ġif Ġ( is First Item ) Ġm Inter Items Gap Ġelse Ġm Net One Side d Gap ĊĠĠĠĠĠĠĠ Ġval Ġright Inset Ġ= Ġif Ġ( is Last Item ) Ġm Inter Items Gap Ġelse Ġm Net One Side d Gap ĊĊĠĠĠĠĠĠĠ Ġout Rect !!. set ( left Inset , Ġ 0 , Ġright Inset , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis First Item ( index : ĠInt ) Ġ= Ġindex Ġ== Ġ 0 ĊĠĠĠ Ġprivate Ġfun Ġis Last Item ( index : ĠInt , Ġre cyclerView : ĠRecyclerView ) Ġ= Ġindex Ġ== Ġre cyclerView . adapter . item Count Ġ- Ġ 1 Ċ } Ċ