package Ġcc . sad hu . sample . ui Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcc . sad hu . sample . R Ċ import Ġcc . sad hu . sample . adapter . Simple Adapter Ċ import Ġcc . sad hu . sample . bean . Item Ċ import Ġcc . sad hu . super decoration . Super Offset Decoration Ċ import Ġcc . sad hu . super decoration . UI Utils Ċ import Ġcom . j ared rum ml er . android . color picker . Color Picker Dialog Ċ import Ġcom . j ared rum ml er . android . color picker . Color Picker Dialog Listener Ċ import Ġkotlinx . android . synt hetic . main . activity _ linear .* Ċ import Ġkotlinx . android . synt hetic . main . layout _ control .* Ċ import Ġkotlin . random . Random Ċ Ċ class ĠLinear Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġm Divider Color Ġ= ĠColor . parse Color ("# F 6 F 6 F 6 ") ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġm BackgroundColor Ġ= ĠColor . parse Color ("# D 8 1 B 6 0 ") ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ linear ) ĊĠĠĠĠĠĠĠ Ġm Check Span . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġm Btn Update . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm View Choose Divider Color . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdivider Dialog Ġ= Ġsupport FragmentManager . find Fragment By Tag (" color Dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( divider Dialog Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider Dialog Ġ= ĠColor Picker Dialog . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( m Divider Color ). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider Dialog . setColor Picker Dialog Listener ( object Ġ: ĠColor Picker Dialog Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dialog Dis missed ( dialog Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Color Selected ( dialog Id : ĠInt , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Divider Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View Choose Divider Color . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( divider Dialog Ġis ĠDialog Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider Dialog . show ( support FragmentManager , Ġ" color Dialog ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm View Choose BackgroundColor . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbackground Dialog Ġ= Ġsupport FragmentManager . find Fragment By Tag (" color Dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Dialog Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Dialog Ġ= ĠColor Picker Dialog . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( m BackgroundColor ). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Dialog . setColor Picker Dialog Listener ( object Ġ: ĠColor Picker Dialog Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dialog Dis missed ( dialog Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Color Selected ( dialog Id : ĠInt , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm BackgroundColor Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Ll Container . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View Choose BackgroundColor . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Dialog Ġis ĠDialog Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Dialog . show ( support FragmentManager , Ġ" color Dialog ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit Listener () ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Check Divider None . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Check Divider Beginning . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Check Divider Middle . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Check Divider End . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Check Divider Beginning . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Check Divider None . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Check Divider Middle . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Check Divider None . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Check Divider End . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Check Divider None . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Group . checked RadioButton Id Ġ== ĠR . id . m Btn Horizontal ) ĠRecyclerView . HORIZONTAL Ġelse ĠRecyclerView . VERTICAL , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Check Reverse . isChecked ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġm Rv Content . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġm Rv Content . removeItem Decoration At ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġshow Divide Ġ= Ġif Ġ( m Check Divider None . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSuper Offset Decoration . SHOW _ DI VIDER _ NONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtmp Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Check Divider Beginning . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġtmp . or ( Super Offset Decoration . SHOW _ DI VIDER _ BEGIN NING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Check Divider Middle . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġtmp . or ( Super Offset Decoration . SHOW _ DI VIDER _ MIDDLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Check Divider End . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġtmp . or ( Super Offset Decoration . SHOW _ DI VIDER _ END ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSuper Offset Decoration . Builder ( layout Manager , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Main Axis Space ( UI Utils . dp 2 px ( m Et Main Axis . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cross Axis Space ( UI Utils . dp 2 px ( m Et Cross Axis . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Main Axis Edge Space ( UI Utils . dp 2 px ( m Et Main Axis Edge . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cross Axis Edge Space ( UI Utils . dp 2 px ( m Et Cross Axis Edge . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Div iders ( show Divide ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show Divide Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Padding Left ( UI Utils . dp 2 px ( m Et Divide Padding Left . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Padding Right ( UI Utils . dp 2 px ( m Et Divide Padding Right . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Divider Color ( m Divider Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set BackgroundColor ( m BackgroundColor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Rv Content . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġm Rv Content . adapter ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Ġis ĠSimple Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( m Group . checked RadioButton Id Ġ== ĠR . id . m Btn Horizontal Ġ&& Ġadapter . is Horizontal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ( m Group . checked RadioButton Id Ġ== ĠR . id . m Btn Vertical Ġ&& Ġ! adapter . is Horizontal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Rv Content . adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Adapter ( adapter . list , Ġm Group . checked RadioButton Id Ġ== ĠR . id . m Btn Horizontal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Group . checked RadioButton Id Ġ== ĠR . id . m Btn Horizontal ) ĠRecyclerView . HORIZONTAL Ġelse ĠRecyclerView . VERTICAL , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Check Reverse . isChecked ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġm Rv Content . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġval Ġshow Divide Ġ= Ġif Ġ( m Check Divider None . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSuper Offset Decoration . SHOW _ DI VIDER _ NONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Check Divider Beginning . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp . or ( Super Offset Decoration . SHOW _ DI VIDER _ BEGIN NING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Check Divider Middle . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp . or ( Super Offset Decoration . SHOW _ DI VIDER _ MIDDLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Check Divider End . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp . or ( Super Offset Decoration . SHOW _ DI VIDER _ END ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSuper Offset Decoration . Builder ( layout Manager , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Main Axis Space ( UI Utils . dp 2 px ( m Et Main Axis . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cross Axis Space ( UI Utils . dp 2 px ( m Et Cross Axis . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Main Axis Edge Space ( UI Utils . dp 2 px ( m Et Main Axis Edge . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cross Axis Edge Space ( UI Utils . dp 2 px ( m Et Cross Axis Edge . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Div iders ( show Divide ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show Divide Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Padding Left ( UI Utils . dp 2 px ( m Et Divide Padding Left . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Padding Right ( UI Utils . dp 2 px ( m Et Divide Padding Right . text . toString (). toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Divider Color ( m Divider Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set BackgroundColor ( m BackgroundColor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Rv Content . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Item >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Id Ġ= ĠRandom . Default . nextInt ( 1 , Ġ 1 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġresources . getIdentifier (" tmp $ random Id ", Ġ" drawable ", Ġ" cc . sad hu . sample ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠItem ( id , Ġ" desc $ i ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Rv Content . adapter Ġ= ĠSimple Adapter ( list ) ĊĠĠĠ Ġ} Ċ }