KEMBAR78
Jetpack Compose & Clean Architecture Guide | PDF | Computing | Software
0% found this document useful (0 votes)
714 views51 pages

Jetpack Compose & Clean Architecture Guide

The document discusses Jetpack Compose and its architecture. It explains that Jetpack Compose is a toolkit for building native mobile interfaces with Kotlin. It presents the architecture with layers including presentation, domain, and data layers. The presentation layer contains activities, fragments, view models and composables. Composables are UI elements arranged hierarchically. State is used to represent values that can change over time with LiveData observing the state. Jetpack Compose composables observe the state to update the UI.

Uploaded by

laguacherna41
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
714 views51 pages

Jetpack Compose & Clean Architecture Guide

The document discusses Jetpack Compose and its architecture. It explains that Jetpack Compose is a toolkit for building native mobile interfaces with Kotlin. It presents the architecture with layers including presentation, domain, and data layers. The presentation layer contains activities, fragments, view models and composables. Composables are UI elements arranged hierarchically. State is used to represent values that can change over time with LiveData observing the state. Jetpack Compose composables observe the state to update the UI.

Uploaded by

laguacherna41
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

Anahí Salgado

@anncode
Clean Architecture
Android Jetpack
Compose

@anncode
Jetpack Compose
Toolkit para construir
Interfaces móviles nativas

@anncode
Jetpack Compose
Toolkit para construir
Interfaces móviles nativas

Kotlin

@anncode
Android Jetpack Compose

class MainActivity : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

}
}

@anncode
Android Jetpack Compose

class MainActivity : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
...
}
}
}

@anncode
Android Jetpack Compose

class MainActivity : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Text(“Hola Mundo”)
}
}
}

@anncode
Android Jetpack Compose
@Composable
fun Title(text: String) {

@anncode
Android Jetpack Compose
@Composable
fun Title(text: String) {
Text()
}

@anncode
Android Jetpack Compose
@Composable
fun Title(text: String) {
Text(
text = text,
color = deepBlue,
fontSize = 24.sp,
textAlign = TextAlign.Center,
style = TextStyle(fontWeight = FontWeight.Bold)
)
}
@anncode
https://anahisalgado.com/
Jetpack Compose
Los elementos de UI
se acomodan
jerárquicamente

@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan
jerárquicamente

@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan Composable {

jerárquicamente
}
}

@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan Composable {
Composable {
jerárquicamente
}
}
}

@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan Composable {
Composable {
jerárquicamente Composable {}
}
}
}

@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan Composable {
Composable {
jerárquicamente Composable {}
}
}
}

@anncode
Clean Architecture

@anncode
Clean Architecture
Presentation layer
Data layer Domain layer

@anncode
Arquitectura

@anncode
Arquitectura

@anncode
Arquitectura
Presentation layer
Data layer Domain layer

Activity
UseCase ViewModel
ApiService Repository Fragment

@anncode
Jetpack Compose
Toolkit para construir
Interfaces móviles nativas

Kotlin

@anncode
Arquitectura
Presentation layer
Data layer Domain layer

Activity
UseCase ViewModel
ApiService Repository Fragment

@anncode
Arquitectura
Presentation layer

Activity
ViewModel
Fragment

setContent { }
Composables

@anncode
Arquitectura
Presentation layer

Activity
ViewModel ui
Fragment

setContent { }
Composables

@anncode
Arquitectura
Presentation layer

Activity ui
ViewModel
Fragment composable

setContent { }
Composables

@anncode
Arquitectura

Presentation layer

Activity ui
ViewModel
Fragment composable

@anncode
Arquitectura

Presentation layer

Activity ui
ViewModel
Fragment composable

@anncode
Arquitectura

Presentation layer

Activity ui
ViewModel
Fragment composable

@anncode
Arquitectura
Presentation layer

Activity ui
ViewModel
Fragment composable

@anncode
Arquitectura
Presentation layer

Activity ui
ViewModel
Fragment composable

@anncode
Arquitectura
Presentation layer

Activity ui
ViewModel
Fragment composable

@anncode
Android Jetpack Compose
@Inject lateinit var mainViewModel: MainViewModel

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

mainViewModel.getCatFact()

@anncode
Android Jetpack Compose
@Inject lateinit var mainViewModel: MainViewModel

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

mainViewModel.getCatFact()

mainViewModel.catFact LiveData
}

@anncode
Arquitectura
Presentation layer

Activity ui
ViewModel
Fragment composable

LiveData

@anncode
Arquitectura
Presentation layer

Activity ui
ViewModel
Fragment composable

LiveData

@anncode
Arquitectura
Presentation layer

Activity ui
ViewModel
Fragment composable

State
LiveData

@anncode
State

✔ Cualquier valor que pueda


cambiar en el tiempo

@anncode
State

✔ Cualquier valor que pueda


cambiar en el tiempo

✔ Patrón de diseño:
Unidirectional Data Flow

@anncode
Arquitectura
Presentation layer

Activity ui
ViewModel
Fragment composable

State
LiveData

@anncode
Jetpack Compose
@Composable
fun CatFactScreen(

catFact: LiveData<CatFactStates>,
onClick: () -> Unit

) {

@anncode
Jetpack Compose
@Composable
fun CatFactScreen(

catFact: LiveData<CatFactStates>,
onClick: () -> Unit

) {

val catFact: CatFactStates by catFact.observeAsState(initial = CatFactStates.Loading)

@anncode
Jetpack Compose
@Composable
fun CatFactScreen(

catFact: LiveData<CatFactStates>,
onClick: () -> Unit

) {

val catFact: CatFactStates by catFact.observeAsState(initial = CatFactStates.Loading)

} LiveData State
@anncode
Jetpack Compose

val catFact: CatFactStates by catFact.observeAsState(initial = CatFactStates.Loading)

mainViewModel.catFact.observe(this@MainActivity, Observer { catFact ->


updateUI(catFact)
})

@anncode
Android Jetpack Compose
@Inject lateinit var mainViewModel: MainViewModel

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

setContent {
CatFactScreen(catFact = mainViewModel.catFact) {
mainViewModel.getCatFact()
}
}
} @anncode
Jetpack Compose
@Composable
fun CatFactScreen(

catFact: LiveData<CatFactStates>,
onClick: () -> Unit

) {

val catFact: CatFactStates by catFact.observeAsState(initial = CatFactStates.Loading)

@anncode
https://anahisalgado.com/
Anahí Salgado
@anncode

You might also like