/* Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby Ġ 2 0 2 0 Ġsky do ves Ġ( Ja ew o ong ĠE um ) Ċ Ġ* Ċ Ġ* Ġ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 . sky do ves . compose . orche stra . ui . demo Ċ Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . aspect Ratio Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . Circular Progress Indicator Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . platform . Local Lifecycle Owner Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . constraint layout . compose . Constraint Layout Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . engine . Disk Cache Strategy Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . sky do ves . compose . orche stra . model . Mock Util Ċ import Ġcom . sky do ves . compose . orche stra . model . Post er Ċ import Ġcom . sky do ves . compose . orche stra . theme . Dis ney Compose Theme Ċ import Ġcom . sky do ves . compose . orche stra . ui . St agger ed Vertical Grid Ċ import Ġcom . sky do ves . compose . orche stra . utils . Bal loon Utils Ċ import Ġcom . sky do ves . land sc ap ist . glide . G lide Image Ċ import Ġcom . sky do ves . orche stra . tooltip s . Bal loon Anchor Ċ Ċ @ Composable Ċ fun ĠBal loon Demo ( ĊĠ Ġpost ers : ĠList < Post er >, ĊĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠ ĠColumn ( ĊĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠĠĠ Ġ. background ( Material Theme . colors . background ) ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠSt agger ed Vertical Grid ( ĊĠĠĠĠĠ Ġmax Column Width Ġ= Ġ 2 2 0 . dp , ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( 4 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġpost ers . forEach Ġ{ Ġposter Ġ-> ĊĠĠĠĠĠĠĠ ĠPost er ( poster Ġ= Ġposter ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠPost er ( ĊĠ Ġposter : ĠPost er , ĊĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠ ĠSurface ( ĊĠĠĠ Ġmodifier Ġ= Ġmodifier . padding ( 4 . dp ), ĊĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Background , ĊĠĠĠ Ġelevation Ġ= Ġ 8 . dp , ĊĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( 8 . dp ) ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĠĠĠ Ġval Ġlifecycle Owner Ġ= ĠLocal Lifecycle Owner . current ĊĊĠĠĠ ĠConstraint Layout Ġ{ ĊĊĠĠĠĠĠ Ġval Ġ( image , Ġtitle , Ġcontent , Ġmessage ) Ġ= Ġcreate Refs () ĊĊĠĠĠĠĠ ĠG lide Image ( ĊĠĠĠĠĠĠĠ Ġimage Model Ġ= Ġposter . poster , ĊĠĠĠĠĠĠĠ Ġrequest Builder Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠG lide . with ( Local Context . current ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Drawable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( RequestOptions (). disk Cache Strategy ( Disk Cache Strategy . ALL )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠ Ġ. constr ain As ( image ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter H orizontally To ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( parent . top ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. aspect Ratio ( 0 . 8 f ), ĊĠĠĠĠĠĠĠ Ġloading Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠConstraint Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize () ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġcreate Ref () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . constr ain As ( indicator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( parent . top ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom . link To ( parent . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart . link To ( parent . start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend . link To ( parent . end ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġfailure Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠConstraint Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize () ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" image Ġrequest Ġfailed .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . constr ain As ( message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( parent . top ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom . link To ( parent . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart . link To ( parent . start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend . link To ( parent . end ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġposter . name , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 2 , ĊĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Center , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠ Ġ. constr ain As ( title ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter H orizontally To ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( image . bottom ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. padding ( 8 . dp ) ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġposter . play time , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 1 , ĊĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Center , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠ Ġ. constr ain As ( content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter H orizontally To ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( title . bottom ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠ Ġ. padding ( bottom Ġ= Ġ 1 2 . dp ) ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ ĠBal loon Anchor ( ĊĠĠĠĠĠĠĠ Ġreference Ġ= Ġimage , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . aspect Ratio ( 0 . 8 f ), ĊĠĠĠĠĠĠĠ Ġbal loon Ġ= ĠBal loon Utils . getTitle Bal loon ( ĊĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġposter . name , ĊĠĠĠĠĠĠĠĠĠ Ġlifecycle Ġ= Ġlifecycle Owner ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġon Anchor Click Ġ= Ġ{ Ġbal loon , Ġanchor Ġ-> Ġbal loon . show Align Bottom ( anchor ) Ġ} ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠPost er Preview Light () Ġ{ ĊĠ ĠDis ney Compose Theme ( dark Theme Ġ= Ġfalse ) Ġ{ ĊĠĠĠ ĠPost er ( ĊĠĠĠĠĠ Ġposter Ġ= ĠMock Util . getMock Post er () ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠPost er Preview Dark () Ġ{ ĊĠ ĠDis ney Compose Theme ( dark Theme Ġ= Ġtrue ) Ġ{ ĊĠĠĠ ĠPost er ( ĊĠĠĠĠĠ Ġposter Ġ= ĠMock Util . getMock Post er () ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ