package Ġcom . an agram software . s ifi . ui . profile Ċ Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . transition . Fade Ċ Ċ import Ġcom . an agram software . s ifi . R Ċ import Ġcom . an agram software . s ifi . ui . MainActivity Ċ import Ġcom . google . android . material . app bar . AppBar Layout Ċ import Ġkotlinx . android . synt hetic . main . fragment _ profile .* Ċ import Ġorg . k oin . android . ext . android . inject Ċ Ċ class ĠProfile Fragment Ġ: ĠFragment (), ĠApp Bar Layout . On Offset Changed Listener Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġenter Transition Ġ= ĠF ade () ĊĠĠĠĠĠĠĠ Ġexit Transition Ġ= ĠF ade () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠProfile ViewModel Ġby Ġinject () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ profile , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġtoolbar . inflate Menu ( R . menu . profile _ menu ) ĊĠĠĠĠĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ logout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ?) ?. logout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġapp bar . add On Offset Changed Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel . start () ĊĠĠĠĠĠĠĠ ĠviewModel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . observe ( this @ Profile Fragment , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname _ tv . text Ġ= Ġit ?. fname Ġ+ Ġ" Ġ" Ġ+ Ġit ?. lname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag _ tv . text Ġ= Ġif Ġ( it ?. tag Ġ!= Ġnull ) Ġ"# ${ it . tag }" Ġelse Ġ"# TAG " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Offset Changed ( app Bar Layout : ĠApp Bar Layout ?, Ġvertical Offset : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Bar Layout ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Scroll Ġ= Ġapp Bar Layout . total Scroll Range ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpercentage Ġ= ĠMath . abs ( vertical Offset ) Ġ/ Ġmax Scroll . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Alpha On Title ( percentage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Alpha On Title ( percentage : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġname _ tv . alpha Ġ= Ġ( PERCENT AGE _ TO _ HIDE _ TITLE _ DETAILS Ġ- ĠMath . min ( PERCENT AGE _ TO _ HIDE _ TITLE _ DETAILS , Ġpercentage ))/ ĠPER CENT AGE _ TO _ HIDE _ TITLE _ DETAILS ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPER CENT AGE _ TO _ HIDE _ TITLE _ DETAILS Ġ= Ġ 0 . 5 f ĊĠĠĠ Ġ} Ċ Ċ } Ċ