package Ġcom . lo dz . android . pand ora . widget . rv . decoration Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . text . Text Paint Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Float Range Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . lo dz . android . core kt . ank o . dp 2 px Ċ import Ġcom . lo dz . android . core kt . ank o . getColor Compat Ċ import Ġcom . lo dz . android . core kt . ank o . sp 2 px Ċ Ċ /** Ċ Ġ* ĠåĪĨ ç»Ħ æłĩçŃ¾ åŁº ç±» Ċ Ġ* ĠCreated Ġby Ġz hou L Ġon Ġ 2 0 1 8 / 1 1 / 2 2 . Ċ Ġ*/ Ċ open Ġclass ĠBase Section Item Decoration ( context : ĠContext ) Ġ: ĠBase Item Decoration ( context ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** Ġé»ĺè®¤ æĸĩåŃĹ å¤§å°ı Ġ*/ ĊĠĠĠĠĠĠĠ Ġprotected Ġconst Ġval ĠDEFAULT _ TEXT _ SIZE _ SP Ġ= Ġ 2 0 f ĊĠĠĠĠĠĠĠ Ġ/** Ġé»ĺè®¤ åĪĨ ç»Ħ é«ĺåº¦ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprotected Ġconst Ġval ĠDEFAULT _ SECTION _ HEIGHT _ DP Ġ= Ġ 3 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ æĸĩåŃĹ çĶ» ç¬Ķ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm P dr Text Paint : ĠText Paint ĊĠĠĠ Ġ/** Ġ èĥĮæĻ¯ çĶ» ç¬Ķ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm P dr Bg Paint : ĠPaint Ġ= ĠPaint () ĊĠĠĠ Ġ/** ĠåĪĨ ç»Ħ é«ĺåº¦ Ġ*/ ĊĠĠĠ Ġprotected Ġvar Ġm P dr Section Height Px Ġ= Ġ 0 ĊĠĠĠ Ġ/** Ġ æĸĩåŃĹ å·¦ ä¾§ éĹ´ è·Ŀ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm P dr Text Padding Left Dp Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Bg Paint . color Ġ= ĠColor . GRAY ĊĊĠĠĠĠĠĠĠ Ġm P dr Text Paint Ġ= ĠText Paint () ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . type face Ġ= ĠType face . DEFAULT _ BOLD ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . is D ither Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . text Size Ġ= ĠgetContext (). sp 2 px ( DEFAULT _ TEXT _ SIZE _ SP ) ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . textAlign Ġ= ĠPaint . Align . LEFT ĊĊĠĠĠĠĠĠĠ Ġm P dr Section Height Px Ġ= ĠgetContext (). dp 2 px ( DEFAULT _ SECTION _ HEIGHT _ DP ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® åĪĨ ç»Ħ çļĦ é«ĺåº¦ [ height ] ï¼Ī åįķä½į dp ï¼ī Ġ*/ ĊĠĠĠ Ġfun Ġset Section Height ( height : ĠInt ): ĠBase Section Item Decoration Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Section Height Px Ġ= ĠgetContext (). dp 2 px ( height ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® æĸĩåŃĹ å·¦ ä¾§ éĹ´ è·Ŀ [ padding Left ] ï¼Ī åįķä½į dp ï¼ī Ġ*/ ĊĠĠĠ Ġfun Ġset Section Text Padding Left Dp ( padding Left : ĠInt ): ĠBase Section Item Decoration Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Text Padding Left Dp Ġ= ĠgetContext (). dp 2 px ( padding Left ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® æĸĩåŃĹ çļĦ å¤§å°ı [ text Size ] ï¼Ī åįķä½į sp ï¼ī Ġ*/ ĊĠĠĠ Ġfun Ġset Section Text Size (@ Float Range ( from Ġ= Ġ 1 . 0 ) Ġtext Size : ĠFloat ): ĠBase Section Item Decoration Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . text Size Ġ= ĠgetContext (). sp 2 px ( if Ġ( text Size Ġ<= Ġ 0 ) ĠDEFAULT _ TEXT _ SIZE _ SP Ġelse Ġtext Size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® æĸĩåŃĹ çļĦ åŃĹ ä½ĵ æł·å¼ı [ type face ] ï¼Ī ä¾ĭå¦Ĥ ï¼ļ Type face . DEFAULT ãĢģ Type face . DEFAULT _ BOLD çŃī çŃī ï¼ī Ġ*/ ĊĠĠĠ Ġfun Ġset Section Text Type face ( type face : ĠType face ): ĠBase Section Item Decoration Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . type face Ġ= Ġtype face ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® åĪĨ ç»Ħ æĸĩåŃĹ é¢ľèī² [ color ] Ġ*/ ĊĠĠĠ Ġfun Ġset Section TextColor Res (@ Color Res Ġcolor : ĠInt ): ĠBase Section Item Decoration Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . color Ġ= ĠgetContext (). getColor Compat ( color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® åĪĨ ç»Ħ æĸĩåŃĹ é¢ľèī² [ color ] Ġ*/ ĊĠĠĠ Ġfun Ġset Section TextColor Int (@ Color Int Ġcolor : ĠInt ): ĠBase Section Item Decoration Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Text Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® åĪĨ ç»Ħ èĥĮæĻ¯ é¢ľèī² [ color ] Ġ*/ ĊĠĠĠ Ġfun Ġset Section Bg Color Res (@ Color Res Ġcolor : ĠInt ): ĠBase Section Item Decoration Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Bg Paint . color Ġ= ĠgetContext (). getColor Compat ( color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġè®¾ç½® åĪĨ ç»Ħ èĥĮæĻ¯ é¢ľèī² [ color ] Ġ*/ ĊĠĠĠ Ġfun Ġset Section Bg Color Int (@ Color Int Ġcolor : ĠInt ): ĠBase Section Item Decoration Ġ{ ĊĠĠĠĠĠĠĠ Ġm P dr Bg Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ çĶ» èĥĮæĻ¯ ï¼Į çĶ» å¸ĥ [ canvas ] ï¼Į å·¦ ä¾§ åĿĲæłĩ [ left ] ï¼Į é¡¶ éĥ¨ åĿĲæłĩ [ top ] ï¼Į åı³ ä¾§ åĿĲæłĩ [ right ] ï¼Į åºķ éĥ¨ åĿĲæłĩ [ bottom ] Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġdraw Bg Paint ( canvas : ĠCanvas , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( check Value ( left ). toFloat (), Ġcheck Value ( top ). toFloat (), Ġcheck Value ( right ). toFloat (), Ġcheck Value ( bottom ). toFloat (), Ġm P dr Bg Paint )// ç»ĺ åĪ¶ èĥĮæĻ¯ èī² ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ çĶ» æĸĩåŃĹ ï¼Į çĶ» å¸ĥ [ canvas ] ï¼Į æĸĩåŃĹ [ text ] ï¼Į å·¦ ä¾§ åĿĲæłĩ [ left ] ï¼Į é¡¶ éĥ¨ åĿĲæłĩ [ top ] ï¼Į åı³ ä¾§ åĿĲæłĩ [ right ] ï¼Į åºķ éĥ¨ åĿĲæłĩ [ bottom ] Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġdraw Text Paint ( canvas : ĠCanvas , Ġtext : ĠString , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfont Metrics Ġ= Ġm P dr Text Paint . font Metrics ĊĠĠĠĠĠĠĠ Ġval Ġbaseline Ġ= Ġ( bottom Ġ+ Ġtop Ġ- Ġfont Metrics . bottom Ġ- Ġfont Metrics . top ) Ġ/ Ġ 2 // æĸĩåŃĹ å±ħ ä¸Ń åŁº çº¿ ĊĠĠĠĠĠĠĠ Ġcanvas . draw Text ( text , Ġcheck Value (( left Ġ+ Ġm P dr Text Padding Left Dp ). toFloat ()), Ġcheck Value ( baseline ), Ġm P dr Text Paint )// ç»ĺ åĪ¶ æĸĩæľ¬ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġæĺ¯åĲ¦ æĺ¯ åŀ Ĥ çĽ´ åĪĹè¡¨ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġis Ver LinearLayout ( parent : ĠRecyclerView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= Ġparent . layout Manager Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( layout Manager Ġis ĠGrid LayoutManager ) Ġ{// Grid LayoutManager ç»§æī¿ Linear LayoutManager éľĢè¦ģ åħĪ åĪ¤æĸŃ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( layout Manager Ġis ĠLinearLayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlayout Manager . orientation Ġ== ĠRecyclerView . VERTICAL ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }