package Ġcom . ang cy o . dialog Ċ Ċ import Ġandroid . animation . Argb Evaluator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . Popup Window Ċ import Ġandroidx . core . view . do On Pre Draw Ċ import Ġcom . ang cy o . widget . Dsl ViewHolder Ċ import Ġcom . ang cy o . widget . base . click It Ċ import Ġcom . ang cy o . widget . base . getChild OrNull Ċ Ċ /** Ċ Ġ* Ġ å®½åº¦ åħ¨ å±ı , Ġ é«ĺåº¦ æĴ ĳ æ»¡ éĶ ļ çĤ¹ å¸ĥå±Ģ åºķ éĥ¨ åĪ° æīĭæľº åºķ éĥ¨ Ċ Ġ* ĠEmail : ang cy o @ 1 2 6 . com Ċ Ġ* Ġ@ author Ġang cy o Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 0 2 / 0 2 Ċ Ġ*/ Ċ open Ġclass ĠFull Popup Config Ġ: ĠPopup Config () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġheight Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġanimation Style Ġ= ĠR . style . Lib Full Popup Animation ĊĠĠĠĠĠĠĠ Ġexactly Height Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ContentView ( context : ĠContext ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Layout Ġ= ĠFrame Layout ( context ) ĊĠĠĠĠĠĠĠ Ġroot Layout . layout Params Ġ= ĠFrame Layout . LayoutParams (- 1 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( layout Id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( layout Id , Ġroot Layout , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Layout . addView ( content View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontent View Ġ= Ġroot Layout ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Popup Window ( popup Window : ĠPopup Window , Ġpopup ViewHolder : ĠD sl ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Popup Window ( popup Window , Ġpopup ViewHolder ) ĊĠĠĠĠĠĠĠ Ġpopup ViewHolder . item View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Show Window ( popup Window , Ġpopup ViewHolder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( outside Touchable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick It Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Window . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// popup Window . enter Transition ĊĠĠĠĠĠĠĠ Ġ// popup Window . exit Transition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Show Window ( popup Window : ĠPopup Window , Ġpopup ViewHolder : ĠD sl ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Animator Ġ= ĠValue Animator . of Object ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArg b Evaluator (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor . parse Color ("# 0 0 0 0 0 0 0 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor . arg b (( 2 5 5 Ġ* Ġamount ). toInt (), Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcolor Animator . add Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġanimation . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup ViewHolder . item View . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcolor Animator . duration Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠ Ġcolor Animator . start () ĊĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠViewGroup )?. getChild OrNull ( 0 )?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo On Pre Draw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Y Ġ= Ġ(- it . meas ured Height ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate (). translation Y ( 0 f ). set Duration ( 3 0 0 ). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }