/* Ċ Ġ* Ġ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 . foundation . Scroll State Ċ import Ġandroidx . compose . foundation . is System In Dark Theme Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ 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 . Material Theme Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . alpha Ċ import Ġandroidx . compose . ui . graphics . graphics Layer Ċ import Ġandroidx . compose . ui . platform . Local Density Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . semantics . content Description Ċ import Ġandroidx . compose . ui . semantics . semantics Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . example . android dev challenge . Const ans Ċ import Ġcom . example . android dev challenge . R Ċ import Ġcom . example . android dev challenge . model . Detail Ċ import Ġcom . example . android dev challenge . ui . bg . Moon Background Ċ import Ġcom . example . android dev challenge . ui . bg . Sun ny Background Ċ import Ġcom . example . android dev challenge . ui . theme . My The med Preview Ċ Ċ @ Composable Ċ fun ĠMain () Ġ{ ĊĊĠĠĠ Ġval Ġscroll State Ġ= Ġremember Scroll State () ĊĊĠĠĠ Ġval Ġdata Ġ= ĠConst ans . be ij ing Detail ĊĊĠĠĠ Ġval Ġfill Size Ġ= ĠModifier . fill MaxSize () ĊĊĠĠĠ Ġif Ġ( is System In Dark Theme ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠMo on Background ( fill Size ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠSun ny Background ( fill Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠBox Ġ{ ĊĠĠĠĠĠĠĠ ĠTitle ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 8 0 . dp , Ġstart Ġ= Ġ 2 0 . dp , Ġend Ġ= Ġ 2 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠHeader ( data , Ġscroll State . value ) ĊĊĠĠĠĠĠĠĠ ĠBody ( data , Ġscroll State ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠBody Padding Ġ= Ġ 2 6 0 . dp Ċ private Ġval ĠHeader Padding Ġ= Ġ 1 2 0 . dp Ċ private Ġval Ġtitle Spacing Ġ= Ġ 1 0 0 . dp Ċ Ċ @ Composable Ċ fun ĠTitle ( ĊĠĠĠ Ġmodifier : ĠModifier , ĊĠĠĠ Ġdetail : ĠDetail Ċ ) Ġ{ ĊĊĠĠĠ ĠBox ( modifier Ġ= Ġmodifier ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTop Ġlocation Ġname ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Location Desc Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ string Resource ( R . string . current _ location )} Ġ${ detail . location Name }," ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Top Start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. semantics ( merge Desc endants Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġcurrent Location Desc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 1 0 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġdetail . location Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠHeader ( detail : ĠDetail , Ġscroll : ĠInt ) Ġ{ ĊĊĠĠĠ Ġval Ġrange Ġ= Ġwith ( Local Density . current ) Ġ{ Ġ( Body Padding Ġ- ĠHeader Padding ). to Px () Ġ} ĊĠĠĠ Ġval Ġalpha Ġ= Ġ 1 Ġ- Ġ( scroll Ġ/ Ġrange ). coerce At Most ( 1 f ) ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 3 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( alpha ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. graphics Layer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Y Ġ= Ġ- scroll . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( Header Padding )) ĊĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center H orizontally ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"${ detail . temperature . current } Â° ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Sun ny ", ĠfontSize Ġ= Ġ 3 0 . sp , Ġstyle Ġ= ĠMaterial Theme . typography . h 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠRow ( Modifier . padding ( horizontal Ġ= Ġ 1 0 . dp , Ġvertical Ġ= Ġ 2 0 . dp )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHum idity Ġpercent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhum idity Desc Ġ= Ġ"${ string Resource ( id Ġ= ĠR . string . humidity )} : Ġ${ detail . humidity }" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. semantics ( true ) Ġ{ Ġcontent Description Ġ= Ġhum idity Desc Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġdetail . humidity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . humidity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . caption ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠBody ( detail : ĠDetail , Ġscroll State : ĠScroll State ) Ġ{ ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 1 5 . dp , Ġend Ġ= Ġ 1 5 . dp , Ġtop Ġ= Ġtitle Spacing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( scroll State ) ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . padding ( top Ġ= ĠBody Padding )) ĊĊĠĠĠĠĠĠĠ ĠFore cast Card ( list Ġ= Ġdetail . future Day Forecast ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠMain Light Preview () Ġ{ ĊĠĠĠ ĠMy The med Preview Ġ{ ĊĠĠĠĠĠĠĠ ĠMain () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠMain Dark Preview () Ġ{ ĊĠĠĠ ĠMy The med Preview ( true ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMain () ĊĠĠĠ Ġ} Ċ } Ċ