package Ġcn . l vs ong . lib . demo Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcn . l vs ong . lib . library . adapter . Common Adapter Ċ import Ġcn . l vs ong . lib . library . adapter . Multi ItemType Adapter Ċ import Ġcn . l vs ong . lib . library . adapter . ViewHolder Ċ import Ġcn . l vs ong . lib . library . decorator . Linear Divider Decoration Ċ import Ġcn . l vs ong . lib . library . listener . OnClick Fast Listener Ċ import Ġcn . l vs ong . lib . library . top menu . MenuItem Ċ import Ġcn . l vs ong . lib . library . top menu . Top Menu Ċ import Ġcn . l vs ong . lib . library . utils . Density Util Ċ import Ġcn . l vs ong . lib . library . utils . Selector Factory Ċ import Ġcn . l vs ong . lib . library . utils . StatusBar Util Ċ import Ġcn . l vs ong . lib . library . view . Medium TextView Ċ import Ġcn . l vs ong . lib . ui . Base Activity Ċ import Ġkotlinx . android . synt hetic . main . activity _ status .* Ċ Ċ /** Ċ Ġ* Ġhttps :// segment fault . com / q / 1 0 1 0 0 0 0 0 1 3 7 2 9 0 3 6 Ċ Ġ* Ġå½ĵ æ²¡æľī åħ·ä½ĵ ĠPres enter ĠæĹ¶ , åı¯ä»¥ åıĤèĢĥ ä¸ĬéĿ¢ , åĨĻ æĪĲ : ĠStatus Activity Ġ: ĠBase Activity < Base Presenter < *, * >> Ċ Ġ*/ Ċ class ĠStatus Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Top Menu : ĠTop Menu ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id () Ġ= ĠR . layout . activity _ status ĊĊĊĠĠĠ Ġoverride Ġfun Ġuse Status Manager () Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġget Trans Y (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠD ensity Util . dp 2 px Rt Int ( 4 8 ) ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġget Loading View BackgroundColor () Ġ= ĠR . color . color _ 2 8 7 8 FF ĊĊĠĠĠ Ġoverride Ġfun Ġset Logic () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® çĬ¶æĢģ æłı èĥĮæĻ¯ èī² éĢı æĺİ , å¹¶ åľ¨ é¡¶ éĥ¨ æ·»åĬł ä¸Ģä¸ª padding , é«ĺåº¦ ä¸º status Bar Height ĊĠĠĠĠĠĠĠ ĠStatus Bar Util . transparent StatusBar ( this , Ġandroid . R . color . transparent , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ// Ġ æĶ¹åıĺ çĬ¶æĢģ æłı æĸĩåŃĹ é¢ľèī² ĊĠĠĠĠĠĠĠ ĠStatus Bar Util . change Status TextColor ( this , false ) ĊĊĠĠĠĠĠĠĠ Ġinit Top Menu () ĊĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ ä¸į è°ĥçĶ¨ Ġ æĺ¾ç¤º åĨħå®¹ / æĺ¾ç¤º éĶĻè¯¯ çŃī , ä¸ĢçĽ´ ä¼ļ æĺ¾ç¤º Ġloading Ċ // ĠĠĠĠĠĠĠ Ġm Status Manager ?. show Content () Ġ// Ġé»ĺè®¤ 1 2 0 0 æ¯ « ç§Ĵ å»¶ æĹ¶ , åħ¶å®ŀ ä¸ĢèĪ¬ ç½ĳç»ľ è¯·æ±Ĥ æĪĲåĬŁ å·® ä¸į å¤ļ ĊĠĠĠĠĠĠĠ Ġm Status Manager ?. delay Show Content ( 2 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġac b _ tips 1 . background Ġ= ĠSelector Factory . new Shape Selector () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDefault Bg Color ( Context Compat . getColor ( this , ĠR . color . color _ 6 6 6 6 6 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pressed Bg Color ( Context Compat . getColor ( this , ĠR . color . color _ 3 3 3 3 3 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Corner Radius ( Density Util . dp 2 px Rt Int ( 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠĠĠĠĠ Ġac b _ tips 2 . background Ġ= ĠSelector Factory . new Shape Selector () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDefault Bg Color ( Context Compat . getColor ( this , ĠR . color . color _ 6 6 6 6 6 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pressed Bg Color ( Context Compat . getColor ( this , ĠR . color . color _ 3 3 3 3 3 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Corner Radius ( Density Util . dp 2 px Rt Int ( 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠĠĠĠĠ Ġac b _ tips 3 . background Ġ= ĠSelector Factory . new Shape Selector () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDefault Bg Color ( Context Compat . getColor ( this , ĠR . color . color _ 6 6 6 6 6 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pressed Bg Color ( Context Compat . getColor ( this , ĠR . color . color _ 3 3 3 3 3 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Different Corner Radius ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD ensity Util . dp 2 px Rt Int ( 4 ), ĠD ensity Util . dp 2 px Rt Int ( 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD ensity Util . dp 2 px Rt Int ( 1 2 ), ĠD ensity Util . dp 2 px Rt Int ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġæł¹æį® éľĢè¦ģ éĩį åĨĻ ĊĠĠĠ Ġoverride Ġfun Ġget StatusBar Color () Ġ= ĠR . color . main _ theme _ color ĊĊĠĠĠ Ġoverride Ġfun Ġbind Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æ³¨æĦı , å¦Ĥæŀľ å¸ĮæľĽ Toolbar ä¸į ç»Ļ éģ ® æĮ ¡ , æľī ä»¥ä¸ĭ 2 ç§į è§£åĨ³ åĬŀ æ³ķ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 1 . Ġä½¿çĶ¨ æľ¬ åºĵ èĩª å¸¦ çļĦ ĠCustom Toolbar , ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 2 . Ġ èĩªå®ļä¹ī çļĦ Toolbar å®ŀçİ° ĠStatus Provider Ġ æİ¥åı£ ĊĠĠĠĠĠĠĠĠ Ġ* ĠPS : Ġ æĹł è®º ä¸ĬéĿ¢ åĵª ç§į æĸ¹å¼ı , éĥ½ å°Ĩ å¯¼èĩ´ æİ§ä»¶ è¢« æ·»åĬł åĪ°äºĨ ĠRoot Status Layout Ġä¸Ń , ĊĠĠĠĠĠĠĠĠ Ġ* ĠæŃ¤ æĹ¶ åľ¨ UI çķĮéĿ¢ æĺ¯ æĹłæ³ķ æŃ£å¸¸ ä½¿çĶ¨ ä¸ĬéĿ¢ å®ļä¹ī çļĦ æİ§ä»¶ , Ġåıª éľĢ ä½¿çĶ¨ Ġm Status Manager . get Custom View () ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åį³åı¯ èİ·åıĸ ĠCustom Toolbar Ġ æĪĸèĢħ Ġ èĩªå®ļä¹ī çļĦ Toolbar Ġ( éľĢ èĩª è¡Į å¼º è½¬ ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġtoolbar . set More View Listener ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOnClick Fast Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fast Click ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Top Menu . show ( v , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Loading View Layout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . status _ loading _ page ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Empty Data View Layout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . status _ empty _ page ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Net Work Error View Layout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . status _ net error _ page ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Error View Layout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . status _ error _ page ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit Top Menu () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf < MenuItem >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( R . drawable . ic _ baseline _ alarm _ add _ 2 4 , Ġ" å±ķç¤º åĬłè½½ "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( R . drawable . ic _ baseline _ assignment _ returned _ 2 4 , Ġ" å±ķç¤º ç©º è§ĨåĽ¾ "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( R . drawable . ic _ baseline _ alarm _ add _ 2 4 , Ġ" å±ķç¤º éĶĻè¯¯ "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( R . drawable . ic _ baseline _ assignment _ returned _ 2 4 , Ġ" å±ķç¤º ç½ĳç»ľ å¼Ĥå¸¸ "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( R . drawable . ic _ baseline _ alarm _ add _ 2 4 , Ġ" å±ķç¤º åĨħå®¹ ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCommon Adapter < MenuItem >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Status Manager !!. getRoot Layout (). context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ top _ menu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconvert ( holder : ĠViewHolder , Ġbean : ĠMenuItem , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . getView < AppCompat ImageView >( R . id . a iv _ icon _ left _ image ). visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . getView < Medium TextView >( R . id . tv _ text _ right _ text ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ position ]. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadapter . setOn ItemClickListener ( object Ġ: ĠMulti ItemType Adapter . On ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView , Ġholder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Top Menu . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Status Manager ?. show Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Status Manager ?. delay Show Content ( 3 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġm Status Manager ?. show Empty Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġm Status Manager ?. show Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġm Status Manager ?. show Net Work Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġm Status Manager ?. show Content () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġitem Decoration Ġ= ĠLinear Divider Decoration . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( this @ Status Activity , ĠR . color . color _ EEEE EE ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD ensity Util . dp 2 px Rt Int ( 1 ), Density Util . dp 2 px Rt Int ( 1 4 ), 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD ensity Util . dp 2 px Rt Int ( 1 4 ), 0 , RecyclerView . VERTICAL ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġm Top Menu Ġ= ĠTop Menu ( m Status Manager !!. getRoot Layout (). context , Ġadapter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setWidth ( Density Util . dp 2 px Rt Int ( 1 5 0 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Height ( Density Util . dp 2 px Rt Int ( 2 0 0 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Back Dark ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Bubble Color ( Color . DK GRAY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Padding Top ( Density Util . dp 2 px Rt Int ( 1 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä½¿ å¾Ĺ å¼¹ æ¡Ĩ åı³ ä¾§ è·Ŀç¦» å±ı å¹ķ éĹ´ éļĶ , Ġå¦Ĥæŀľ éĹ´ éļĶ å¤Ł äºĨ , ç® Ń å¤´ ä½įç½® è¿ĺ æ²¡æľī å¯¹ åĩĨ æİ§ä»¶ ä¸ŃéĹ´ , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġåı¯ä»¥ åľ¨ Bubble RecyclerView æīĢåľ¨ å¸ĥå±Ģ ä¸Ń ä½¿çĶ¨ Ġbr v _ arrow _ offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Popup X Offset (- Density Util . dp 2 px Rt Int ( 2 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä½¿ å¾Ĺ å¼¹ æ¡Ĩ ä¸Ĭä¸ĭ åģı ç§» ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Popup Y Offset (- Density Util . dp 2 px Rt Int ( 5 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setItem Decoration ( item Decoration ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĤ¹åĩ» éĩį è¯ķ åĪĻ ä¼ļ èµ° è¿ĻéĩĮ ĊĠĠĠĠ Ġ* Ġ æ³¨æĦı : Ġ Ġå¦Ĥæŀľ å¸ĥå±Ģ ç»Ļ äºĨ éĩį è¯ķ æİ§ä»¶ , åĪĻ ID å¿ħé¡» ä¸º : Ġ Ġview _ retry _ load _ data ĊĠĠĠĠ Ġ* Ġ æ³¨æĦı : Ġ Ġå¦Ĥæŀľ å¸ĥå±Ģ ç»Ļ äºĨ éĩį è¯ķ æİ§ä»¶ , åĪĻ ID å¿ħé¡» ä¸º : Ġ Ġview _ retry _ load _ data ĊĠĠĠĠ Ġ* Ġ æ³¨æĦı : Ġ Ġå¦Ĥæŀľ å¸ĥå±Ģ ç»Ļ äºĨ éĩį è¯ķ æİ§ä»¶ , åĪĻ ID å¿ħé¡» ä¸º : Ġ Ġview _ retry _ load _ data ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Retry () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Status Manager ?. show Content () ĊĠĠĠ Ġ} Ċ Ċ } Ċ