package Ġjp . cor dea . ker bero sp layer Ċ Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . util . Size Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . google . android . ex op layer 2 . util . Util Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠY oshi hi ro ĠT an aka Ġon Ġ 2 0 1 6 / 1 2 / 2 0 . Ċ Ġ*/ Ċ class ĠMain Presenter ( private Ġval Ġactivity : ĠMainActivity ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAnimation Duration : ĠLong Ġ= Ġ 3 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠState Ġ{ ĊĠĠĠĠĠĠĠ ĠEXP AND , ĊĠĠĠĠĠĠĠ ĠCOL LAP SE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Status Ġ= ĠState . COLL AP SE ĊĊĠĠĠ Ġfun Ġuser Agent (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUtil . getUser Agent ( activity , Ġactivity . resources . getString ( R . string . app _ name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexpand ( player 1 : ĠView , Ġplayer 2 : ĠView , Ġbase Width : ĠInt , Ġbase Height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Status Ġ== ĠState . EXPAND ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠState . EXPAND ĊĠĠĠĠĠĠĠ Ġval Ġanim ator 1 Ġ= Ġexpand Animator ( player 1 , Ġbase Height ) ĊĠĠĠĠĠĠĠ Ġval Ġanim ator 2 Ġ= Ġexpand Animator ( player 2 , Ġbase Height ) ĊĠĠĠĠĠĠĠ Ġval Ġmove Animator 1 Ġ= Ġexpand Move Animator ( player 1 , Ġbase Width , Ġbase Height ) ĊĠĠĠĠĠĠĠ Ġval Ġmove Animator 2 Ġ= Ġexpand Move Animator ( player 2 , Ġbase Width , Ġbase Height , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġalpha Animator Ġ= Ġalpha Animator ( player 2 , Ġ 1 f , Ġ 0 . 5 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġanim ator Set Ġ= ĠAn imator Set () ĊĠĠĠĠĠĠĠ Ġanim ator Set . play ( anim ator 1 ). with ( anim ator 2 ). with ( move Animator 1 ). with ( move Animator 2 ). with ( alpha Animator ) ĊĠĠĠĠĠĠĠ Ġanim ator Set . duration Ġ= ĠAnimation Duration ĊĠĠĠĠĠĠĠ Ġanim ator Set . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcollapse ( player 1 : ĠView , Ġplayer 2 : ĠView , Ġbase Width : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Status Ġ== ĠState . COLL AP SE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠState . COLL AP SE ĊĠĠĠĠĠĠĠ Ġval Ġanim ator 1 Ġ= Ġcollapse Animator ( player 1 , Ġbase Width ) ĊĠĠĠĠĠĠĠ Ġval Ġanim ator 2 Ġ= Ġcollapse Animator ( player 2 , Ġbase Width ) ĊĠĠĠĠĠĠĠ Ġval Ġmove Animator 1 Ġ= Ġcollapse Move Animator ( player 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġmove Animator 2 Ġ= Ġcollapse Move Animator ( player 2 , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġalpha Animator Ġ= Ġalpha Animator ( player 2 , Ġ 0 . 5 f , Ġ 1 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġanim ator Set Ġ= ĠAn imator Set () ĊĠĠĠĠĠĠĠ Ġanim ator Set . play ( anim ator 1 ). with ( anim ator 2 ). with ( move Animator 1 ). with ( move Animator 2 ). with ( alpha Animator ) ĊĠĠĠĠĠĠĠ Ġanim ator Set . duration Ġ= ĠAnimation Duration ĊĠĠĠĠĠĠĠ Ġanim ator Set . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexpand Animator ( view : ĠView , Ġbase Height : ĠInt ): ĠValue Animator Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaspect Ġ= Ġview . meas ured Width . toFloat () Ġ/ Ġview . meas ured Height . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator . of Int ( view . meas ured Height , Ġbase Height ) ĊĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġit . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġh Ġ* Ġaspect ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġview . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlp . width Ġ= Ġwidth . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlp . height Ġ= Ġh ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġlp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġanim ator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexpand Move Animator ( view : ĠView , Ġbase Width : ĠInt , Ġbase Height : ĠInt , Ġis End : ĠBoolean Ġ= Ġfalse ): ĠValue Animator Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaspect Ġ= Ġview . meas ured Width . toFloat () Ġ/ Ġview . meas ured Height . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġmargin : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( is End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmargin Ġ= Ġ( view . layout Params Ġas ĠFrame Layout . LayoutParams ). right Margin ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmargin Ġ= Ġ( view . layout Params Ġas ĠFrame Layout . LayoutParams ). left Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlast Width Ġ= Ġbase Height Ġ* Ġaspect ĊĠĠĠĠĠĠĠ Ġval Ġmove Animator Ġ= ĠValue Animator . of Int ( margin , Ġ(( base Width Ġ/ Ġ 2 ) Ġ- Ġ( last Width Ġ/ Ġ 2 )). toInt ()) ĊĠĠĠĠĠĠĠ Ġmove Animator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġit . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġview . layout Params Ġas ĠFrame Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . right Margin Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . left Margin Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġlp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmove Animator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollapse Animator ( view : ĠView , Ġbase Width : ĠInt ): ĠValue Animator Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaspect Ġ= Ġview . meas ured Height . toFloat () Ġ/ Ġview . meas ured Width . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġbase Width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator . of Int ( view . meas ured Width , Ġwidth ) ĊĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġit . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġw Ġ* Ġaspect ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġview . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlp . height Ġ= Ġh . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlp . width Ġ= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġlp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġanim ator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollapse Move Animator ( view : ĠView , Ġis End : ĠBoolean Ġ= Ġfalse ): ĠValue Animator Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmargin : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( is End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmargin Ġ= Ġ( view . layout Params Ġas ĠFrame Layout . LayoutParams ). right Margin ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmargin Ġ= Ġ( view . layout Params Ġas ĠFrame Layout . LayoutParams ). left Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmove Animator Ġ= ĠValue Animator . of Int ( margin , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġmove Animator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġit . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġview . layout Params Ġas ĠFrame Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . right Margin Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . left Margin Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġlp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmove Animator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġalpha Animator ( view : ĠView , Ġfrom : ĠFloat , Ġto : ĠFloat ): ĠValue Animator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObject Animator . of Float ( view , Ġ" alpha ", Ġfrom , Ġto ) ĊĠĠĠ Ġ} Ċ }