package Ġcn . i imedia . jb . homepage Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Alpha Animation Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġcn . i imedia . jb . R Ċ import Ġcn . i imedia . jb . common . Config Ċ import Ġcn . i imedia . jb . common . Config . TOPIC _ ID Ċ import Ġcn . i imedia . jb . homepage . adapter . Topic Detail Adapter Ċ import Ġcn . i imedia . jb . http . API Constants Ċ import Ġcn . i imedia . jb . http . bean . Special Info Ċ import Ġcn . i imedia . jb . http . bean . Topic Detail Bean Ċ import Ġcom . x ion g . app base . base . Base Activity Ċ import Ġcom . x ion g . app base . custom . Linear LayoutManager Wrapper Ċ import Ġcom . x ion g . app base . extension . add Divider Ċ import Ġcom . x ion g . app base . extension . load Image Fit Ċ import Ġcom . x ion g . app base . http . Request Engine Ċ import Ġcom . x ion g . app base . utils . D Log Ċ import Ġcom . x ion g . app base . utils . EL S Ċ import Ġcom . x ion g . app base . utils . Screen Utils Ċ import Ġkotlinx . android . synt hetic . main . activity _ topic _ detail .* Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġii Media Ġon Ġ 2 0 1 8 / 6 / 1 . Ċ Ġ* Ġ ä¸ĵ é¢ĺ é¡µ Ċ Ġ*/ Ċ class ĠTopic Detail Activity Ġ: ĠBase Activity (), ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġval Ġm Activity Ġ= Ġthis ĊĠĠĠ Ġval ĠTAG Ġ= Ġ" Topic Detail Activity " ĊĠĠĠ Ġval ĠAN IM ATIONS _ DURATION Ġ= Ġ 2 0 0 L ĊĠĠĠ Ġvar Ġis Toolbar Visible Ġ= Ġfalse ĊĠĠĠ Ġvar Ġis Title Layout Visible Ġ= Ġtrue ĊĠĠĠ Ġvar Ġtoolbar Title : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġtitle Layout : ĠLinearLayout ? Ġ= Ġnull ĊĠĠĠ Ġval Ġapi : ĠAPI Constants Ġ= ĠRequest Engine . create Service ( API Constants :: class . java ) ĊĠĠĠ Ġval Ġels : ĠE LS Ġ= ĠE LS . getInstance () ĊĠĠĠ Ġvar Ġs Id Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ= ĠR . layout . activity _ topic _ detail ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġtoolbar Title Ġ= ĠfindViewById ( R . id . toolbar _ title ) ĊĠĠĠĠĠĠĠ Ġtitle Layout Ġ= ĠfindViewById ( R . id . title _ layout ) ĊĠĠĠĠĠĠĠ Ġs Id Ġ= Ġintent . extras . getInt ( TOPIC _ ID ) ĊĊĠĠĠĠĠĠĠ Ġtoolbar ?. set Navigation OnClickListener Ġ{ Ġfinish () Ġ} Ċ // ĠĠĠĠĠĠĠ Ġshare ?. setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġapp bar ?. add On Offset Changed Listener Ġ{ Ġapp Bar Layout , Ġvertical Offset Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Scroll Ġ= Ġapp Bar Layout . total Scroll Range ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= ĠMath . abs ( vertical Offset ). toFloat () Ġ/ Ġmax Scroll . toFloat () Ġ// çĻ¾ åĪĨ æ¯Ķ ä»İ 0 åĪ° 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// vertical Offset ä¸ĢçĽ´ ä¸º è´Ł åĢ¼ , æĶ¶ ç¼© æĹ¶ ä»İ 0 å¼Ģå§ĭ , åħ¶ ç»Ŀ å¯¹ åĢ¼ å¢ŀ å¤§ , å±ķ å¼Ģ æĹ¶ åħ¶ ç»Ŀ å¯¹ åĢ¼ åıĺ å°ı èĩ³ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD Log . e ( TAG , Ġ" vertical Offset :$ vertical Offset ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate On Toolbar ( progress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate On Title Layout ( progress ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® é¡¶ éĥ¨ åĽ¾çīĩ å®½ é«ĺ æ¯Ķ ĊĠĠĠĠĠĠĠ Ġval Ġimg Lp Ġ= Ġtop _ img . layout Params ĊĠĠĠĠĠĠĠ Ġimg Lp . height Ġ= ĠScreen Utils . get Screen Width () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġtop _ img . layout Params Ġ= Ġimg Lp ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® å¤´ éĥ¨ ä¿¡æģ¯ æłı åĽºå®ļ ä¸º å±ı å¹ķ çļĦ 9 / 1 0 ĊĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġtitle _ layout ?. layout Params ĊĠĠĠĠĠĠĠ Ġlp ?. width Ġ= ĠScreen Utils . get Screen Width () Ġ* Ġ 9 Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġtitle _ layout ?. layout Params Ġ= Ġlp ĊĊĠĠĠĠĠĠĠ Ġtopic _ list ?. layout Manager Ġ= ĠLinearLayoutManager Wrapper ( m Activity ) ĊĠĠĠĠĠĠĠ Ġtopic _ list ?. is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtopic _ list ?. add Divider ( m Activity , ĠR . drawable . vertical _ white _ divider _ 8 dp ) ĊĠĠĠĠĠĠĠ ĠgetData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetData () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Loading Dialog () ĊĠĠĠĠĠĠĠ Ġval Ġdetail Call Ġ= Ġapi . get Topic Detail ( els . getString Data ( EL S . IME I ), Ġels . getString Data ( EL S . IME I ), Ġs Id ) ĊĠĠĠĠĠĠĠ Ġdetail Call . enqueue ( object Ġ: ĠCallback < Topic Detail Bean > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Topic Detail Bean > ?, Ġresponse : ĠResponse < Topic Detail Bean > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbean Ġ= Ġresponse ?. body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( bean ?. code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- 1 " Ġ-> Ġshow Toast ( resources . getString ( R . string . server _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 " Ġ-> Ġshow Toast ( resources . getString ( R . string . parameter _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Top Data ( bean . special Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrank InfoList Ġ= Ġbean . rank InfoList ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rank InfoList . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic _ list ?. adapter Ġ= ĠTopic Detail Adapter ( m Activity , Ġrank InfoList ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Loading Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Topic Detail Bean > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD Log . w ( Config . HTTP _ LOG _ TAG , Ġ" ä¸ĵ é¢ĺ è¯¦æĥħ æķ°æį® èİ·åıĸ å¤±è´¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Loading Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Top Data ( special Info : ĠSpecial Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® åĪĹè¡¨ ä»¥ å¤ĸ çļĦ åħ¶ä»ĸ æķ°æį® ĊĠĠĠĠĠĠĠ Ġtop _ img ?. load Image Fit ( special Info . img ) ĊĠĠĠĠĠĠĠ Ġtoolbar _ title ?. text Ġ= Ġspecial Info . title ĊĠĠĠĠĠĠĠ Ġtopic _ name ?. text Ġ= Ġspecial Info . title ĊĠĠĠĠĠĠĠ Ġtopic _ content ?. text Ġ= Ġspecial Info . s desc ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġspecial Info . color One ĊĠĠĠĠĠĠĠ Ġif Ġ( color Ġ!= Ġnull Ġ&& Ġ! TextUtils . isEmpty ( color . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle _ layout . set BackgroundColor ( Color . parse Color ( color . toString (). replace ("# ", Ġ"# CC "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol lap sing . setContent S cri m Color ( Color . parse Color ( color . toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread { ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . share Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSocial Share Activity . intent To ( m Activity ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate On Toolbar ( progress : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// å¤ĦçĲĨ Toolbar æ»ĳ åĬ¨ çļĦ æĺ¾ç¤º ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ< Ġ 0 . 9 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Toolbar Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alpha Animation ( toolbar Title Ġas ĠView , ĠView . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Toolbar Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Toolbar Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alpha Animation ( toolbar Title Ġas ĠView , ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Toolbar Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate On Title Layout ( progress : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// å¤ĦçĲĨ æłĩé¢ĺ Layout æ»ĳ åĬ¨ çļĦ æĺ¾ç¤º ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ>= Ġ 0 . 3 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Title Layout Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alpha Animation ( title Layout Ġas ĠView , ĠView . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Title Layout Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Title Layout Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alpha Animation ( title Layout Ġas ĠView , ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Title Layout Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Alpha Animation ( v : ĠView , Ġvisibility : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// éĢı æĺİ åº¦ åıĺåĮĸ åĬ¨çĶ» , visibility åıĤæķ° è¡¨ç¤º ç»ĵæĿŁ çĬ¶æĢģ ĊĠĠĠĠĠĠĠ Ġval Ġalpha Animation Ġ= Ġif Ġ( visibility Ġ== ĠView . VISIBLE ) ĠAlpha Animation ( 0 f , Ġ 1 f ) Ġelse ĠAlpha Animation ( 1 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġalpha Animation . duration Ġ= ĠAN IM ATIONS _ DURATION ĊĠĠĠĠĠĠĠ Ġalpha Animation . fill After Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġv . start Animation ( alpha Animation ) ĊĠĠĠ Ġ} Ċ }