/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 . example . android dev challenge . ui Ċ Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . animation . core . Linear Out Slow In E asing Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . animation . slide In H orizontally Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . aspect Ratio Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . IconButton Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . Top AppBar Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Insert Photo Ċ import Ġandroidx . compose . material . icons . rounded . Arrow Back Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . layout . Content Scale Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġandroidx . lifecycle . view model . compose . viewModel Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġcom . example . android dev challenge . R Ċ import Ġcom . example . android dev challenge . data . P up py Item Ċ import Ġcom . example . android dev challenge . data . P up py List ViewModel Ċ import Ġcom . example . android dev challenge . ui . theme . gray Tint Color Ċ Ċ @ Composable Ċ fun ĠP up py Profile ( pup py Item : ĠP up py Item ) Ġ{ ĊĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. aspect Ratio ( 1 . 2 f ) ĊĠĠĠĠĠĠĠ Ġif Ġ( pup py Item . image Id Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= Ġp up py Item . image Id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Insert Photo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= Ġgray Tint Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . padding ( all Ġ= Ġ 1 0 f . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġp up py Item . name , ĠfontSize Ġ= Ġ 1 8 f . sp ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( Modifier . height ( 6 0 0 f . dp )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Animation Api Ċ @ Composable Ċ fun ĠP up py Profile Screen ( ĊĠĠĠ Ġnav Controller : ĠNav Controller , ĊĠĠĠ Ġp up py Id : ĠString ?, ĊĠĠĠ Ġp up py List ViewModel : ĠP up py List ViewModel Ġ= ĠviewModel () Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġp up py Item : ĠP up py Item ? Ġ= Ġp up py List ViewModel . find ( pup py Id ) ĊĠĠĠ Ġval Ġscroll State Ġ= Ġremember Scroll State () ĊĠĠĠ Ġvar Ġvisibility Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĠĠĠ ĠSurface Ġ{ ĊĠĠĠĠĠĠĠ ĠLa unched Effect (" P up py Profile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAnimated Visibility ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisible Ġ= Ġvisibility , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenter Ġ= Ġslide In H orizontally ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Offset X Ġ= Ġ{ Ġit Ġ/ Ġ 2 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( duration Millis Ġ= Ġ 4 0 0 , Ġeasing Ġ= ĠLinear Out Slow In E asing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( Modifier . vertical Scroll ( scroll State )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP up py Profile ( pup py Item Ġ= Ġp up py Item !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġp up py Item . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelevation Ġ= Ġ 0 f . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġ{ Ġnav Controller . navigate Up () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Rounded . Arrow Back , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġstring Resource ( R . string . label _ back ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠP up py Profile Preview () Ġ{ ĊĠĠĠ ĠP up py Profile ( P up py Item ( name Ġ= Ġ" name ")) Ċ } Ċ