/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . google . android studio . motion layout example . fragments demo Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . constraint layout . motion . widget . Motion Layout Ċ import Ġandroidx . constraint layout . motion . widget . Motion Scene Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . google . android studio . motion layout example . R Ċ import Ġkotlinx . android . synt hetic . main . main _ activity .* Ċ Ċ class ĠFragment Example 2 Activity : ĠAppCompatActivity (), ĠView . OnClickListener , ĠMotion Layout . Transition Listener Ġ{ ĊĊĠĠĠ Ġ// ĠTODO : ĠExtract Ġthe Ġcommon Ġcode Ġwith ĠFragment Example Activity ĊĠĠĠ Ġprivate Ġvar Ġlast Progress Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġfragment : ĠFragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlast : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġoverride Ġfun Ġon Transition Change ( p 0 : ĠMotion Layout ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( p 3 Ġ- Ġlast Progress Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfrom Ġstart Ġto Ġend ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġat End Ġ= ĠMath . abs ( p 3 Ġ- Ġ 1 f ) Ġ< Ġ 0 . 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( at End Ġ&& Ġfragment Ġis ĠMain Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( R . anim ator . show , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠList Fragment . newInstance (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfrom Ġend Ġto Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġat Start Ġ= Ġp 3 Ġ< Ġ 0 . 9 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( at Start Ġ&& Ġfragment Ġis ĠList Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( 0 , ĠR . anim ator . hide ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠMain Fragment . newInstance (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlast Progress Ġ= Ġp 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Transition Trigger ( p 0 : ĠMotion Layout ?, Ġp 1 : ĠInt , Ġp 2 : ĠBoolean , Ġp 3 : ĠFloat ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Transition Started ( p 0 : ĠMotion Layout ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Transition Completed ( p 0 : ĠMotion Layout ?, Ġp 1 : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġallows Transition ( p 0 : ĠMotion Scene . Transition ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . main _ activity ) ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠMain Fragment . newInstance (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// toggle . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġ// toggle Animation . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġmotion Layout . set Transition Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view ?. id Ġ== ĠR . id . toggle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= Ġif Ġ( fragment Ġ== Ġnull Ġ|| Ġfragment Ġis ĠMain Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( R . anim ator . show , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSecond Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( 0 , ĠR . anim ator . hide ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ