package Ġcom . jen son . core . widget . re cyclerView Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . RecyclerView . Item Decoration Ċ Ċ /** Ċ Ġ* Ġauthor : ĠCD J en son Ċ Ġ* Ġdate : Ġ 2 0 2 0 / 6 / 1 9 Ġ 1 7 : 0 0 Ċ Ġ* Ġversion : Ġ 1 . 0 Ċ Ġ* Ġdescription : ĠOne - sentence Ġdescription Ċ Ġ*/ Ċ class ĠSpace Item Decoration Ġprivate Ġconstructor ( private Ġval Ġm Orientation : ĠInt , Ġcolor : ĠInt , Ġdivider Width : ĠInt , Ġfirst Line Visible : ĠBoolean ) Ġ: ĊĠĠĠ ĠItem Decoration () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Divider Width Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġm Paint : ĠPaint ĊĠĠĠ Ġprivate Ġvar Ġm First Line Visible Ġ= Ġfalse Ġ// æĺ¯åĲ¦ ç»ĺ åĪ¶ ç¬¬ä¸Ģä¸ª item çļĦ åĪĨ åī² çº¿ ĊĠĠĠ Ġoverride Ġfun Ġon Draw ( c : ĠCanvas , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( m Orientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ORIZONTAL _ DIV Ġ-> Ġdraw Horizontal ( c , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV ERT ICAL _ DIV Ġ-> Ġdraw Vertical ( c , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGR ID _ DIV Ġ-> Ġdraw Grid ( c , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdraw Vertical ( c , Ġparent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect , Ġview : ĠView , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Position Ġ= Ġparent . getChild Adapter Position ( view ) ĊĠĠĠĠĠĠĠ Ġval Ġm Adapter Ġ= Ġparent . adapter ĊĠĠĠĠĠĠĠ Ġif Ġ( m Adapter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Child Count Ġ= Ġm Adapter . item Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( m Orientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ORIZONTAL _ DIV Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m First Line Visible Ġ&& Ġitem Position Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect [ m Divider Width , Ġ 0 , Ġ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV ERT ICAL _ DIV Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m First Line Visible Ġ&& Ġitem Position Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect [ 0 , Ġm Divider Width , Ġ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGR ID _ DIV Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ è¡¨ æł¼ æł¼ å±Ģ åĪĨ åī² çº¿ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ 1 ï¼ļ å½ĵ æĺ¯ ç¬¬ä¸Ģä¸ª Item çļĦæĹ¶åĢĻ ï¼Į åĽĽ åĳ¨ åħ¨éĥ¨ éľĢè¦ģ åĪĨ åī² çº¿ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ 2 ï¼ļ å½ĵ æĺ¯ ç¬¬ä¸Ģ è¡Į Item çļĦæĹ¶åĢĻ ï¼Į éľĢè¦ģ é¢Ŀ å¤ĸ æ·»åĬł é¡¶ éĥ¨ çļĦ åĪĨ åī² çº¿ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ 3 ï¼ļ å½ĵ æĺ¯ ç¬¬ä¸Ģ åĪĹ Item çļĦæĹ¶åĢĻ ï¼Į éľĢè¦ģ é¢Ŀ å¤ĸ æ·»åĬł å·¦ ä¾§ çļĦ åĪĨ åī² çº¿ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ 4 ï¼ļ é»ĺè®¤ æĥħåĨµ åħ¨éĥ¨ æ·»åĬł åºķ éĥ¨ åĴĮ åı³ ä¾§ çļĦ åĪĨ åī² çº¿ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm LayoutManager Ġ= Ġparent . layout Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m LayoutManager Ġis ĠGrid LayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Span Count Ġ= Ġm LayoutManager . span Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Position Ġ== Ġ 0 ) Ġ{ Ġ// 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect [ m Divider Width , Ġm Divider Width , Ġm Divider Width ] Ġ= Ġm Divider Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( item Position Ġ+ Ġ 1 Ġ<= Ġm Span Count ) Ġ{ Ġ// 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect [ 0 , Ġm Divider Width , Ġm Divider Width ] Ġ= Ġm Divider Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( item Position Ġ+ Ġm Span Count ) Ġ% Ġm Span Count Ġ== Ġ 0 ) Ġ{ Ġ// 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect [ m Divider Width , Ġ 0 , Ġm Divider Width ] Ġ= Ġm Divider Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect [ 0 , Ġ 0 , Ġm Divider Width ] Ġ= Ġm Divider Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// çº µ åĲĳ å¸ĥå±Ģ åĪĨ åī² çº¿ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Position Ġ!= Ġm Child Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect [ 0 , Ġ 0 , Ġ 0 ] Ġ= Ġm Divider Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ æ¨ ª åĲĳ åĪĹè¡¨ åĪĨ åī² çº¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġc ĠĠĠĠĠ Ġ ç»ĺ åĪ¶ å®¹åĻ¨ ĊĠĠĠĠ Ġ* Ġ@ param Ġparent ĠRecyclerView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Horizontal ( c : ĠCanvas , Ġparent : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Child Count Ġ= Ġparent . child Count ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Child Ġ= Ġparent . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Left ( c , Ġm Child , Ġparent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ çº µ åĲĳ åĪĹè¡¨ åĪĨ åī² çº¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġc ĠĠĠĠĠ Ġ ç»ĺ åĪ¶ å®¹åĻ¨ ĊĠĠĠĠ Ġ* Ġ@ param Ġparent ĠRecyclerView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Vertical ( c : ĠCanvas , Ġparent : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Child Count Ġ= Ġparent . child Count ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Child Ġ= Ġparent . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Top ( c , Ġm Child , Ġparent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ è¡¨ æł¼ ç±»åŀĭ åĪĨ åī² çº¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġc ĠĠĠĠĠ Ġ ç»ĺ åĪ¶ å®¹åĻ¨ ĊĠĠĠĠ Ġ* Ġ@ param Ġparent ĠRecyclerView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Grid ( c : ĠCanvas , Ġparent : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Child Count Ġ= Ġparent . child Count ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Child Ġ= Ġparent . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm LayoutManager Ġ= Ġparent . layout Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m LayoutManager Ġis ĠGrid LayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Span Count Ġ= Ġm LayoutManager . span Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Top ( c , Ġm Child , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Left ( c , Ġm Child , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ+ Ġ 1 Ġ<= Ġm Span Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Top ( c , Ġm Child , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( i Ġ+ Ġm Span Count ) Ġ% Ġm Span Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Left ( c , Ġm Child , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Right ( c , Ġm Child , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Bottom ( c , Ġm Child , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ åı³ è¾¹ åĪĨ åī² çº¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġc ĠĠĠĠĠĠĠĠĠĠĠ Ġ ç»ĺ åĪ¶ å®¹åĻ¨ ĊĠĠĠĠ Ġ* Ġ@ param Ġm Child ĠĠĠĠĠĠ Ġ å¯¹åºĶ Item View ĊĠĠĠĠ Ġ* Ġ@ param Ġre cyclerView ĠRecyclerView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Left ( c : ĠCanvas , Ġm Child : ĠView , Ġre cyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Child LayoutParams Ġ= Ġm Child . layout Params Ġas ĠRecyclerView . LayoutParams ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġm Child . left Ġ- Ġm Divider Width Ġ- Ġm Child LayoutParams . left Margin ĊĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġm Child . top Ġ- Ġm Child LayoutParams . top Margin ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġm Child . left Ġ- Ġm Child LayoutParams . left Margin ĊĠĠĠĠĠĠĠ Ġval Ġbottom : ĠInt ĊĠĠĠĠĠĠĠ Ġbottom Ġ= Ġif Ġ( is Grid LayoutManager ( re cyclerView )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child . bottom Ġ+ Ġm Child LayoutParams . bottom Margin Ġ+ Ġm Divider Width ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child . bottom Ġ+ Ġm Child LayoutParams . bottom Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġc . draw Rect ( left . toFloat (), Ġtop . toFloat (), Ġright . toFloat (), Ġbottom . toFloat (), Ġm Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ é¡¶ éĥ¨åĪĨ åī² çº¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġc ĠĠĠĠĠĠĠĠĠĠĠ Ġ ç»ĺ åĪ¶ å®¹åĻ¨ ĊĠĠĠĠ Ġ* Ġ@ param Ġm Child ĠĠĠĠĠĠ Ġ å¯¹åºĶ Item View ĊĠĠĠĠ Ġ* Ġ@ param Ġre cyclerView ĠRecyclerView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Top ( c : ĠCanvas , Ġm Child : ĠView , Ġre cyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Child LayoutParams Ġ= Ġm Child . layout Params Ġas ĠRecyclerView . LayoutParams ĊĠĠĠĠĠĠĠ Ġval Ġleft : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġm Child . top Ġ- Ġm Child LayoutParams . top Margin Ġ- Ġm Divider Width ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġm Child . right Ġ+ Ġm Child LayoutParams . right Margin ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġm Child . top Ġ- Ġm Child LayoutParams . top Margin ĊĠĠĠĠĠĠĠ Ġleft Ġ= Ġif Ġ( is Grid LayoutManager ( re cyclerView )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child . left Ġ- Ġm Child LayoutParams . left Margin Ġ- Ġm Divider Width ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child . left Ġ- Ġm Child LayoutParams . left Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġc . draw Rect ( left . toFloat (), Ġtop . toFloat (), Ġright . toFloat (), Ġbottom . toFloat (), Ġm Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ åı³ è¾¹ åĪĨ åī² çº¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġc ĠĠĠĠĠĠĠĠĠĠĠ Ġ ç»ĺ åĪ¶ å®¹åĻ¨ ĊĠĠĠĠ Ġ* Ġ@ param Ġm Child ĠĠĠĠĠĠ Ġ å¯¹åºĶ Item View ĊĠĠĠĠ Ġ* Ġ@ param Ġre cyclerView ĠRecyclerView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Right ( c : ĠCanvas , Ġm Child : ĠView , Ġre cyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Child LayoutParams Ġ= Ġm Child . layout Params Ġas ĠRecyclerView . LayoutParams ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġm Child . right Ġ+ Ġm Child LayoutParams . right Margin ĊĠĠĠĠĠĠĠ Ġval Ġtop : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġleft Ġ+ Ġm Divider Width ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġm Child . bottom Ġ+ Ġm Child LayoutParams . bottom Margin ĊĠĠĠĠĠĠĠ Ġtop Ġ= Ġif Ġ( is Grid LayoutManager ( re cyclerView )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child . top Ġ- Ġm Child LayoutParams . top Margin Ġ- Ġm Divider Width ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child . top Ġ- Ġm Child LayoutParams . top Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġc . draw Rect ( left . toFloat (), Ġtop . toFloat (), Ġright . toFloat (), Ġbottom . toFloat (), Ġm Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ åºķ éĥ¨åĪĨ åī² çº¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġc ĠĠĠĠĠĠĠĠĠĠĠ Ġ ç»ĺ åĪ¶ å®¹åĻ¨ ĊĠĠĠĠ Ġ* Ġ@ param Ġm Child ĠĠĠĠĠĠ Ġ å¯¹åºĶ Item View ĊĠĠĠĠ Ġ* Ġ@ param Ġre cyclerView ĠRecyclerView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Bottom ( c : ĠCanvas , Ġm Child : ĠView , Ġre cyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Child LayoutParams Ġ= Ġm Child . layout Params Ġas ĠRecyclerView . LayoutParams ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġm Child . left Ġ- Ġm Child LayoutParams . left Margin ĊĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġm Child . bottom Ġ+ Ġm Child LayoutParams . bottom Margin ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġtop Ġ+ Ġm Divider Width ĊĠĠĠĠĠĠĠ Ġval Ġright : ĠInt ĊĠĠĠĠĠĠĠ Ġright Ġ= Ġif Ġ( is Grid LayoutManager ( re cyclerView )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child . right Ġ+ Ġm Child LayoutParams . right Margin Ġ+ Ġm Divider Width ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child . right Ġ+ Ġm Child LayoutParams . right Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġc . draw Rect ( left . toFloat (), Ġtop . toFloat (), Ġright . toFloat (), Ġbottom . toFloat (), Ġm Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ RecyclerView æīĢ åĬłè½½ LayoutManager æĺ¯åĲ¦ ä¸º Grid LayoutManager ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġre cyclerView ĠRecyclerView ĊĠĠĠĠ Ġ* Ġ@ return Ġæĺ¯ Grid LayoutManager è¿ĶåĽŀ true ï¼Į åĲ¦åĪĻ è¿ĶåĽŀ false ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Grid LayoutManager ( re cyclerView : ĠRecyclerView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm LayoutManager Ġ= Ġre cyclerView . layout Manager ĊĠĠĠĠĠĠĠ Ġreturn Ġm LayoutManager Ġis ĠGrid LayoutManager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBu iler Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġorientation Ġ= ĠV ERT ICAL _ DIV ĊĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġvar Ġfirst Line Visible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Orientation ( orientation : ĠInt ): ĠBu iler Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire (!( orientation Ġ!= ĠH ORIZONTAL _ DIV Ġ&& Ġorientation Ġ!= ĠV ERT ICAL _ DIV Ġ&& Ġorientation Ġ!= ĠGR ID _ DIV )) Ġ{ Ġ" Item Decoration Power ful ï¼ļ åĪĨ åī² çº¿ ç±»åŀĭ è®¾ç½® å¼Ĥå¸¸ " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . orientation Ġ= Ġorientation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Color ( color : ĠInt ): ĠBu iler Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Size ( size : ĠInt ): ĠBu iler Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset First Line Visible ( first Line Visible : ĠBoolean ): ĠBu iler Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . first Line Visible Ġ= Ġfirst Line Visible ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate (): ĠSpace Item Decoration Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSpace Item Decoration ( orientation , Ġcolor , Ġsize , Ġfirst Line Visible ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠV ERT ICAL _ DIV Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH ORIZONTAL _ DIV Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠGR ID _ DIV Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Divider Width Ġ= Ġdivider Width ĊĠĠĠĠĠĠĠ Ġm Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġm Paint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġm First Line Visible Ġ= Ġfirst Line Visible ĊĠĠĠ Ġ} Ċ }