Kotlin y Jetpack Compose. Desarrollo de aplicaciones Android
()
Información de este libro electrónico
integración perfecta con el ecosistema Android. A medida que los lectores adquieren fluidez en Kotlin, el enfoque se desplaza hacia Jetpack Compose,la revolucionaria biblioteca de IU declarativa de Android._x000D_
_x000D_
A lo largo de sus capítulos prácticos, los lectores aprenderán a construir interfaces de usuario modernas y dinámicas mediante la creación_x000D_
de aplicaciones prácticas paso a paso. Desde la navegación hasta la manipulación de datos, el libro abarca todos los aspectos esenciales del desarrollo de aplicaciones Android utilizando Jetpack Compose._x000D_
_x000D_
Con ejemplos de código claros y consejos de buenas prácticas, esta obra se convierte en un recurso indispensable para aquellos que buscan dominar las herramientas más avanzadas y eficientes en el desarrollo de aplicaciones Android._x000D_
_x000D_
Ademas, el lector podrá acceder a todo el código que contiene el libro para poner en práctica todo lo aprendido._x000D_
Relacionado con Kotlin y Jetpack Compose. Desarrollo de aplicaciones Android
Libros electrónicos relacionados
Programación en Objetive-C con Xcode y GCC Calificación: 0 de 5 estrellas0 calificacionesIngeniería y Arquitectura del Software Calificación: 0 de 5 estrellas0 calificacionesTypeScript, Curso Práctico Calificación: 0 de 5 estrellas0 calificacionesIniciar con Lazarus y Free Pascal Calificación: 5 de 5 estrellas5/5Android: Programación de dispositivos móviles a través de ejemplos Calificación: 0 de 5 estrellas0 calificacionesLa Era del Código Calificación: 5 de 5 estrellas5/5Aprende a Programar ASP .NET y C# - Segunda Edición Calificación: 0 de 5 estrellas0 calificacionesFundamentos de programación con Python 3 Calificación: 0 de 5 estrellas0 calificacionesCurso de programación Bash Shell Calificación: 0 de 5 estrellas0 calificacionesSistema operativo GNU Linux: Un enfoque práctico Calificación: 0 de 5 estrellas0 calificacionesEl camino a las redes neuronales artificiales Calificación: 0 de 5 estrellas0 calificacionesIntroducción a la programación en C. Un enfoque práctico. Calificación: 0 de 5 estrellas0 calificacionesProcessing: Desarrollo de interfaces de usuario, aplicaciones de visión artificial e IoT para Arduino y ESP8266 Calificación: 5 de 5 estrellas5/5Creación de aplicaciones con Android Calificación: 0 de 5 estrellas0 calificacionesGuía práctica para Raspberry Pi y Beaglebone Calificación: 0 de 5 estrellas0 calificacionesGestión de Bases de Datos Calificación: 0 de 5 estrellas0 calificacionesProgramación Java: JDBC y Swing Calificación: 0 de 5 estrellas0 calificacionesProgramación con Qt y Arduino. Calificación: 0 de 5 estrellas0 calificacionesAprendizaje automático y profundo en python: Una mirada hacia la inteligencia artificial Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de aplicaciones mediante el Framework de spring.: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 2 de 5 estrellas2/5Curso avanzado de Java: Manual práctico Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de aplicaciones mediante framework de spring: UNa panorámica del framework para J2EE más utilizado del momento Calificación: 0 de 5 estrellas0 calificacionesProgramación en Go 2ed Calificación: 0 de 5 estrellas0 calificacionesSoftware ofimático de productividad en la nube Calificación: 0 de 5 estrellas0 calificacionesJava 17 Programación Avanzada Calificación: 0 de 5 estrellas0 calificacionesDiseño conceptual de bases de datos en UML Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar con Ruby on Rails Calificación: 0 de 5 estrellas0 calificacionesXAMARIN.FORMS en acción: Aplicaciones de negocio Calificación: 0 de 5 estrellas0 calificacionesProgramación imperativa con lenguaje C Calificación: 0 de 5 estrellas0 calificacionesMachine Learning aplicado al rendimiento académico en educación superior: factores, variables y herramientas Calificación: 0 de 5 estrellas0 calificaciones
Internet y web para usted
Habilidades de Conversación para Introvertidos: Descubre cómo interactuar socialmente cómo un extrovertido natural y a ser la persona más interesante del lugar Calificación: 0 de 5 estrellas0 calificacionesCómo Eliminar Distracciones: Dispara tu Atención y Concentración Mental con Sencillos Métodos que Puedes Empezar a Usar Hoy Mismo Calificación: 5 de 5 estrellas5/5Cómo ser una Persona más Sociable: Aprende a hablar con cualquiera sin temor e incrementa por completo tu inteligencia social Calificación: 5 de 5 estrellas5/5Las Estafas Digitales Calificación: 5 de 5 estrellas5/5Conquista de las Redes Sociales: 201 Consejos para Marketeros y Emprendedores Digitales Calificación: 5 de 5 estrellas5/5Hacking Ético 101 - Cómo hackear profesionalmente en 21 días o menos! 2da Edición: Cómo hackear, #1 Calificación: 4 de 5 estrellas4/5Todo Sobre Tecnología Blockchain: La Guía Definitiva Para Principiantes Sobre Monederos Blockchain Calificación: 0 de 5 estrellas0 calificacionesMarketing en Redes Sociales: Una Guía Completa Para Hacer Crecer su Marca en Redes Sociales Calificación: 5 de 5 estrellas5/5Consejos de Redacción para los Anuncios: Cómo Escribir Publicidad que Venda Calificación: 4 de 5 estrellas4/57 Pasos Para Ser Un Pentester: Cómo hackear, #0 Calificación: 5 de 5 estrellas5/5GuíaBurros Youtube: Todo lo que necesitas saber sobre esta red social Calificación: 4 de 5 estrellas4/5SEO Copywriting. Mejora tus textos y tu posicionamiento en buscadores Calificación: 4 de 5 estrellas4/5Tu tienda online con Wordpress y Amazon Calificación: 5 de 5 estrellas5/5Marketing de contenidos. Guía práctica Calificación: 4 de 5 estrellas4/5CÓMO MONETIZAR LAS REDES SOCIALES Calificación: 4 de 5 estrellas4/5Marketing de Influencers Calificación: 5 de 5 estrellas5/5Cómo trabajar desde casa por Internet Calificación: 4 de 5 estrellas4/5Protección de Identidad: Una guía simple para la seguridad en línea Calificación: 0 de 5 estrellas0 calificacionesSEO para Amazon Calificación: 5 de 5 estrellas5/5Marketing en redes sociales 2021 Calificación: 5 de 5 estrellas5/5Deep Web: Todos los secretos y misterios de la red detrás de la red Calificación: 5 de 5 estrellas5/5GuíaBurros Linkedin: Todo lo que necesitas saber para sacarle partido a esta red social profesional Calificación: 0 de 5 estrellas0 calificacionesEl gran libro de HTML5, CSS3 y Javascript Calificación: 3 de 5 estrellas3/5Dirección de seguridad y gestión del ciberriesgo Calificación: 0 de 5 estrellas0 calificacionesDigital Detox Completo: 2 Libros en 1 - Minimalismo Digital, Desintoxicación Digital Calificación: 0 de 5 estrellas0 calificacionesMarketing de afiliación. Guía práctica Calificación: 4 de 5 estrellas4/5
Comentarios para Kotlin y Jetpack Compose. Desarrollo de aplicaciones Android
0 clasificaciones0 comentarios
Vista previa del libro
Kotlin y Jetpack Compose. Desarrollo de aplicaciones Android - Raúl Pedro Aceñero
INTRODUCCIÓN
Para desarrollar aplicaciones con UI (User Interface) o Interfaz de Usuario, ha creado Android un kit de herramientas para simplificar el desarrollo de las interfaces y aprovechar la nueva tecnología de teléfonos inteligentes o smartphones plegables. Ya que, con el anterior sistema de desarrollo en Android Studio se hubiera complicado mayormente el desarrollo de las aplicaciones.
Además, para aderezar la transición escogieron un lenguaje de código abierto, de programación funcional y orientado a objetos con calidad industrial. Es el lenguaje Kotlin, que al poseer una sintaxis más sencilla que Java y recordando a Scala permite una interoperabilidad con Java y que los desarrolladores puedan ser más productivos sin renunciar a sus programas creados en Java o aprovechar funcionalidades de Java que pueden ser invocadas en el mismo programa de Kotlin sin interferir entre los dos lenguajes.
En consecuencia, para introducir nuevos programadores se ha creado esta obra, que permitirá a los programadores noveles desarrollar aplicaciones para el sistema operativo Android, que actualmente es el de mayor uso en el mundo en los smartphones.
Para conseguir que el lector adquiera los conocimientos de programación, el libro tiene las siguientes metas:
Mostrar de forma sencilla los fundamentos de la programación: la secuencia, la bifurcación y la repetición.
Enseñar como se interactúa con la interfaz gráfica de Android.
Comprender el uso de estructuras de datos y la programación orientada a objetos.
En todo momento, el lector se vera apoyado por numerosos ejemplos prácticos, los cuales son realizados paso a paso para que el lector los comprenda completamente.
1
INTRODUCCIÓN A LA PROGRAMACIÓN
Introducción
El diccionario de la RAE define programar como Idear y ordenar las acciones necesarias para realizar un proyecto
, y es la definición que más se aproxima a la hora de realizar el acto de construir unas instrucciones para que las ejecute una CPU.
Desde los primeros ordenadores como el Colossus o ENIAC hasta los ordenadores miniaturizados en Smartphones hasta los ordenadores cuánticos, existe una necesidad de organizar y estructurar los elementos existentes en estos ordenadores para conseguir un fin. Este puede ser desde realizar una tarea tan sencilla como sumar, escribir un mensaje o clasificar una imagen y tomar ciertas decisiones, o simplemente ejecutar un programa de desencriptación que en un ordenador clásico tardaría mucho tiempo, en otro, utilizando diferentes algoritmos cuánticos tardará muchísimo menos.
[2] Fuente imagen de Wikipedia
[3] Fuente dreamstime.com
Sin embargo, en esta pequeña introducción de la historia de la informática tenemos dos elementos que se deben conjugar: el hardware y el software. Para ello, se creó la disciplina de ingeniería del software es una de las ramas de las ciencias de la computación que estudia la creación de software confiable y de calidad, basándose en métodos y técnicas de ingeniería, y brindando soporte operacional y de mantenimiento. El campo de estudio de la ingeniería de software integra ciencias de la computación, ciencias aplicadas y las ciencias básicas en las cuales se encuentra apoyada la ingeniería.[1]
[4] Fuente pexels.com
Las definiciones más reconocidas, formuladas por los siguientes prestigiosos autores:
Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978).
Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).
La ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
La ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación, y mantenimiento del software. Standard Glossary of Software Engineering Terminology.
En la Ingeniería del software una de las decisiones de vital importancia es la elección del lenguaje de programación.
La definición de lenguaje de programación es un conjunto de reglas tanto sintácticas como semánticas que le dicen al ordenador en qué orden deben ejecutarse instrucciones para alcanzar un objetivo.
Por lo tanto, para la elección del lenguaje de programación se deberán establecer los requisitos por parte de la dirección del proyecto para seleccionar el lenguaje idóneo, en la elaboración del proyecto y su consecución. Cada lenguaje está diseñado con propósitos específicos y funcionalidades preparadas para ello.
Dicha elección deberá tenerse en cuenta estos parámetros:
Compilados e interpretados: los lenguajes compilados son más rápidos que los interpretados ya que estos deben ejecutarse en un entorno virtual, aparte de leerse línea a línea se ejecutan en un entorno preparado para ello. Como consecuencia, son más lentos que los lenguajes compilados que se leen una vez, se genera el archivo ejecutable, y al estar preparados para ejecutarse en lenguaje máquina son más rápidos.
Multiplataforma: estos lenguajes no les importa en qué sistema operativo se ejecuten, como tienen un entorno virtual de ejecución, cuando se realiza la interpretación se genera un lenguaje intermedio que es el bytecode. Este puede ejecutarse en varios sistemas operativos ya que dicho entorno virtual les abstrae de los sistemas operativos que se encuentran ejecutándose en sus máquinas virtuales.
Seguridad: hay lenguajes que debido a su evolución encadenan, y además, no aprovechan los últimos avances de seguridad que ofrecen las CPU. El caso más destacado es un nuevo lenguaje de programación llamado Rust que aprovecha los últimos avances de seguridad de la CPU y está intrincado en el propio ADN de dicho lenguaje.
Se pueden hablar de muchas características de diferentes lenguajes de programación, con sus pros y sus contras. Dependiendo del objetivo a conseguir se debería realizar una tabla con las columnas correspondientes y seleccionar qué lenguaje se adapta mejor a los propósitos para el desarrollo de la aplicación que se desea construir.
Solamente se ha mencionado las tres características fundamentales, pero se deberían tener en cuenta más características como:
Curva de aprendizaje.
Soporte a largo plazo.
Experiencia de los programadores.
Librerías que tienen soporte y mantenimiento.
Facilidad para crear librerías.
Nivel de abstracción en el lenguaje:
Lenguaje primera generación: programación en binario, es trabajar directamente con el lenguaje que habla el propio ordenador.
Lenguaje segunda generación: lenguaje ensamblador, agrupa secuencias de 0 y 1 para elaborar sentencias.
Lenguaje tercera generación: lenguajes parecidos al del ser humano, pero con muchas restricciones. Se pueden citar: Python, C/C++, C#, Java, Kotlin, Rust. Estos son lenguajes imperativos, indican los pasos que se deben seguir para obtener los resultados.
Lenguaje cuarta generación: son lenguajes declarativos dicen lo que quieren obtener, pero no cómo hacerlo. El ejemplo significativo es SQL, y se añadido también Jetpack Compose en la declaración de las pantallas en el entorno de Android.
Lenguaje quinta generación: lenguajes que son capaces de entender al desarrollador y analista de aplicaciones para crear las aplicaciones que le indican con condiciones y necesidades. Se necesita inteligencia artificial para llevarlo a cabo.
Kotlin y Jetpack Compose
La elección del conjunto del lenguaje Kotlin y Jetpack Compose en IDE de Android Studio para el desarrollo de aplicaciones móviles y de multiplataforma.
La primera razón es que Kotlin y Jetpack Compose permiten ser más productivos a los desarrolladores de aplicaciones móviles. Para ello, escribir menos código afecta a todas las etapas de desarrollo: como autor, puedes enfocarte en el problema en cuestión, dado que debes realizar menos pruebas y depuraciones, y se reduce el margen de error; como revisor o compilador, tienes menos código para leer, comprender, revisar y mantener [5].
La cantidad de código que genera Kotlin es un 30% menos que Java, si además, se combina con Compose se entiende que el código solamente se escribe en Kotlin, en lugar de dividirlo entre Kotlin y XML. Es mucho más fácil revisar el código cuando está escrito en el mismo lenguaje y, a veces, en el mismo archivo, sin necesidad de alternar entre Kotlin y XML [5].
Las herramientas modernas de Android para compilar IU nativas. Simplifica y acelera el desarrollo de IU en Android para que tus apps cobren vida con herramientas potentes, API intuitivas de Kotlin y menos código. Compila IU de Android de manera más fácil y ágil [5].
La segunda razón es que Kotlin genera un bytecode más limpio que Java para la misma JVM (Java Virtual Machine):
Bytecode generado para Java. Fuente https://godbolt.org/
Bytecode generado para Kotlin. Fuente https://godbolt.org/
Se puede apreciar que es mucho mejor la generación de Bytecode para Kotlin.
La tercera razón: Android quiere ir migrando de Java a Kotlin en un futuro. Por lo tanto, empezar con un lenguaje de futuro para el desarrollo de aplicaciones móviles es lo mejor para que comiencen los programadores noveles y es muy recomendable que los programadores con experiencia vayan migrando de Java a Kotlin.
La cuarta razón es a nivel pedagógico, los lenguajes de programación tienden a la evolución convergente todos se van pareciendo e igual que la evolución biológica convergen en soluciones parecidas debido a la experiencia de los desarrolladores del lenguaje y la retroalimentación de los creadores de aplicaciones.
Mostrar en Flutter. Fuente https://docs.flutter.dev/get-started/codelab
Mostrar texto en Swift. Fuente https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
Mostrar texto en Jetpack Compose. Fuente https://developer.android.com/jetpack/compose/tutorial?hl=es-419
Como se aprecia en la comparativa de las tres muestras de texto en Compose, Flutter y Swift se parecen mucho las técnicas empleadas. Como consecuencia aprender Kotlin y JetPack Compose facilita la migración entre estas tres plataformas de desarrollo y la interoperabilidad.
Bibliografía
[1] https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software
[2] https://es.wikipedia.org/wiki/Arquitectura_de_Von_Neumann
[3] https://es.dreamstime.com/ibm-q-system-one-quantum-computer-en-consumer-electronic-show-ces-las-vegas-nevada-de-enero-image172301247#_
[4] https://www.pexels.com/es-es/foto/mujer-codificacion-en-computadora-3861958/
[5] https://developer.android.com/jetpack/compose/why-adopt#intuitive
2
FUNDAMENTOS KOTLIN Y COMPOSE
Introducción
El contenido del libro es eminentemente práctico, a medida que se desarrollen los conceptos del Kotlin se introducirán nuevas formas de construir pantalla con Compose.
Para instalar Android Studio: https://developer.android.com/studio/install?hl=es-419
Estructura de un programa en Compose
Paso 1: en Android Studio ir a File > New Project
Seleccionar Empty Compose Activity
Se llamará Tema2_tutorial_1, El SDK será la versión API 33: Android Tiramisu.
La estructura será:
Ahora se estudiarán las diversas partes del programa.
Jetpack Compose se basa en funciones que admiten composición. Estas funciones te permiten definir la IU de tu app de manera programática, ya que describen su diseño y brindan dependencias de datos, en lugar de enfocarse en el proceso de construcción de la IU (inicializar un elemento, adjuntarlo a un elemento superior, etc.). Para crear una función que admita composición, agrega la anotación @Composable al nombre de la función.
Agrega un elemento de texto
¡Primero, muestra el mensaje Hello World!
. Para tal fin, agrega un elemento de texto dentro del método onCreate. Debes definir un bloque de contenido y llamar a la función de componibilidad Text. El bloque setContent define el diseño de la actividad, donde se llaman a las funciones que admiten composición. Estas funciones solo se pueden llamar desde otras funciones del mismo tipo.
Jetpack Compose usa un complemento de compilador de Kotlin para transformar estas funciones que admiten composición en elementos de la IU de la app. Por ejemplo, la función de componibilidad Text y que está definida por la biblioteca de la IU de Compose muestra una etiqueta de texto en la pantalla.
package com.example.tema2_tutorial_1
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.tema2_tutorial_1.ui.theme.Tema1_tutorial_1Theme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Tema2_tutorial_1Theme {
// A surface container using the ‘background’ color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Greeting(Android
)
}
}
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
Tema2_tutorial_1Theme {
Greeting(Android
)
}
}
Se aprecia en gris la palabra @Composable y se tiene
Text(
text = "Hello $name!",
modifier = modifier
)
en amarillo resaltando.
Ejecución del primer programa en Kotlin y Jetpack Compose
Paso 1: crear una AVD virtual: Ir a Tools > Device Manager
También se puede acceder por un icono en la parte superior derecha del IDE:
Es el símbolo de un móvil y una cabeza del logotipo de Android.
Pulsar sobre Create device:
Se escogerá un móvil virtual que tenga Play Store, de esta forma todo el código que se desarrolle estará validado para esta en Google Play:
Se ha escogido Pixel 4 ya que es la versión más alta que admite Play Store.
Pulsar Next.
Escoger la versión Tiramisu API 33
Pulsar Next.
Añadir un nombre para identificarla, ya que puede haber más móviles virtuales y pulsar Finish.
Paso 2: creada la AVD o móvil virtual, activarla pulsando el triángulo que representa el Play
Paso 3: ejecutar el programa
Ir a Run > Run ‘app’
También se puede ir al triángulo verde que aparece en la parte superior derecha y pulsarlo.
En esta captura de pantalla se aprecia el IDE de Android Studio con el programa y la AVD o móvil virtual que muestra en programa en ejecución.
Las variables
Las variables son almacenamientos temporales en memoria del ordenador que se utilizan para guardar datos, que pueden ser utilizados en cualquier momento.
Las variables se componen de dos partes:
Identificador o nombre simbólico.
Espacio reservado en memoria.
El identificador irá asociado al espacio de memoria.
Para formar un identificador válido existen unas reglas que son:
Los identificadores solo usan letras y dígitos de ASCII y, en un reducido número de casos indicados a continuación, guiones bajos. Por lo tanto, cada nombre de identificador válido coincide con el \w+ de expresión regular. Además, no se pueden usar palabras reservadas por el propio lenguaje de programación.
Los prefijos o sufijos especiales, como los que se ven en los ejemplos name_, mName, s_name y kName, no se usan, salvo en el caso de las propiedades de copia de seguridad.[1]
Dependiendo del tipo de dato que se desea almacenar, ocupará más espacio en memoria o menos.
Hay que tener en cuenta que los ordenadores o smartphones tienen un espacio de memoria finito. Si cuando se declara una variable no se crea con el tamaño adecuado consumirá mucha memoria y también energía ya que cada bit que se utiliza para almacenar el dato conlleva un consumo de energía.
Constantes:
Son variables que solamente se les asigna una vez el valor y no podrá ser cambiado. Van precedidas de la palabra reservada val.
Ejemplo:
package com.example.tema2_tutorial_1
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.tema2_tutorial_1.ui.theme.Tema1_tutorial_1Theme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Tema2_tutorial_1Theme {
// A surface container using the ‘background’ color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Greeting(Android
)
}
}
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
//Declaración de constantes
val a: Int = 1 // asignación inmediata
val b = 2 // `Int` se infiere el tipo
val c: Int // Tipo requerido cuando no se proporciona inicializador
c = 3 // asignación diferida
//Imprimir
Text(text = Declaración de constantes
)
Text(text = "a = $a")
Text(text = "b = $b")
Text(text = "c = $c")
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
Tema2_tutorial_1Theme {
Greeting(Android
)
}
}
Se aprecia que el ejemplo tiene un pequeño problema, se superponen las diferentes salidas que genera la etiqueta Text. Puesto que no se tiene como la salida en consola de la función