package Ġcom . example . kt compose basic example Ċ Ċ import Ġandroid . content . res . Configuration . UI _ MODE _ N IGHT _ YES Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . activity . Component Activity Ċ import Ġandroidx . activity . compose . setContent Ċ import Ġandroidx . compose . animation . animate Content Size Ċ import Ġandroidx . compose . animation . core . Spring Ċ import Ġandroidx . compose . animation . core . animate Dp As State Ċ import Ġandroidx . compose . animation . core . spring Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Card Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . IconButton Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Outlined Button Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons . Filled Ċ import Ġandroidx . compose . material . icons . filled . Expand Less Ċ import Ġandroidx . compose . material . icons . filled . Expand More Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . save able . remember Save able Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . example . kt compose basic example . ui . theme . Kt Compose Basic Example Theme Ċ Ċ class ĠMainActivity Ġ: ĠComponent Activity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK t Compose Basic Example Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy App () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠMy App () Ġ{ ĊĠĠĠ Ġ// ĠA Ġsurface Ġcontainer Ġusing Ġthe Ġ' background ' Ġcolor Ġfrom Ġthe Ġtheme Ċ // ĠĠĠ ĠSurface ( color Ġ= ĠMaterial Theme . colors . background ) Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠG reeting (" Android ") Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġvar Ġshould Show On boarding Ġby Ġremember Ġ{ Ġmutable State Of ( true ) Ġ} ĊĠĠĠ Ġ// Ġremember Ġthe Ġstate Ġfor Ġconfiguration Ġchange ĊĠĠĠ Ġvar Ġshould Show On boarding Ġby Ġremember Save able Ġ{ Ġmutable State Of ( true ) Ġ} ĊĊĠĠĠ Ġif Ġ( should Show On boarding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġpass Ġa Ġcallback Ġfunction Ġdown Ġto Ġmodified Ġthe Ġho isted Ġstate ĊĠĠĠĠĠĠĠ ĠOn boarding Screen ( on Continue Clicked Ġ= Ġ{ Ġshould Show On boarding Ġ= Ġfalse }) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠG reet ings () ĊĠĠĠ Ġ} Ċ } Ċ Ċ //@ Composable Ċ // fun ĠG reet ings ( names : ĠList < String > Ġ= ĠlistOf (" World ", Ġ" Compose ")) Ġ{ Ċ // ĠĠĠ Ġval Ġmodifier Ġ= ĠModifier . padding ( vertical Ġ= Ġ 4 . dp ) Ċ // ĠĠĠ ĠColumn Ġ( modifier Ġ= Ġmodifier ){ Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( name Ġin Ġnames ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠG reeting ( name Ġ= Ġname ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ //} Ċ Ċ /** Ċ Ġ* ĠUsing ĠLazy Column , Ġwhich Ġis Ġequivalent Ġto ĠRecyclerView ĠList Ċ Ġ*/ Ċ @ Composable Ċ fun ĠG reet ings ( names : ĠList < String > Ġ= ĠList ( 1 0 0 0 ) Ġ{" $ it "}) Ġ{ ĊĠĠĠ Ġval Ġmodifier Ġ= ĠModifier . padding ( vertical Ġ= Ġ 4 . dp ) ĊĠĠĠ ĠLazy Column Ġ( modifier Ġ= Ġmodifier ){ ĊĠĠĠĠĠĠĠ Ġ// Ġandroidx . compose . foundation . lazy . items ĊĠĠĠĠĠĠĠ Ġitems ( items Ġ= Ġnames ) Ġ{ Ġname Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG reeting ( name Ġ= Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠG reeting 1 ( name : ĠString ) Ġ{ ĊĠĠĠ Ġ// Ġvar Ġexpanded Ġ= Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĠĠĠ Ġ// ĠBy Ġdeleg ation Ġneed ĊĠĠĠ Ġ// Ġimport Ġandroidx . compose . runtime . getValue ĊĠĠĠ Ġ// Ġimport Ġandroidx . compose . runtime . setValue ĊĠĠĠ Ġvar Ġexpanded Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠ Ġ// ĠNo Ġneed Ġto Ġremember , Ġit Ġis Ġa Ġsimple Ġcalculation ĊĠĠĠ Ġ// Ġval Ġextra Padding Ġ= Ġif Ġ( expanded ) Ġ 4 8 . dp Ġelse Ġ 0 . dp ĊĠĠĠ Ġval Ġextra Padding Ġby Ġanimate Dp As State ( ĊĠĠĠĠĠĠĠ Ġif Ġ( expanded ) Ġ 4 8 . dp Ġelse Ġ 0 . dp , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġspring ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd amping Ratio Ġ= ĠSpring . D amping Ratio Medium Bo unc y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġst iff ness Ġ= ĠSpring . St iff ness Low ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// ĠModifier Ġof Ġa Ġcomp osable Ġis Ġregarding Ġto Ġthe Ġparent ĊĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Ġ= Ġ 4 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Ġ= Ġ 8 . dp ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠModifier Ġtells Ġthe Ġpadding Ġfor Ġsurface ĊĠĠĠĠĠĠĠ ĠRow ( Modifier . padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠModifier Ġtells Ġthe Ġpadding Ġin ĠRow ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadding Ġextra Ġpadding Ġto Ġthe Ġparent Ġrow Ġand Ġpadding Ġcan Ġnot Ġbe Ġnegative . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( bottom Ġ= Ġextra Padding . coerce At Least ( 0 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Hello , ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Text ( text Ġ= Ġname , Ġstyle Ġ= ĠMaterial Theme . typography . h 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġname , Ġstyle Ġ= ĠMaterial Theme . typography . h 4 . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Extra Bold ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOut lined Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġexpanded Ġ= Ġ! expanded } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expanded ) Ġstring Resource ( R . string . show _ less ) Ġelse Ġstring Resource ( R . string . show _ more ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠG reeting ( name : ĠString ) Ġ{ ĊĠĠĠ ĠCard ( ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( vertical Ġ= Ġ 4 . dp , Ġhorizontal Ġ= Ġ 8 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCard Content ( name ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠCard Content ( name : ĠString ) Ġ{ ĊĠĠĠ Ġvar Ġexpanded Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠ Ġ// ĠModifier Ġtells Ġthe Ġpadding Ġfor Ġsurface ĊĠĠĠ ĠRow ( Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. padding ( 1 2 . dp ) ĊĠĠĠĠĠĠĠ Ġ. animate Content Size ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġspring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd amping Ratio Ġ= ĠSpring . D amping Ratio Medium Bo unc y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst iff ness Ġ= ĠSpring . St iff ness Low ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠModifier Ġtells Ġthe Ġpadding Ġin ĠRow ĊĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadding Ġextra Ġpadding Ġto Ġthe Ġparent Ġrow Ġand Ġpadding Ġcan Ġnot Ġbe Ġnegative . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 2 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Hello , ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Text ( text Ġ= Ġname , Ġstyle Ġ= ĠMaterial Theme . typography . h 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġname , Ġstyle Ġ= ĠMaterial Theme . typography . h 4 . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Extra Bold ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ(" Compose m Ġipsum Ġcolor Ġsit Ġlazy , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" padding Ġtheme Ġelit , Ġsed Ġdo Ġbo unc y . Ġ"). repeat ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġ{ expanded Ġ= Ġ! expanded }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= Ġif Ġ( expanded ) ĠF illed . Expand Less Ġelse ĠF illed . Expand More , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġif Ġ( expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Resource ( R . string . show _ less ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Resource ( R . string . show _ more ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ @ Composable Ċ fun ĠOn boarding Screen ( on Continue Clicked : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġ// ĠTODO : Ġthis Ġstate Ġshould Ġbe Ġho isted ĊĠĠĠ Ġ// Ġvar Ġshould Show On boarding Ġby Ġremember Ġ{ Ġmutable State Of ( true ) Ġ} ĊĊĠĠĠ ĠSurface Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Welcome Ġto Ġthe ĠBas ics ĠCod lab !") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( vertical Ġ= Ġ 2 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Continue Clicked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠonClick Ġ= Ġ{ Ġshould Show On boarding Ġ= Ġfalse } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" continue ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Preview ( ĊĠĠĠ Ġshow Background Ġ= Ġtrue , ĊĠĠĠ Ġname Ġ= Ġ" Default Preview Dark ", ĊĠĠĠ Ġui Mode Ġ= ĠUI _ MODE _ N IGHT _ YES , ĊĠĠĠ Ġwidth Dp Ġ= Ġ 3 2 0 Ċ ) Ċ @ Preview ( ĊĠĠĠ Ġshow Background Ġ= Ġtrue , ĊĠĠĠ Ġname Ġ= Ġ" Default Preview Light ", ĊĠĠĠ Ġwidth Dp Ġ= Ġ 3 2 0 Ċ ) Ċ @ Composable Ċ fun ĠDefault Preview () Ġ{ ĊĠĠĠ ĠK t Compose Basic Example Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠG reet ings () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview ( show Background Ġ= Ġtrue , Ġwidth Dp Ġ= Ġ 3 2 0 , Ġheight Dp Ġ= Ġ 3 2 0 ) Ċ @ Composable Ċ fun ĠOn boarding Preview () Ġ{ ĊĠĠĠ ĠK t Compose Basic Example Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠOn boarding Screen ( on Continue Clicked Ġ= Ġ{}) Ġ// ĠDon Ġnothing Ġon Ġclick ĊĠĠĠ Ġ} Ċ }