Slide 1

Slide 1 text

Compose yourself: My journey into Androids new UI Andy Barber (@andyb129) Senior Android Developer @

Slide 2

Slide 2 text

Compose? Starting off First steps Building Blocks Stumbling Blocks Helping hand Next Steps Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 3

Slide 3 text

What is Compose? “Compose is Android’s recommended modern toolkit for building native UI” (using a declarative API in Kotlin) Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 4

Slide 4 text

Benefits - Interoperable with view UI - Use power of Kotlin language - Encourages separating state from view (activities/fragments) - Easier to test What is Compose? “Compose is Android’s recommended modern toolkit for building native UI” (using a declarative API in Kotlin) Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 5

Slide 5 text

Starting off ● Codelabs ○ https://developer.android.com/codelabs/jetpack-compose-basics ● Sample apps ○ https://github.com/android/compose-sample ● View equivalent ○ https://www.jetpackcompose.app/What-is-the-equivalent-of-X-in-Je tpack-Compose ● Developer Books ○ Practical Jetpack Compose - Joe Birch (@hitherejoe) ○ View to Compose - Alex Styl (@alexstyl) Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 6

Slide 6 text

First Steps Start small - Refactor 1 screen to compose Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 7

Slide 7 text

● Architecture - slight refactor ● Compose skeleton screen - JustEatTakeaway - Android UI library ● Respond to State in composable First Steps Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 8

Slide 8 text

First Steps Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129 Architecture - slight refactor

Slide 9

Slide 9 text

First Steps Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129 Architecture - slight refactor

Slide 10

Slide 10 text

First Steps Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129 Respond to State in composable uiState.collectAsState()

Slide 11

Slide 11 text

EditText ImageView Button RadioButton Compose skeleton screen First Steps Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 12

Slide 12 text

BasicTextInput ImageVector Button RadioButton First Steps Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129 Compose skeleton screen

Slide 13

Slide 13 text

Helping Hand ● JustEatTakeaway - Android UI library ○ https://medium.com/justeattakeaway-tech/android-ui-at-jet-30c8d7a697f5 Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 14

Slide 14 text

Building blocks Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 15

Slide 15 text

ConstraintLayout Building blocks Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 16

Slide 16 text

Power of declarative UI Building blocks Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 17

Slide 17 text

PreviewParameterProvider Building blocks Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 18

Slide 18 text

Accompanist Building blocks Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 19

Slide 19 text

Testing Building blocks Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 20

Slide 20 text

Stumbling blocks ● EditText / BasicTextField is a tricky component to start with ● Google blog about state issues - https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 21

Slide 21 text

● State management (& where to put it) ○ Code lab & Android Dev Summit YouTube video ■ https://developer.android.com/codelabs/jetpack-compose-state ■ https://www.youtube.com/watch?v=hWwZ_AuSGfo ○ Dynamic field validation ■ https://proandroiddev.com/input-validation-in-jetpack-compose-e99c18b44fe3 ■ Potentially use derivedStateOf() - https://medium.com/androiddevelopers/jetpack-compose-when-should-i-use-derive dstateof-63ce7954c11b Stumbling blocks Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 22

Slide 22 text

Accessibility changes Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129 Stumbling blocks

Slide 23

Slide 23 text

Next steps ● Future testing - adding screenshot testing ○ ● Replace more Fragments with Compose Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 24

Slide 24 text

● Navigation ○ Compose navigation ● ○ More investigation into multi module navigation - https://www.droidcon.com/2022/11/15/breaking-the-rules-dynamic-navigati on-in-modularized-apps-2/ Next steps Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129

Slide 25

Slide 25 text

Thanks for listening Any Questions? Compose yourself: My journey into Androids new UI ~> https://speakerdeck.com/andyb129/composeyourself @andyb129