package Ġcom . example . ui _ ab straction Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . activity . compose . setContent Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . remember Lazy List State Ċ 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 .* Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Favorite Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . remember Coroutine Scope Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Shape Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġco il . compose . remember Image Painter Ċ import Ġcom . example . ui _ ab straction . ui . theme . Layouts Code Theme Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠScaffold Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// set ContentView ( R . layout . activity _ scaffold ) ĊĠĠĠĠĠĠĠ Ġset Content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayout s Code Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayout s C odel ab () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠLayout s C odel ab () Ġ{ ĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Layout C odel ab ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġ{ Ġ/* TODO */ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( Icons . Filled . Favorite , Ġcontent Description Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ Ġinner Padding Ġ-> ĊĠĠĠĠĠĠĠ ĠBody Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( inner Padding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 8 . dp ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠBody Content ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠ ĠColumn ( modifier Ġ= Ġmodifier . padding ( 8 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Hi Ġthere ") ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Thanks Ġfor Ġgoing Ġthrough Ġthe ĠLayout s Ġc odel ab ") ĊĠĠĠĠĠĠĠ ĠSimple List () ĊĠĠĠĠĠĠĠ ĠImage List () ĊĠĠĠ Ġ} Ċ } Ċ Ċ // Ġæ Ļ ® éĢļ æĸĩåŃĹ åĪĹè¡¨ Ċ @ Composable Ċ fun ĠSimple List () Ġ{ ĊĠĠĠ Ġval Ġscroll State Ġ= Ġremember Lazy List State () ĊĠĠĠ ĠLazy Column ( state Ġ= Ġscroll State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems ( 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Item Ġ#$ it ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // Ġ åĽ¾ æĸĩ åĪĹè¡¨ çļĦ Item Ċ @ Composable Ċ fun ĠImage ListItem ( index : ĠInt ) Ġ{ ĊĠĠĠ Ġval ĠimageUrl Ġ= ĊĠĠĠĠĠĠĠ Ġ" https :// d ribb ble . com / assets / default _ avatars / avatar - 1 - 0 9 7 4 2 3 2 8 3 dcf 8 3 7 a 2 8 3 8 0 1 7 f 3 7 c 1 ba 9 7 6 7 7 af 3 a 3 2 e 0 ead fde 1 a 1 8 2 ff 8 f 7 7 fc 9 d . png " ĊĠĠĠ ĠRow ( vertical Alignment Ġ= ĠAlignment . Center Vert ically ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġremember Image Painter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġ" https :// d ribb ble . com / assets / default _ avatars / avatar - 1 - 0 9 7 4 2 3 2 8 3 dcf 8 3 7 a 2 8 3 8 0 1 7 f 3 7 c 1 ba 9 7 6 7 7 af 3 a 3 2 e 0 ead fde 1 a 1 8 2 ff 8 f 7 7 fc 9 d . png " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Android ĠLogo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 5 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . width ( 1 0 . dp )) ĊĠĠĠĠĠĠĠ ĠText (" Item Ġ#$ index ", Ġstyle Ġ= ĠMaterial Theme . typography . subtitle 1 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // Ġ åĽ¾ æĸĩ åĪĹè¡¨ Ċ @ Composable Ċ fun ĠImage List () Ġ{ ĊĠĠĠ Ġval Ġlist Size Ġ= Ġ 1 0 0 ĊĠĠĠ Ġ// ĠWe Ġsave Ġthe Ġscrolling Ġposition Ġwith Ġthis Ġstate ĊĠĠĠ Ġval Ġscroll State Ġ= Ġremember Lazy List State () ĊĠĠĠ Ġ// ĠWe Ġsave Ġthe Ġcoroutine Ġscope Ġwhere Ġour Ġanimated Ġscroll Ġwill Ġbe Ġexecuted ĊĠĠĠ Ġ// Ġcreate Ġa ĠCor outine Scope Ġusing Ġthe Ġremember Coroutine Scope Ġfunction Ġto Ġcreate Ġcor outines Ġfrom Ġthe Ġbutton Ġevent Ġhandlers ĊĠĠĠ Ġval Ġcoroutine Scope Ġ= Ġremember Coroutine Scope () ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ ĠModifier . padding ( 5 . dp ) ĊĠĠĠ Ġ){ ĊĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll State . animate Scroll To Item ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . background ( Color . Green , ĠRo unded Corner Shape ( 8 . dp )) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Scroll Ġto ĠTop ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll State . animate Scroll To Item ( list Size Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . background ( Color . Green , ĠRo unded Corner Shape ( 8 . dp )) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Scroll Ġto ĠEnd ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠLazy Column ( state Ġ= Ġscroll State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems ( 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ListItem ( index Ġ= Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠLayout s C odel ab Preview () Ġ{ ĊĠĠĠ ĠLayout s Code Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠLayout s C odel ab () ĊĠĠĠ Ġ} Ċ }