Curso de Android con Java: TableLayout

diego moisset de espanes
22 Feb 202114:50

Summary

TLDREl script proporciona una guía detallada para diseñar una interfaz de usuario en un proyecto de aplicación móvil. Se discute la creación de una tabla con botones utilizando el diseño de 'TableLayout' en Android Studio. Se abordan temas como el uso de filas para organizar los botones, la adaptación de la interfaz a diferentes tamaños de pantalla y orientaciones, y la implementación de funcionalidad para manejar eventos de clic en los botones. Además, se explora la lógica detrás de un juego simple donde los botones representan casillas y se busca una secuencia ganadora. Finalmente, se incluye la integración de un botón de salida para finalizar la aplicación. El enfoque es tanto en la estructura del diseño como en la programación de la interacción del usuario y los elementos visuales adaptativos.

Takeaways

  • 📱 Se está trabajando con una interfaz de usuario que incluye una tabla de botones, diseñada para un café con nueve botones distribuidos en tres filas.
  • 🔲 Se ha utilizado una tabla para organizar los elementos de la interfaz, incluyendo un botón de salida que se encuentra fuera de la tabla.
  • 📐 Se ha creado un proyecto llamado 'Proyecto 008' y se ha utilizado la vista de diseño para visualizar y adaptar la disposición de los elementos.
  • 🧱 Se ha utilizado el 'Esqueleto de la Tabla' para establecer una estructura de tabla y se ha adaptado la posición del botón de salida en la interfaz.
  • 🔄 Se ha cambiado el diseño para que el botón de salida se encuentre en la parte inferior y se ha adaptado el tamaño de la tabla para que ocupe todo el espacio disponible.
  • 🔲 Se han agregado botones a las filas de la tabla y se ha establecido que cada fila ocupe el resto del espacio disponible utilizando 'layaway'.
  • 🔢 Se ha establecido un identificador único para cada botón de la tabla, facilitando así su referencia y manejo en el código.
  • 🔄 Se ha implementado una lógica para que los nueve botones llamen al mismo método al ser presionados, lo que permite una gestión centralizada de eventos.
  • 🔗 Se ha utilizado un enfoque iterativo para vincular los eventos de los botones con una función de presión, que gestiona el estado del juego.
  • ✅ Se ha implementado una validación para evitar que se presione el mismo botón repetidamente, mejorando así la experiencia de usuario.
  • 🏁 Se ha programado el botón de salida para finalizar la aplicación al ser presionado, utilizando el método 'finish' de la clase 'MainActivity'.

Q & A

  • ¿Qué permite definir una clase 'TableLayout' en Android?

    -Una 'TableLayout' permite definir componentes dentro de tablas, organizándolos en filas y columnas para una presentación más estructurada en la interfaz de usuario.

  • ¿Cómo se puede adaptar una interfaz de usuario en Android para diferentes tamaños de pantalla?

    -Mediante el uso de elementos de diseño adaptables como 'TableLayout', 'LinearLayout' y el atributo 'layout_weight', la interfaz se adapta automáticamente a diferentes tamaños y orientaciones de pantalla.

  • ¿Qué hace el atributo 'layout_weight' en una 'LinearLayout'?

    -El atributo 'layout_weight' en una 'LinearLayout' define la proporción de espacio que un componente ocupa en relación con el espacio restante en su contenedor cuando se expande.

  • ¿Cómo se implementa un botón para salir de una aplicación en Android?

    -Se puede implementar un botón de salida en la interfaz de usuario y asociarlo a un método que llame a 'finish()' en la 'MainActivity' para cerrar la aplicación.

  • ¿Cómo se pueden hacer que los nueve botones en una 'TableLayout' llamen al mismo método en Android?

    -Se puede utilizar un enfoque de programación orientada a eventos donde cada botón tenga un 'OnClickListener' que invoque el mismo método de presión.

  • ¿Cómo se puede establecer un margen entre los botones en una interfaz de usuario de Android?

    -Se puede establecer un margen entre los botones utilizando la propiedad 'layout_margin' en el diseño de cada botón dentro de su contenedor.

  • ¿Cómo se puede cambiar el tamaño de fuente en los botones de una interfaz de usuario en Android?

    -Se puede cambiar el tamaño de fuente en los botones utilizando la propiedad 'textSize' y especificando el tamaño en píxeles (px) o en puntos (sp) dependiendo del dispositivo.

  • ¿Cómo se puede verificar si un jugador ha ganado en un juego de tablero con botones en Android?

    -Se puede verificar si un jugador ha ganado al analizar las filas, columnas y diagonales de los botones presionados y compararlas con el patrón ganador del juego.

  • ¿Qué es un 'OnClickListener' y cómo se utiliza en los botones de Android?

    -Un 'OnClickListener' es una interfaz de Android que se utiliza para establecer un escuchador de clics en los elementos clickables como botones. Se implementa para que cuando un botón es presionado, se ejecute una acción específica.

  • ¿Cómo se desactivan los botones después de que un jugador ha ganado en un juego de tablero en Android?

    -Después de que un jugador ha ganado, se pueden desactivar los botones utilizando el método 'setEnabled(false)' en cada botón para que no sean interactuables.

  • ¿Cómo se puede adaptar una interfaz de usuario para diferentes orientaciones de pantalla como retrato y paisaje en Android?

    -Al diseñar la interfaz de usuario se pueden utilizar elementos flexibles y adaptables que se ajusten a las diferentes orientaciones de pantalla. Las pruebas se pueden realizar en el emulador o en un dispositivo real con distintas orientaciones.

  • ¿Cómo se puede mostrar un mensaje de ganador y finalizar una aplicación en Android?

    -Se puede mostrar un mensaje de ganador a través de un diálogo o una alerta y luego llamar al método 'finish()' en la 'MainActivity' para finalizar la aplicación.

Outlines

00:00

😀 Creación de un proyecto de interfaz de usuario con botones

Se describe el proceso de crear un proyecto llamado 'proyecto 008' en Android Studio. Se utiliza la vista de diseño para diseñar una interfaz con botones dispuestos en una tabla de 3 filas y 3 columnas, más un botón de salida fuera de la tabla. Se discute cómo adaptar la interfaz a diferentes tamaños de pantalla y cómo utilizar el diseño flexible para que los elementos se ajusten automáticamente.

05:02

👉 Configuración de márgenes y funcionalidad de los botones

Se aborda cómo establecer márgenes entre los botones para una mejor visualización en pantalla. Se explica cómo hacer que los nueve botones llamen al mismo método al ser presionados. Se definen referencias a los botones y se implementa el método 'presión' que se ejecutará al presionar cualquier botón. Además, se discute la implementación de la lógica para cambiar el jugador y verificar si ha ganado.

10:05

🏁 Finalización de la aplicación con validación y ajustes de estilo

Se describe la validación para evitar que se presione el mismo botón repetidamente. Se implementa la lógica para verificar si el jugador ha ganado analizando las referencias de los botones y comparándolas con la secuencia del jugador. Se discuten los ajustes de estilo, como el tamaño de fuente en píxeles. Finalmente, se explica cómo finalizar la aplicación al presionar el botón de salida, utilizando el método 'finish' para cerrar la actividad y concluir la ejecución de la aplicación.

Mindmap

Keywords

💡Línea de tiempo

La 'línea de tiempo' se refiere a una secuencia cronológica de eventos o pasos en un proyecto. En el contexto del video, puede ser una referencia a cómo se ha estructurado el desarrollo de la aplicación o cómo se ha organizado el contenido del video.

💡Clase TableLayout

TableLayout es un contenedor de diseño que permite definir componentes en una estructura de tabla, esencial para la organización de elementos en filas y columnas. En el video, se utiliza para crear una cuadrícula de botones en una aplicación.

💡Botón

Un 'botón' es un tipo de componente de interfaz de usuario que permite a los usuarios interactuar con la aplicación mediante la selección de una opción o la ejecución de una acción. En el video, se crean múltiples botones para formar una cuadrícula dentro de una TableLayout.

💡Activity

Una 'Activity' en Android es un componente de la aplicación que representa una pantalla única. Es el entorno donde se presentan los elementos de la interfaz de usuario. En el script, se menciona la creación de un proyecto en la Activity para comenzar a diseñar la interfaz de la aplicación.

💡Diseño adaptativo

El 'diseño adaptativo' se refiere a la capacidad de una interfaz de usuario para ajustarse a diferentes tamaños y orientaciones de pantalla. En el video, se destaca cómo el diseño creado se adapta a diferentes dispositivos, como teléfonos, tabletas y televisores.

💡Margen

El 'margen' es el espacio entre los bordes de un elemento y su contenido. Se utiliza para mejorar la visualización y el diseño de la interfaz de usuario. En el video, se menciona el ajuste del margen entre los botones para una mejor presentación.

💡Método

Un 'método' es una función o procedimiento en un programa que realiza una tarea específica. En el contexto del video, se habla de un método llamado 'presión' que se ejecuta cuando se presiona cualquiera de los nueve botones.

💡Condiciones de validación

Las 'condiciones de validación' son reglas que se aplican para verificar la validez de una entrada o acción en una aplicación. En el video, se implementan validaciones para evitar que se presione el mismo botón repetidamente y para verificar si el jugador ha ganado.

💡Tamaño de fuente

El 'tamaño de fuente' se refiere a la medida de la letra que se utiliza en la interfaz de usuario. Es un aspecto importante del diseño gráfico que afecta la legibilidad y el aspecto visual. En el video, se discute cómo cambiar el tamaño de la fuente para mejorar la apariencia de los botones.

💡Desactivación de botones

La 'desactivación de botones' es el proceso de hacer que un botón sea no interactuable por parte del usuario. En el contexto del video, se menciona la desactivación de los botones después de que un jugador haya ganado, para indicar el final del juego.

💡Terminación de la aplicación

La 'terminación de la aplicación' se refiere a la acción de cerrar o finalizar la ejecución de una aplicación. En el video, se describe cómo vincular el botón de 'salir' con un método que finaliza la actividad actual, cerrando la aplicación.

Highlights

Se discute sobre la creación de una interfaz de usuario utilizando una tabla con botones en una aplicación para dispositivos Android.

Se menciona el uso de la clase `TableLayout` para definir componentes dentro de tablas.

Se describe cómo posicionar un botón 'salir' fuera de la tabla en la interfaz de usuario.

Se detalla el proceso de crear un proyecto en Android Studio y utilizar la vista de diseño para visualizar y ajustar la disposición de los elementos.

Se destaca la utilidad de la pestaña 'Layout' en Android Studio para gestionar el diseño de la interfaz.

Se explica cómo utilizar el concepto de filas (`TableRow`) para organizar los botones dentro de la tabla.

Se aborda el tema de la distribución del espacio en las filas de la tabla utilizando el atributo `layout_weight`.

Se describe cómo hacer que los botones ocupen toda la altura de la fila utilizando `layout_weight`.

Se menciona la adaptabilidad de la interfaz de usuario a diferentes tipos de pantallas, como teléfonos, tabletas y televisores.

Se discute la implementación de la funcionalidad para que los nueve botones en la tabla llamen al mismo método al ser presionados.

Se detalla cómo se puede manejar el cambio de jugador mediante programación al presionar los botones.

Se aborda la validación para evitar que se presione el mismo botón repetidamente y cómo se puede implementar.

Se describe el proceso de verificar si el jugador ha ganado al final de su turno mediante un análisis de las casillas seleccionadas.

Se menciona la desactivación de los botones una vez que se ha determinado un ganador en el juego.

Se discute cómo cambiar el tamaño de fuente de los botones en la interfaz de usuario.

Se destaca la importancia de la terminación adecuada de la actividad en la aplicación utilizando el método `finish()`.

Se resume la finalización del diseño de la interfaz de usuario para el juego, utilizando herramientas de Android Studio.

Transcripts

play00:00

bueno vamos a seguir viendo otro lado

play00:02

hemos trabajando con el línea de la

play00:06

valla o un vídeo anterior vamos a ver la

play00:09

clase tablet y laia o como su nombre lo

play00:11

indica básicamente lo que nos permite

play00:13

definir una decir componentes dentro de

play00:15

tablas por ejemplo el problema típico un

play00:17

cafetín en el cual tenemos nueve botones

play00:19

tres filas y cada fila tiene tres

play00:21

elementos

play00:22

hemos dispuesto un botón salir pero ya

play00:24

fuera de la tabla propiamente dicha

play00:27

vamos a pasar a crear el proyecto en ti

play00:30

activity

play00:32

responde el proyecto proyecto 008

play00:44

vamos a ponerla en vista de diseño que

play00:48

dan cuenta que podemos ver si acá

play00:50

aparece a veces no está bien adaptado si

play00:53

uno cierra la ventana y la vuelve a

play00:56

abrir el rayado es el año que se ubica

play01:00

en los objetos cuando tenemos que bajar

play01:03

el terbio si lo que vamos a hacer en

play01:07

este caso a que es traído el esqueleto

play01:10

básicamente estable la ya lo vamos a

play01:12

disponer dentro del control hay o no lo

play01:14

vamos a volar contra el rayo ya que el

play01:16

contenido va a tener un cable la yo y un

play01:18

botón este botón salir y va a estar

play01:20

fuera el tablet la haya el tablet la ya

play01:23

los layout se encuentra fundamentalmente

play01:25

acá en la pestaña house

play01:28

si entonces antes de roja por ejemplo

play01:31

acá él

play01:33

estable lo vemos acá vamos a disponer

play01:36

primero el botón acá abajo

play01:40

que es el que va a indicar para salir

play01:43

hasta fuera de la tabla

play01:47

el botón

play01:50

para salir de la aplicación vamos al 2

play01:54

layout y vamos a disponer un tablet lado

play01:58

inicialmente vamos a hacer que ocupe

play02:00

todo

play02:02

pero ahora lo vamos a

play02:07

cambiar y que llegue hasta acá o sea que

play02:09

el botón salir se encuentra en parte

play02:11

inferior estable en la boca estable ya

play02:13

dijimos que está la pestaña alaya y nos

play02:16

agrega ya automáticamente cuatro filas

play02:18

son cuatro hojitas de la clásica row

play02:21

sintamos una tabla existe cinco ya

play02:24

estaremos otro más acá sería la misma

play02:27

altura

play02:28

tendría que estar cae esto se tendría

play02:31

cinco filas nuestros la tabla en nuestro

play02:34

caso 15 3 borramos 2 y dentro de estas

play02:38

filas disponemos los botones

play02:41

éste se ve uno

play02:48

el identificador es que va a hacer

play02:51

de 2

play02:54

el tercer botón

play02:58

de 3 y ya tenemos la primera fila ahora

play03:01

arrastramos en vez de aplastarlos a que

play03:03

es más difícil interfaz visual es mucho

play03:05

más fácil afrontar el conflicto al

play03:07

componente

play03:10

este va a ser nuestro botón 44 se llama

play03:20

él ve 5

play03:25

luís sáiz

play03:27

la última fila con los botones de 7

play03:36

de 8 y finalmente el último botón de la

play03:40

tabla 19

play03:43

como vemos el table hallado tiene mucho

play03:46

espacio libre si yo quiero que cada una

play03:48

de estas filas cada una esta fila

play03:51

estable row ocupen el resto del espacio

play03:54

en la propia notable flow se llama

play03:56

layaway y si todo es tan vacío por

play03:59

defecto si yo le pongo uno a la primera

play04:01

para ocupar todo lo que queda el resto

play04:03

pero si yo tomo la segunda también el

play04:06

peso para layaway es peso

play04:08

le doy uno y ahora otra de lo que quiera

play04:11

también le doy uno todos tienen un 1 por

play04:14

lo tanto se reparte proporcionalmente

play04:16

cada uno de esos espacios si yo quiero

play04:19

los botones tengan toda la altura que

play04:22

ocupen todo la tecla control los

play04:27

selecciona todos para hacer cambios

play04:29

simultáneos nuevos tonos selecciona

play04:31

todos

play04:33

agitan seleccionado todos porque

play04:34

descripciones de los rose en los botones

play04:36

nada más y el layout hate

play04:40

es más paren y a su vez si yo quiero que

play04:43

se expandan y ocupen todo el espacio de

play04:46

la fila y layaway para los nueve botones

play04:49

de como uno entonces expanden y toman

play04:52

todo el espacio de la fila si yo quiero

play04:54

cambiar el texto como tantos

play04:56

seleccionados de cambio el tag y algo de

play04:58

botones empiezan vacíos y si yo quiero

play05:01

también a los que aparezcan con un

play05:06

espacio margen entre botón y botón para

play05:08

que sea mejor en pantalla como está

play05:11

proponiendo el problema que aparezca un

play05:14

margen vamos a cambiar d

play05:19

la propiedad martín entonces simple omar

play05:23

chinchón no se equivoca es difícil en

play05:26

nuestro android estudio más fácil buscar

play05:28

la lupita acá y buscamos margin y nos

play05:32

posiciona la propiedad

play05:33

layout martín y la cambiamos por

play05:37

ejemplos 10 de fe y ahora si tenemos

play05:42

la interfaz ten en cuenta que este

play05:44

interfaz se va a adaptar a cualquier

play05:45

tipo de pantalla

play05:48

si fuera un celular pixel pero si fuera

play05:51

una tablet como vemos también se adapta

play05:53

perfectamente si fuera con wen y hable

play05:59

vemos que éstas también se han adaptado

play06:01

hasta cierta forma si fuera un televisor

play06:04

todos los objetos se adaptan

play06:07

vamos a dejarlo pixel lo que es el

play06:10

celular si se rota también fíjense que

play06:13

acá con esta opción puedo verlo como

play06:15

aparece si está afrontado nuestro

play06:17

dispositivo en por try and landscape

play06:20

portarretratos o landscape dijimos un

play06:24

portarretratos

play06:26

y ahora lo que vamos a plantear entonces

play06:29

es la funcionalidad la idea es que los

play06:32

nueve botones llamen al mismo método

play06:34

cómo hacemos eso bueno seleccionamos

play06:36

como vimos los nueve botones tecla

play06:39

control buscamos la propia ciencia que

play06:42

acá no aparece las propiedades porque he

play06:43

dejado activo acá en la búsqueda y vamos

play06:46

buscar la propiedad un clic todos los

play06:49

nueve botones

play06:50

llama el método precio el método presión

play06:53

por supuesto todavía nos da error porque

play06:55

no está codificado ahora sí vamos en el

play06:56

ojo de nuestra aplicación

play06:59

pero no perder por el tiempo bueno voy a

play07:01

definir las referencias de los cuatro de

play07:05

los nueve botones importes class y

play07:07

button

play07:10

defino los atributos de tipo botón los 9

play07:13

y con el find you by aid y obtener

play07:16

referencias de los nueve botones y ahí

play07:18

tengo con el fin de guayaybí la

play07:20

referencia de los nueve motores

play07:22

y tengo que plantear el método

play07:26

presión

play07:29

meto presión que lo ejecuta cada vez que

play07:33

presione alguno de los nueve botones

play07:36

importamos hacia el serviu

play07:42

la idea que cuando presione yo tengo que

play07:44

mostrar una equis con cómo definir un

play07:47

atributo

play07:50

si puede estar llamado jugador

play07:55

y acá va a empezar la equis básicamente

play07:58

cuando se presiona a algunos nueve

play08:01

botones

play08:01

yo voy a decirle variable

play08:05

con lo peor acaso voy a obtener

play08:08

referencias del parámetro ver que ahora

play08:12

si le vamos a encontrar sentido tiene

play08:13

referencia de alguno de los nueve

play08:15

botones que se presionó en la clase view

play08:17

en una clase padre de clase button pero

play08:20

yo con lo que orcas convierto y le digo

play08:22

que ve este tipo busca porque yo sé que

play08:25

los nueve botones simple de llamar acá

play08:27

al presión y acá básicamente si yo

play08:31

hiciera de puntos

play08:32

tex tex debería aparecer muestra las

play08:35

varias jugador una equis

play08:38

podemos controlarlo y debería

play08:46

si yo presionó

play08:48

vemos que aparece una equis pero igual o

play08:51

presionar siempre o persona x yo debería

play08:53

ir cambiando el jugador o sea

play08:56

básicamente después inmediatamente

play08:59

debería llamar

play09:02

cambia jugador

play09:05

el método cambia el jugador no lo

play09:07

tenemos podemos usar el mismo

play09:10

android estudio para que nos cree en

play09:12

métodos bien si supongo el nombre el

play09:13

mentor y nos lo crea básicamente para

play09:16

cambio el jugador clic jugador o sea la

play09:19

variable string es igual actualmente a

play09:22

una equis y el cic y le asignó al

play09:24

jugador 1

play09:28

y fino jugador le asignó una equis así

play09:35

que en este momento ya debería ir

play09:37

cambiando

play09:40

y el jugador lo presionó x o equis o

play09:45

equis bueno qué sucede que si yo empiezo

play09:49

a presionar el mismo botón va cambiando

play09:52

ese y este sería un error como hace una

play09:54

validación vamos a controlar que si el

play09:58

botón con get exacto el texto con el

play10:01

nuestro y lo convierto spring con l 4

play10:04

analizó si me dice que está vacío yo sí

play10:08

voy a hacer

play10:11

entonces ahora si ya está validado lo

play10:15

presione

play10:17

de que se presiona la misma no entra a

play10:20

seguir ya que está así está vacío

play10:23

solamente va a disponer si no está vacío

play10:26

no entraría y todas las veces tengo que

play10:29

verificar si gano

play10:32

para verificar ganó

play10:37

hay que pasar el string del jugador que

play10:40

vamos a analizar y para no perder tiempo

play10:43

el verificar gano lo explico pero no lo

play10:46

escribo

play10:49

copiar y pegar acá el verificar ganó

play10:53

doble paso el carácter que está jugando

play10:57

y básicamente lo primero que hago saco

play10:59

las referencias de los nueve botones la

play11:02

etiqueta que tiene nueve botones después

play11:04

de un stream vacío un equipo un ojo y

play11:07

empezó a analizar si coincide con el

play11:08

string del jugador actual la descarga no

play11:12

yo el paso con una equis o no casillas

play11:15

igual al turnos del jugador actual

play11:18

casilla 2 que es el botón que está a la

play11:21

derecha y el tercer botón que está a la

play11:23

derecha se toca analizar la primera fila

play11:26

4 5 y 6

play11:29

7 8 y 9 y ya con esto tengo realizada la

play11:33

fila a ver si alguna en fila ganado

play11:36

tocas y lo mismo en cuanto a columnas

play11:38

casilla 1 las 47 columnas las 2 las 5 y

play11:43

las 8 que la segunda columna y

play11:45

asistencialmente y luego las dos

play11:47

diagonales la principal

play11:50

la principal hemos dicho básicamente voy

play11:53

a hacer esta que está y está y dejó una

play11:55

secundaria está esta y está entonces ahí

play11:58

tenemos

play12:01

la lógica a ver todas falta importar la

play12:05

clase y todas a ésta

play12:10

y veremos x o equis o equis y porque se

play12:16

desactiva básicamente desactiva porque

play12:19

cuando gana además de mostrar mensaje

play12:22

llamamos el micrositio inhábiles para

play12:24

cada uno los botones y los desactivamos

play12:28

podemos cambiar como vemos el papi de

play12:31

otro tamaño de fuente más grande esto

play12:34

podemos minimizar y para cambiar el

play12:36

tamaño de fuente vamos a seleccionar los

play12:41

9 botones y haya una propia la vamos a

play12:44

buscar

play12:47

texas texas hay que indicar los píxeles

play12:51

no como spsp y no de p esp son píxeles

play12:55

dependiente del tamaño fuente que esté

play12:57

configurado el dispositivo porque en los

play12:59

androides no puede especificar tamaño

play13:01

listas grande muy grande normal pequeña

play13:04

entonces es lo más conveniente en vez de

play13:06

usar de p s s&p por ejemplo 50

play13:12

el gp

play13:14

y ahora si ejecutamos

play13:24

dobles x nos muestran mensaje lo único

play13:28

que nos falta es el sal ya para

play13:30

finalizar y para finalizar una

play13:32

aplicación

play13:33

dejemos hasta el un clic

play13:36

del salir a que no lo enlazamos con

play13:38

presión sino font un método que vamos a

play13:41

hacer salir

play13:50

el metro salió y debe finalizar

play13:52

aplicación la clase main activity herida

play13:55

de app compact activity de clases app

play13:59

compatibles hay un método heredado

play14:02

llamado finish que lo que hace si es a

play14:04

la actividad o si está argentada con eso

play14:07

vamos que resuelta nuestra

play14:11

aplicación completamente por ejemplo

play14:14

manu las x si yo quiero finalizar

play14:19

aplicación presiono salida y cierra la

play14:22

aplicación completamente cuando con esto

play14:25

hemos hecho un problema utilizando el

play14:28

tablet zelaya o tableta ya o como hemos

play14:32

visto se encuentra dentro de la pestaña

play14:35

de jaws

play14:38

está compuesto altable laia o

play14:40

básicamente portable road con los

play14:42

distintos elementos

play14:44

con esto que ya ha finalizado este

play14:47

tercer layout gracias

Rate This

5.0 / 5 (0 votes)

Related Tags
Android StudioInterfaz de UsuarioTableLayoutDesarrollo de AppsDiseño UIProgramaciónTutorial AndroidComponentes UIGestión de EventosDesarrollo Móvil
Do you need a summary in English?