package Ġsoup . animation . sample . anim ator . reveal Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Animation Utils Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . animation . do On End Ċ import Ġandroidx . core . view . do On Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . google . android . material . circular reveal . Circular Re veal Compat Ċ import Ġcom . google . android . material . circular reveal . Circular Re veal LinearLayout Ċ import Ġcom . google . android . material . circular reveal . Circular Re veal Widget Ċ import Ġkotlinx . android . synt hetic . main . fragment _ anim ator _ reveal .* Ċ import Ġsoup . animation . sample . R Ċ import Ġsoup . animation . sample . interpol ator . Interpol ators Ċ import Ġkotlin . math . h ypot Ċ Ċ class ĠCircular Re veal Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġradius Ġ= Ġ 0 f ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ anim ator _ reveal , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġview . do On Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius Ġ= Ġit . diagonal Length () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġun fold . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Re veal View . fold Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Re veal View . un fold Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog Fab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Re veal Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( child FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreveal View . hide Contents () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreveal View . show Contents () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtransform Fab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Fab . is Expanded Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġs cri m . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Fab . is Expanded Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCircular Re veal LinearLayout . un fold Menu () Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġcreate Circular Re veal Compat Of ( un fold , Ġ 0 f , Ġradius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCircular Re veal LinearLayout . fold Menu () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Circular Re veal Compat Of ( un fold , Ġradius , Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠView . show Contents () Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġcreate Circular Re veal Of ( fab , Ġ 0 f , Ġradius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠInterpol ators . DE CELER ATE ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠView . hide Contents () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Circular Re veal Of ( fab , Ġradius , Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠInterpol ators . AC CELER ATE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun ĠView . create Circular Re veal Of ( ĊĠĠĠĠĠĠĠ Ġtarget : ĠView , ĊĠĠĠĠĠĠĠ Ġstart Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġend Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġblock : ĠAn imator . () Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠAn imator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠView Animation Utils . create Circular Re veal ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . center X (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . center Y (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Radius ĊĠĠĠĠĠĠĠ Ġ). apply ( block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun ĠCircular Re veal Widget . create Circular Re veal Compat Of ( ĊĠĠĠĠĠĠĠ Ġtarget : ĠView , ĊĠĠĠĠĠĠĠ Ġstart Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġend Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġblock : ĠAn imator . () Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠAn imator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCircular Re veal Compat . create Circular Re veal ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . center X (). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . center Y (). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Radius ĊĠĠĠĠĠĠĠ Ġ). apply ( block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠView . center X (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( right Ġ+ Ġleft ) Ġ/ Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠView . center Y (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( bottom Ġ+ Ġtop ) Ġ/ Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠView . diagonal Length (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġh ypot ( width . toFloat (), Ġheight . toFloat ()) ĊĠĠĠ Ġ} Ċ } Ċ