Android Development for Beginners – Full Course

Hola a todos y bienvenidos a la clase magistral completa
de desarrollo de aplicaciones para Android. Mi nombre es Mason. Soy un desarrollador profesional de aplicaciones
Android. Y voy a ser tu instructor para esto. curso. Antes de comenzar el curso, hablemos
de ello durante unos minutos. Este curso son unas 15 horas. Y al verlo, aprenderá mucho
sobre el desarrollo de aplicaciones para Android. Pero es imposible cubrirlo todo en solo
15 horas.

Para eso grabé un extenso versión de este curso, que es de unas
60 horas. Y en eso vas a aprender todo que necesita para una carrera exitosa en el desarrollo de aplicaciones
Android. Puedes encontrar la extensión curso haciendo clic en el enlace debajo de
este video. vamos a ver a lo que vamos portada en este video. En estas 15 horas, comenzarás
desde el principio. Eso significa que incluso si no tienes ninguna experiencia
previa en programación, te irá bien. Cubriremos todo en el curso en la primera
sección del curso que establecerá. crear el entorno que necesita para el desarrollo de
aplicaciones de Android. Eso incluye instalar Kit de desarrollo de Java, kit de desarrollo de software de Android
Studio para el desarrollo de aplicaciones de Android, y emulador para probar sus aplicaciones. Además
de configurar el entorno. En el primera sección, creará una pequeña aplicación para familiarizarse
con el desarrollo de aplicaciones de Android, y cada pieza en una aplicación Android.
En la segunda sección de este curso usted aprender el lenguaje Java Java es el lenguaje más
popular para hacer aplicaciones Android y en esta sección, analizaremos en profundidad
lo que aprenderá sobre diferentes variables y operadores, bucles y declaraciones condicionales, diferentes
colecciones en concurrencia Java y comercio, manejo de excepciones, patrón Singleton
y mucho más.

También aprenderás sobre programación orientada a objetos en Java.
Eso incluye cosas como clases e interfaces, clases internas y clases abstractas, herencia y
polimorfismo. Y mucho más, lo haremos Termine esta sección con un desafío. Entonces, para
asegurarnos de que ha aprendido todo lo que tenemos hablado de. En la siguiente sección, aprenderá
acerca de las interfaces de usuario, aprenderá sobre cómo diseñar diseños modernos para sus
aplicaciones. En esta sección hablaremos sobre cosas como botones y vistas de texto, diferentes
diseños, trabajar con imágenes y fuentes que muestran una lista de elementos con ListView
y vista de reciclador. Hablaremos de merienda barras y vistas de tarjetas, agregando animaciones a sus
aplicaciones. Y por último pero no menos importante, hablaremos del diseño de materiales en Android. Una
vez más, terminaremos esta sección con un desafío para asegurarse de que ha aprendido
todo. Después de aprender Java y Al diseñar interfaces de usuario, tiene la capacidad
de crear muchas aplicaciones.

En la final sección de este curso crearemos una aplicación
del mundo real desde cero. Lo haremos combine todo nuestro conocimiento sobre el desarrollo
de aplicaciones Android y crearemos esta aplicación juntos en esta sección además de practicar
todo lo que hemos aprendido hasta ahora, aprender sobre muchos más temas. Por ejemplo,
aprenderá a conservar sus datos con preferencias compartidas. Y también aprenderá
cómo mostrar diferentes sitios web en su solicitud. Y por supuesto mucho más. También
puede incluir esta aplicación en su cartera si quieres.

Vamos a configurar
el entorno que necesitamos para crear aplicaciones Android. Vamos a instalar
algunas cosas. En primer lugar, somos va a instalar Java Development Kit o, como algunos podrían
llamarlo, JDK. Después de eso estamos va a instalar Android Studio. Y después
de todo vamos a crear un virtual dispositivo para probar nuestras aplicaciones Android.
Como puedes ver, ya he descargado JDK y Android Studio.

Veamos también de dónde podemos
conseguirlos. Para JDK, simplemente puede busque Java JDK y aparecerá un enlace del
sitio web de Oracle. El primer enlace de la página web de Oracle es probablemente nuestro
enlace necesario. Como puedes ver, vamos a descargar e instale la versión ocho de JDK, será suficiente
para nuestros propósitos en este curso, aquí abajo. En primer lugar, debemos aceptar el
acuerdo de licencia. Y después de eso, dependiendo de su sistema operativo, puede descargar
una de estas versiones. estoy en Windows, así que voy a descargar e instalar esta versión
de Windows x 64. Si no está seguro acerca de este x86 o x 64, puede hacer clic derecho en su mi
computadora en su escritorio en propiedades.

Aquí puede ver la arquitectura de su CPU menos
64 bits para usted, podría ser x86. Dependiendo de eso, seleccione uno de estos dos archivos,
simplemente haga clic en esta descarga y el debe iniciarse la descarga. A veces, como aquí,
puede pedirle que inicie sesión en su Oracle cuenta. Hagamos que crear una cuenta de
Oracle es gratis y no se le cobrará. Bien, seleccionemos Iniciar sesión. Como puede
ver, la descarga ha comenzado. voy a seleccionar la cancelación aquí porque he descargado el
JDK previamente. Seleccionemos eso. Es Va a ser un proceso de instalación realmente simple. Seleccionemos
Siguiente. Una vez más a continuación. Una vez más, hagamos
clic en Siguiente. Y como puede ver, hemos logrado JDK instalado. Hagamos clic en este más,
si desea asegurarse de que ha instalado Java JDK con éxito, siempre puede ir a su símbolo
del sistema yendo al menú de inicio y escribiendo cmd. Aquí, puede escribir la versión
de Java dash. Como puedes ver, estamos viendo alguna información sobre la versión de Java
instalada en nuestro sistema.

Mientras sea 1.8. y más alto, estamos listos para ir. Cerremos nuestro
símbolo del sistema. A continuación, vamos a descargar Estudio Android. Para eso podemos
ir a developer.android.com. Veamos developer.android.com. Durante el curso, volveremos mucho a este
sitio web porque es el oficial Sitio web para desarrolladores de Android. De acuerdo,
para descargar Android Studio, solo ve a este Andrew la ficha del estudio. Y desde aquí, puedes
descargar una de las versiones. si no lo haces ver su versión de sistema operativo, puede hacer
clic en estas opciones de descarga. Pero en aquí, solo voy a hacer clic en la descarga, digamos
descargar Android Studio, necesitamos para estar de acuerdo con los términos y condiciones.
Y como puede ver, la descarga ha comenzado. Una vez más, voy a seleccionar cancelar
aquí porque ya he descargado Estudio Android. Una vez finalizada la descarga, simplemente
haga clic en eso. Una vez más, esto va ser un proceso de instalación simple. Seleccionemos
Siguiente aquí, asegúrese de marcar esto Dispositivo virtual Android.

Seleccionemos Siguiente
aquí, debe seleccionar una ruta para instalar Estudio Android. Tenga en cuenta que la instalación de
Android Studio y todos sus SDK. Y también emuladores a veces puede tomar algo así como 20 o incluso
40 gigabytes. Así que asegúrese de tener en menos 20 gigabytes en la unidad en la que
instalará su Android Studio. Después que. Seleccionemos Siguiente e instalemos. Una vez finalizada
la instalación, simplemente haga clic en esto a continuación. Y comencemos nuestro Android Studio.
No te preocupes por estos tres proyectos que tengo aquí. Básicamente, estos son los proyectos recientes
en los que estuve trabajando. tengo android Studio instalado en mi sistema anteriormente
y lo desinstalé para este video. Pero para esta lista estaría vacía. También en el camino de la
instalación de Android Studio, es posible que ver algunas ventanas se trata de seleccionar
un tema u otras preferencias.

No los vi porque He instalado Android Studio anteriormente en
mi sistema. Esos no son importantes dependiendo en sus preferencias, seleccione una solo si
ve algo como instalar SDK en el cheque eso porque vamos a instalar todo aquí juntos.
Para instalar el SDK, debe puede llegar a esta configuración aquí. Y puede
seleccionar este SDK Manager SDK significa Kit de desarrollo de software. Y para desarrollar
aplicaciones de Android, necesita instalar al menos un SDK. Una vez más, como puede ver,
he instalado dos SDK aquí y vuelvo una API de Android nueve para usted, esta lista debe
estar vacía y ninguno de estos debe estar comprobado. En primer lugar, verifiquemos los detalles
de este paquete para ver el paquete. detalles para cada SDK.

En el momento en que estoy grabando
este video, la última versión de Android es Android 10 o también conocido como nivel 29. Para ser
precisos, le sugiero que siempre instale la última versión. Pero a veces puede haber algunas
versiones preliminares aquí, no sugiero instalarlos porque pueden tener errores. Y esos
aún no están lanzados en un establo. canal. Así que asegúrese de instalar la última
versión estable. Si quieres, puedes instalar el SDK completo. Pero no lo sugiero porque
estos pueden ser memoria y disco duro. consumidor. Y estos pueden ocupar gran parte del almacenamiento
en su dispositivo. Pero lo necesario Las cosas aquí son, en primer lugar, las versiones de SDK
de Android, cualquiera que sea la versión de su API. es. Entonces, el primero, también las fuentes para
esa versión de SDK. La segunda opción, también Sugiero que dependiendo de la arquitectura de su
sistema, seleccione una de estas dos versiones de atom mine fue 64 arquitectura.

Así que voy
a seleccionar este. si vas a trabajar con diferentes API de Google. Por ejemplo,
si va a trabajar con el mapa de Google o API de YouTube, marque una de estas, por ejemplo, esta
API de Google para atom 64 y también marque una de estas dos versiones de la API de Google.
Esto va a instalar al menos un SDK en mi sistema y retorno o API nivel 29. Pero si lo
desea, puede seleccionar e instalar múltiples Versiones SDK. Básicamente, estas versiones SDK
y API significan que en qué versión de Android ¿Va a ejecutar y probar sus aplicaciones más
adelante? Eso lo veremos cuando vayamos para ejecutar nuestra aplicación en un dispositivo
virtual, necesitará al menos un SDK, instalando varios SDK pueden consumir memoria y
también disco duro. pero si tienes los recursos, le sugiero que al menos instale
la última versión después de eso, instale este nivel de API 29. Porque hubo muchos cambios
específicamente en el almacenamiento de datos estructura también instaló API nivel 28, aquí
abajo instaló API nivel 26.

Y después eso, nivel, 21, y también 19. Porque en esta
versión de SDK, hubo muchos cambios. Y solo digo esto por mi experiencia en el desarrollo de
aplicaciones para Android. pero si no lo haces tiene los recursos adecuados, seleccionar uno de
estos va a estar bien. Después de seleccionar lo que necesita aquí, simplemente haga clic en aplicar,
asegúrese de tener un Internet estable conexión porque va a descargar algunas cosas.
Hagamos clic en este aplicar. En aquí puede ver un cuadro de diálogo que le mostrará
información sobre las cosas que están va a ser descargado y también el tamaño del archivo de
descarga. A continuación, seleccione Aceptar aquí, y debería iniciarse nuestra descarga. Voy a
saltar el video aquí hasta la descarga. Está terminado. Después de descargar e instalar
todos los componentes que ha seleccionado.

Antes de que termine, simplemente haga clic en este
final. Y veamos qué más tenemos aquí. Bien, hemos instalado con éxito al menos un
SDK, cambiemos a estas herramientas SDK. Y vamos a ver lo que necesitamos de aquí. En primer lugar, una
vez más, verifique los detalles de este paquete de espectáculos, instale una de estas herramientas de compilación SDK de
Android, le sugiero que instale la última versión. Como puede ver, el mío está instalado aquí 29.0
punto dos en ese momento es la última versión. También aquí abajo, necesitas instalar el emulador de Android,
el mío no está actualizado. así que me voy para actualizar eso. Las siguientes dos cosas que son obligatorias
son estas herramientas de la plataforma SDK y Herramientas SDK, asegúrese de seleccionar esas dos.
También aquí abajo tenemos esta documentación. para el SDK de Android. Esta opción no es necesaria,
pero nos va a ayudar mucho durante nuestra viaje en el desarrollo de aplicaciones Android.

Más
adelante veremos que estas documentaciones nos ayudará mucho cuando queramos depurar algo o cuando nos enfrentemos
a algunos errores. Así que fuertemente sugiero instalar estas documentaciones también.
La otra cosa que no es necesaria, pero sugiero instalar este instalador hexam,
será un acelerador para la velocidad de tu emulador. El emulador nativo en Android Studio
puede ser muy bajo, especialmente si tener poca memoria ram. Por esa razón, le sugiero
que instale este instalador hexadecimal. Pero hay una cosa que necesito mencionar aquí.
He visto a muchos estudiantes tener problema con este instalador de hexam, les he
visto que no pueden instalar estos hacks ellos con éxito. Esta m hexadecimal no se puede instalar
en todas las CPU. y dependiendo de la estructura de su CPU, es posible que este XM no esté instalado.
Pero hay algunas CPU, especialmente Intel Las CPU que tienen una opción especial en el sesgo de
los dispositivos es específicamente para este emulador.

Acelerador. Si eso no está habilitado, es posible que
desee habilitarlo en la configuración del BIOS como bien. Y también si por alguna razón no pudiste instalar
este atractivo instalador, este emulador acelerador. Y también para el caso, el emulador
de Android en sí, no hay necesidad preocuparse hay otra manera también. Además del
emulador nativo de Android, puede instalar emuladores externos tambien por ejemplo,
el que se que anda muy bien se llama genymotion. Aqui no voy a instalar
eso pero pondre un link para descargar genymotion en la descripción de este video.
Y además de todo esto, siempre puedes instala y prueba tus aplicaciones en el dispositivo
real que tienes. Más tarde en el Por supuesto veremos que como podemos instalar y probar
nuestras aplicaciones en nuestros teléfonos móviles. Bien, después de seleccionar todo desde aquí, simplemente
haga clic en Aplicar una vez más.

Una vez más estamos viendo la descarga la información como
Seleccionar Aceptar y que comience la descarga. Una vez más. Voy a omitir el video aquí
hasta que finalice la descarga. Una vez de nuevo Cuando finalice la descarga y la instalación,
simplemente haga clic en este final. Y nosotros he instalado con éxito plataformas SDK y herramientas
SDK justo antes de cerrar esta ventana, cambiemos a esta apariencia aquí. Desde aquí
puedes cambiar todas las preferencias. eso que quieres. Por ejemplo, puede cambiar el
tema Drácula es el tema oscuro. También tenemos este tema de alto contraste. El tema inteligente
es el tema de la luz. me voy a quedar con eso porque es bueno para propósitos de grabación.
Si quieres puedes usar fuentes personalizadas para las fuentes de tu Windows es de aquí.

También
puede cambiar el tamaño de su fuente. No voy a hacer eso. También aquí, puedes cambiar
el tamaño de fuente. También para el modo presentación. Si desea cambiar el tamaño
de sus códigos, puede buscar fuentes aquí, creo que está en esta pestaña del editor
aquí en esta fuente, puedes ver que la mía es 18, puedes aumentar o disminuir eso si
quieres. Borremos este. Y también, minimicemos este editor. Tengo otra sugerencia
para ti aquí también, en este apariencia dentro de la configuración del sistema dentro de las
actualizaciones, asegúrese de que sus actualizaciones sean siendo revisado desde un canal estable. Tenemos otros
canales como canales de desarrolladores y canales beta también asegúrese de tener el
canal estable. Otros pueden tener errores. Bien, eso es todo para instalar SDK, volveremos
a este menú de configuración más tarde en. Seleccionemos Aceptar. Bien, ahora es el momento
de instalar al menos un emulador. para eso nosotros podemos volver a seleccionar esta configuración esta vez,
podemos hacer clic en este administrador de AV AV D significa dispositivo virtual Android.

Como puedes
ver, una vez más, tengo dos dispositivos instalados aquí el píxel dos y el píxel tres, esta lista debería
estar vacía para usted. pero porque tenia Android Studio instalado en mi sistema, puedo verlos
seleccionemos este crear dispositivo visual para crear un nuevo dispositivo virtual. En primer lugar,
puede crear el suyo propio y personalizarlo. el hardware seleccionando este nuevo perfil de hardware.
Desde aquí puede nombrar su dispositivo, puede seleccionar que si es un teléfono o tableta, puede configurar
el tamaño y la resolución de la pantalla. Además, aquí puede especificar algo de memoria
RAM y todo tipo de sensores y hardware. No voy a crear mi dispositivo personalizado. En
su lugar, voy a instalar uno de los predefinidos dispositivos. Como puede ver, tengo el píxel
dos y el píxel tres aquí. Seleccionemos otro dispositivo desde aquí. También desde este panel izquierdo,
puede ver todo tipo de dispositivos como visores de TV y tabletas.

Seleccionemos un dispositivo de aquí.
Ni siquiera conozco todos estos dispositivos. Simplemente seleccionemos este píxel Excel, seleccione Siguiente.
Vale, a partir de aquí, tienes que especificar la versión de Android que se va a instalar en
este dispositivo. voy a instalar android q o nivel de API 29 en este dispositivo, por lo que primero
debemos descargarlo, seleccionemos Descargar una vez más, creo que va a ser un gran cinco.
Así que voy a saltarme la descarga. aquí hasta que finalice la descarga. Sí,
son 1,1 gigabytes. Bien, la descarga y la instalación ha terminado, simplemente haga clic en Finalizar.
Ahora podemos seleccionar la API descargada, a veces es posible que no vea la versión de la API que
está buscando. Por eso, en primer lugar, siempre puede consultar esta lista. Después de eso, puede
consultar la segunda pestaña y también la tercera pestaña. Pero vamos a instalar Android q en nuestro
dispositivo. Seleccionemos Siguiente aquí podemos personalizar nuestro dispositivo. Por ejemplo, podemos
cambiar el nombre de nuestro dispositivo, podemos cambie también la orientación predeterminada. Por ejemplo,
el paisaje y el retrato que voy a guardar. su retrato.

En este Mostrar configuración avanzada, podemos
hacer algunas personalizaciones más, por ejemplo, puedes cambiar la cámara, la red. También aquí
abajo, puedes cambiar el tamaño de la RAM, y tarjeta SD y todo tipo de personalizaciones.
No voy a cambiar ninguno de estos. estoy sólo va a hacer clic en este acabado. Y tan simple
como eso hemos instalado un nuevo emulador en nuestro dispositivo. Bien, cerremos esta ventana.
Bien, creo que es un buen punto.

Para terminar fuera de este video. En este video, hemos instalado
JDK ocho, hemos instalado Android Studio. Después de eso, instalamos SDK y
personalizamos la apariencia. Y después de todo hemos instalado un nuevo dispositivo
virtual. Vamos a crear nuestra primera aplicación, podemos
hacerlo abriendo Android Studio y Al seleccionar esto, se inicia un nuevo proyecto de
Android Studio. En primer lugar, en esta ventana, puede ver algunas plantillas. Estas plantillas son solo
algunas pequeñas aplicaciones que tienen algunos códigos escritos a algún nivel. Por ejemplo,
en esta actividad básica, puedes ver que tiene un pequeño botón y también un menú arriba
aquí. Podemos ver otras plantillas aquí, por ejemplo, una plantilla para Google Maps, tenemos
una plantilla para cajón de navegación. No preocúpate por todo esto porque aprenderemos a
crear todos estos elementos nosotros mismos mas tarde. Incluso seleccionamos esta plantilla de anuncio sin
actividad. Pero el equipo de Android son buenos muchachos, y nos han proporcionado estas plantillas. En
muchas de estas plantillas.

Puedes ver el actividad de palabras No te preocupes por esta actividad
todavía. Si recuerdas de los videos de contenido, Dije que vamos a tener una sesión completa
en la que hablaremos de actividades. y fragmentos. Pero por ahora puedes pensar en las actividades
como diferentes partes de tu aplicación. solicitud. Por ejemplo, si su aplicación tiene diferentes
páginas y la actividad es una de esas páginas, esta definición no es exacta, puede
que ni siquiera sea correcta. Pero por ahora podemos pensar en una actividad como una página de nuestra
aplicación. En nuestra primera aplicación, estoy va a guardar esta actividad vacía, que no
tiene ningún elemento, solo va a crear algunos archivos para nosotros. Pero si quieres guardarlo,
sin actividad, también puedes hacerlo.

Una vez más, más adelante, veremos cómo podemos
crear todas estas plantillas nosotros mismos. Bien, seleccionemos una actividad vacía. Y vamos a golpear
siguiente. Aquí, tenemos que proporcionar algunos información sobre nuestra aplicación. Por ejemplo,
el nombre de nuestra aplicación, voy a cambie el nombre de mi aplicación para decir, Hola
mundo. Como es un costo entre los desarrolladores. para nombrar su primer proyecto, subí de nivel
sin ninguna razón. La segunda parte, definirás el nombre del paquete para su aplicación. Este nombre
de paquete debe ser único para cada aplicación. que está siendo liberado en el mundo.

Mas tarde.
Cuando quieras publicar tu aplicación para jugar a la tienda, su aplicación se identificará con
este nombre de paquete. La convención en aquí es proporcionar el nombre de su sitio web
al revés. Por ejemplo, Mi sitio web se llama fabricante.org. Entonces, el nombre de mi paquete es o dot maker
puntea el nombre de mi proyecto. no te preocupes si no tiene ningún sitio web, si no lo tiene,
puede usar algo como ejemplo de conducta. Digamos comm dot example dot el nombre de mi proyecto.
Pero como tengo un sitio web, estoy voy a usar eso aquí, voy a decir port eso.
Una vez más, este nombre de paquete debe ser único para cada aplicación. Después
de eso, debe definir la ruta que desea para guardar su proyecto. Si lo desea, puede cambiar
esta ruta seleccionando esta carpeta aquí y seleccione la ruta pero aquí, no voy
a cambiar eso. Después de eso puedes seleccione el idioma con el que va a trabajar.

Las
aplicaciones de Android se pueden escribir con lenguaje Java, y también lenguaje kotlin.
En este curso, nos vamos a quedar con Java. Pero si quieres, actualmente estoy grabando un
nuevo curso sobre desarrollo de aplicaciones Android. con kotlin. Siéntase libre de verificar eso si quiere,
pero seleccionemos Java aquí. Después eso, necesita definir un nivel mínimo de API. Este
nivel mínimo de API aquí significa que cuántos dispositivos Android antiguos pueden instalar
su aplicación. Por ejemplo, si hace clic en en este menú desplegable aquí, puede ver la lista
de diferentes niveles de API.

Ahora mismo, el nivel mínimo de API que puedo seleccionar estos
14, pero puedo pasar al nivel de API 29, o Android 10. Para ser precisos, aquí hay un equilibrio. Si
selecciona su nivel mínimo de API muy alto, puede trabajar con muchas funcionalidades más nuevas
en Android, pero menos dispositivos podrán para instalar sus aplicaciones de Android. Por ejemplo,
si selecciono el nivel de API 29, que es la última versión, solo menos del 1% de los dispositivos
pueden instalar mi aplicación. si selecciono algo así como 19, podemos ver que el 95% de los dispositivos
en este momento pueden instalar mi aplicación, usted como desarrollador debe decidir este equilibrio
para este curso, probablemente, vamos a permanecer con el nivel API 19 para la mayoría de nuestros proyectos,
porque creo que es un buen equilibrio, y el 95 % es un buen numero Deje este cheque vacío por ahora. Además,
el uso de artefactos de Android x es obligatorio.

Desde hace unos meses, hablaremos de ello más
adelante en el curso Vamos a terminar. Y vamos a crear nuestro primer proyecto. Si es
la primera vez que estás creando tu Android aplicaciones, este proceso puede ser muy lento
porque Android Este video se va a descargar algunas cosas, por ejemplo, el archivo Gradle
de Internet, por lo que este proceso puede ser lento si es la primera vez que está
creando su aplicación.

La primera cosa aquí lo que se nota es que Android Studio ha
creado dos archivos para nosotros este archivo XML de punto principal de actividad y este archivo
java de punto principal de actividad. Estos han sido creados porque hemos seleccionado esa plantilla de actividad
vacía cuando hemos creado nuestro proyecto. Dentro de cada uno de estos archivos. Hay algunos
códigos. Una vez más, podemos crear todos estos códigos si no seleccionamos esa actividad vacía. Pero
si seleccionas eso, puedes tener algunos códigos escritos a algún nivel. La otra cosa aquí
es este panel de vista aquí abajo. Este build painting aquí mostrará el progreso de la creación
de sus aplicaciones de Android cada vez que desea ejecutar su aplicación de Android,
ya sea en el modo de depuración, que estará trabajando en todo nuestro curso.

Ya sea
en el nivel de producción, este edificio aquí se mostrará el progreso de la creación de
sus aplicaciones de Android. voy a minimizar por ahora. Y hablemos de todas las otras cosas
que estamos viendo aquí. Primero de todo, hablemos de este proyecto aquí, puedo minimizar
y maximizar eso. también hablando aquí, tenemos múltiples opciones. Por ejemplo, tenemos
esta opción de proyecto. Este proyecto La opción de vista muestra exactamente la estructura
de los archivos en su sistema. Por ejemplo, puedes maximizar cada carpeta. Si desea tener acceso a este
archivo java de punto de actividad principal, puede ir a la carpeta de la aplicación dentro de las fuentes.
Dentro de la carpeta principal dentro de la carpeta Java, puede ver que tenemos una carpeta aquí, que contiene
el archivo java de la actividad principal.

Esta es la jerarquía exacta de archivos en nuestro
sistema. Si quieres asegurarte de eso, puede hacer clic con el botón derecho en el nombre de su proyecto
y seleccionar Mostrar en el Explorador. Esta opción en aquí, abrirá el Explorador en su Windows, puede
ver que tenemos un proyecto Hello World, no te preocupes por los demás dentro de este proyecto.
Como puede ver, en la jerarquía, tenemos esta carpeta de aplicaciones. Dentro de esta carpeta de la aplicación,
tenemos una carpeta de origen, una carpeta principal, una carpeta de Java, org, puede codificar HelloWorld. Y este es el archivo
Java que estamos viendo aquí. Así que esto La vista del proyecto mostrará la jerarquía exacta
de los diferentes archivos en su sistema. Hay otra vista aquí y se llama vista de Android,
nos quedaremos con la vista de Android durante la mayor parte de este curso, porque es mucho
más fácil de seguir para los ojos.

Como tu puede ver, tenemos esta carpeta de aplicaciones. Y dentro
de eso tenemos esta carpeta Java, tenemos esto Nombre del paquete. Y dentro de eso tenemos este archivo
principal de actividad punto java, es mucho más fácil para los ojos seguir diferentes archivos. Además, además
de esta carpeta de aplicaciones, tenemos estos Gradle scripts aquí también. Antes de hablar sobre
estos scripts de Gradle, necesito hablar sobre la estructura de cada aplicación de Android. Entonces,
en la mayoría de las aplicaciones de Android, hay al menos dos tipos diferentes de archivos, los archivos
de diseño, que definirán el aspecto de su aplicación. Los archivos de diseño en Android
se llaman XML, puedes ver esta actividad archivo XML de punto principal. Si hace clic en eso,
puede ver el diseño de su aplicación. Derecha ahora solo tiene un texto simple. La otra parte
de cada aplicación de Android es Java. expediente. Si está desarrollando en lenguaje kotlin,
hay archivos kotlin. El java o kotlin archivo en la mayoría de los casos definirá la lógica
de su aplicación. Por ejemplo, lo que sucede si hace clic en un botón, o qué hacer con la
entrada del usuario, todo eso será manejado en los archivos Java o kotlin.

Además de los archivos de diseño
y los archivos Java. En todas las aplicaciones de Android. Puede haber algunos otros archivos, por ejemplo, puede
tener algunas imágenes y también algo de audio. archivos también. Esos estarán dentro de esta carpeta de Recursos,
por ejemplo, dentro de las carpetas del mapa de carne. En este momento tenemos un ícono para nuestra aplicación,
que es este ícono simple de Android. O las imágenes u otros archivos también se pueden colocar dentro
de esta carpeta de Recursos. Básicamente, esto La carpeta de recursos es para las variables estáticas o
teléfonos estáticos en su aplicación. Así que estos son los tres componentes principales de cada aplicación
de Android. Tenemos diseños, tenemos el Java, y también tenemos los archivos estáticos. Además
de estos, tenemos este archivo de manifiesto dentro la carpeta de manifiesto. Este archivo de manifiesto Vila
especifica algunas propiedades generales para su solicitud. Por ejemplo, puede ver el ícono
de su aplicación aquí también, usted puede ver el nombre de su aplicación, que es
HelloWorld, en este caso, y algunos otros propiedades o características de su aplicación.

Hablarán
sobre este archivo de manifiesto más adelante. en el curso. Pero por ahora, cerrémoslo. Tenemos
todos estos archivos diferentes en cada aplicación de Android. Pero por ejemplo,
cuando vas a descargar alguna aplicación desde Play Store, verás que solo tenemos
un archivo, un archivo apk. Eso es aplicación final que se lanzará, ¿cómo
vamos a generar ese archivo apk? Bien, en ese caso, esta herramienta Gradle aquí será útil.
gradle es una herramienta de construcción que combinará todos estos archivos y otros archivos,
y crearemos un archivo APK. No importa si desea lanzar su aplicación o
si desea probar su aplicación en un emulador, vas a necesitar Gradle
por eso vamos a trabajar mucho with El otro uso de Gradle es que si desea utilizar
el código de otras personas en su proyecto también, por ejemplo, si desea utilizar el reproductor
de YouTube en su proyecto, agregará su dependencia dentro de este archivo gradle creado aquí abajo, con
solo escribir una línea de código, Gradle descargue el código para el reproductor de video de YouTube,
tan simple como que Gradle agregará el YouTube código de jugador a su proyecto.

Y después de eso, puedes usarlo.
Entonces Gradle es una herramienta de construcción que manejará la combinación de cada archivo,
y también otros códigos y generaremos un archivo APK, hablaremos sobre diferentes scripts
de Gradle más adelante en el curso. De acuerdo, cerremos todos estos archivos adicionales. De acuerdo,
este fue el proyecto cuando podemos minimizar o maximizar este dolor desde aquí. Minimicemos
eso. Y hablemos de otros dolores disponibles en Estudio Android. Luego, aquí, también tienes
algunos dolores útiles, por ejemplo, este hacer es muy útil cuando está creando
o desarrollando aplicaciones de Android a esos son algunos trabajos que no quieres hacer
en ese momento, pero no quieres olvidar esas obras Por ejemplo, dentro de esta actividad principal,
puedo agregar una tarea tan simple como eso Puedo decir que hacer, digamos completo este.

Es solo para que los desarrolladores se recuerden
a sí mismos o a otros colegas que deben hacer algo. mas tarde. Como puede ver, esta tarea se ha agregado dentro
de esta tarea para hacer dolor también. Si usted quieres, puedes comprobar que dice que está dentro
de la actividad principal. Más adelante, haremos hablar de cómo podemos definir a las cuotas y también otros
tipos de comentarios. Así que este es uno de los otros dolores. El otro es esta terminal cenando
aquí. Esta terminal es como el comando. indicador en Windows o digamos terminal
en Linux o Mac. Y es muy útil si estás trabajando con algo como ADB o puente de depuración
de Android. Más adelante veremos el uso de ADB en nuestros proyectos. Además, es muy útil para
trabajar con bases de datos SQL lite, tenemos trabajado extensamente con este terminal en la sesión
de la base de datos. Después de eso tenemos esto nueva herramienta aquí la hemos visto cuando hemos
creado nuestro proyecto, puedes ver el progreso de cada aplicación cuando se va a construir.
En muchos casos, puede haber algunos problema cuando construimos nuestro proyecto.

Y desde
aquí, puede localizar exactamente el problema. Después de eso, tenemos este logcat aquí,
será muy útil cuando vayamos para depurar nuestras aplicaciones Android. De hecho,
vamos a trabajar mucho con este look. en Bien, minimicemos todo esto por ahora. Arriba.
Aquí tenemos algunos menús, tenemos Archivo, Vista de edición y todos estos, trabajaremos
con la mayoría de ellos, creo en el curso pero es imposible trabajar con todos ellos.
Además, hay una cosa que necesito decir aquí Cuando crea su primera aplicación, puede recibir
algunas advertencias, por ejemplo, un advertencia de representación o algún otro tipo de advertencia,
si las recibe, probablemente no haya algo mal con su aplicación, solo necesita reconstruir
su proyecto. Para eso puedes ven a esta opción de compilación aquí y haz tu
proyecto una vez más, en caso de que obtengas algunos errores la primera vez que creas tu aplicación.
A veces versiones más nuevas de Android Studio puede tener errores.

Y crear su proyecto
una vez más simplemente puede resolver su problema. Además, hay otra opción desde aquí
desde cinco, puede cerrar su proyecto y vuelva a abrirlo que puede ser útil o, en algunos
casos, es posible que desee invalidar su caché y reinicie Android Studio. Entonces, si recibe esas
advertencias o errores, podemos probar estos tres maneras diferentes para superar el problema.
Hay una herramienta muy útil que se ha agregado a Android Studio recientemente
en los últimos meses.

Y eso se llama Perfilador de Android. Agreguemos eso a este panel.
aquí abajo también. Podemos agregar eso yendo a esta vista de Windows y Profiler, será
útil para monitorear los recursos que su aplicación está usando, por ejemplo,
la cantidad de RAM la CPU que su aplicación está usando, o incluso la cantidad de red que está
usando su aplicación. Si estás en nuestro aplicación, podemos rastrear la cantidad en vivo
de diferentes recursos que nuestra aplicación va a usar. Ejecutemos nuestra aplicación y veamos
por nosotros mismos.

Puedes ejecutar tu aplicación haciendo clic en este triángulo verde desde aquí, pero
antes de eso, asegúrese de seleccionar el actual aplicación en la que estás trabajando. Y también al lado de
eso, asegúrese de seleccionar el dispositivo. En el anterior video hemos creado un dispositivo virtual y podemos
ver la lista de diferentes dispositivos virtuales disponible. Voy a ejecutar mi aplicación en estos Entonces,
a través del nivel de API 29, sin ningún motivo, solo corramos Si hacemos clic en este edificio aquí,
puede ver el progreso de la construcción, dije que incluso si va a depurar su aplicación, o
incluso si va a ejecutar su aplicación en el proceso de producción, también puede verificar
el progreso de la construcción.

Como puedes ver, este emulador ha sido abierto. Y veremos nuestra
aplicación en unos minutos. También, desde aquí abajo, puede ver el estado actual
de ejecución de su aplicación. Derecha ahora ha creado o compilado mi aplicación
con éxito y está esperando el dispositivo encender. Además, si revisa este logcat
aquí, puede ver que hay muchos de las cosas que pasan aquí. Usaremos este logcat
extensamente más adelante en el curso, para diferentes propósitos de depuración.

Minimicemos eso.
Además, si abre este generador de perfiles, verá las pistas en vivo de los diferentes recursos
que usa su aplicación. Vamos a abrir nuestro emulador. Ahora mismo tenemos esta sencilla
aplicación en la que tiene un texto predefinido llamado hola mundo. Y si lo desea, puede comprobar
la cantidad de CPU u otros tipos de recursos que su aplicación es usando, será útil cuando no esté seguro de
cuántos recursos usará su aplicación esta usando. Minimicemos eso por ahora. Si
lo desea, puede cerrar su aplicación con este botón rojo aquí, puedes detenerlo. Y también
si quieres, puedes apagar tu dispositivo. Al mantener presionado este botón de apagado, puede
decir que se apague y su dispositivo se apagará. cerrar. Como puede ver, estamos recibiendo algunas
advertencias aquí en este momento, estas son no importante. Pero si desea verificarlos, puede
hacer clic en este registro de eventos. Y todo eso sucede ya que hacemos clic en este triángulo
verde, estaremos logueados aquí. De acuerdo, minimicemos eso.

Y volvamos a nuestro archivo XML
de punto principal de actividad. Y nosotros tienen un montón de opciones aquí también. En este
momento puede ver dos vistas diferentes de su solicitud. Esta blanca se llama la vista
de diseño. Y este de aquí es el plano vista. Hay algunas ligeras diferencias entre estos
dos, por ejemplo, si tiene algunos invisibles elemento dentro de su actividad que podría no ser visible
dentro de esta vista de diseño. Pero puedes haga un seguimiento de eso dentro de la vista del plano.
Por ahora, voy a deshabilitar este plano.

View porque no vamos a trabajar con eso
solo por ahora. Para deshabilitar eso, puede hacer clic en este icono de pila. Y puedes
ver solo diseño, también podemos minimizar y maximizar eso presionando este botón más. En el
panel izquierdo aquí, puede arrastrar diferentes elementos diferentes interfaz de usuario o elementos de la interfaz
de usuario.

Por ejemplo, si desea agregar un botón a su aplicación, simplemente puede arrastrarla
así. Y este botón se agregará a su solicitud. Como puede ver ahora mismo porque se hace
clic en este elemento, puede ver diferentes atributos En el panel derecho, tenemos muchos
atributos para cada interfaz de usuario. elemento. El más importante es este ID arriba aquí.
Esta identificación es la identificación única de su elemento en el que lo usaremos para tener
acceso a este botón, por ejemplo, desde el interior del archivo Java. Más adelante hablaremos
de que si hacemos clic en nuestra vista de texto, se puede ver que tenemos diferentes atributos también.
Estos son solo algunos atributos. Si desea consultar la lista de todos los atributos
disponibles, puede hacer clic en este todos los atributos. Y se puede ver que hay
un montón de ellos. nos vamos a familiarizar con diferentes elementos de la interfaz de usuario en la sesión de la
interfaz de usuario tenemos que creo que en dos sesiones de ahora, después de la sesión de Java, hablaremos sobre
la interfaz de usuario en detalles específicos.

Además, cuando está dentro de su archivo XML, tiene dos
vistas, vista de diseño y diseño de vista de texto. vista es esta vista en la que estamos trabajando ahora
mismo. Y si volvemos a cambiar a la vista de texto, puede ver el valor exacto de cada elemento de la interfaz de usuario
en el código XML. xml es un lenguaje de marcas. Si usted es un desarrollador web, conoce el concepto de un
lenguaje de marcado.

HTML también es un marcado idioma. Los lenguajes de marcado son solo para definir algunos
elementos que el usuario va a ver, por ejemplo. ejemplo, un botón o una vista de texto, puede
ver que hay muchos atributos aquí pero que aún no saben nada de ellos.
Hablaremos de ellos más adelante. en la fuerza Entonces, hay dos formas de definir los elementos de
la interfaz de usuario. Una es que arrastras elementos simples, por ejemplo, un botón en su vista de diseño,
o desde la vista de texto, puede escribirlo, Podemos ver que tenemos un botón aquí, podemos
seleccionar todo el botón. Y podemos simplemente presione Eliminar, y ese botón se eliminará,
puede ver que ya no podemos ver eso. Además, si no tiene habilitada esta vista previa,
puede habilitarla desde aquí, solo presionemos Ctrl Z para recuperar nuestro botón. Y volvamos
a nuestra vista de diseño. estoy voy a definir una ID para este texto de Hola porque
más adelante dentro de mi archivo java, estoy voy a identificar eso y voy a trabajar con eso.
Entonces, al hacer clic en HelloWorld, usted puede ver la lista de atributos.

En la parte superior, tenemos
esta ID, podemos establecer una ID para nuestro Vista de texto. Además, si no conoce la diferencia entre
una vista de texto, editar texto y todas estos no son muy TextView es solo una forma elegante
de decir un texto simple, puede definir el DNI lo que quieras. Por ejemplo, aquí,
voy a decir mensaje de texto. Pero fíjate que hay algunas convenciones aquí, no
puede usar espacios cuando va a definir una identificación además de eso no puede usar algunos
caracteres extraños como el signo de $ 1 o un hashtag señal.

La otra convención aquí es que escriba
la primera letra en minúsculas. Por ejemplo, este equipo aquí es casos de aprendizaje.
Y también después de la primera palabra, escribes el primera letra de la segunda palabra. en letras mayúsculas.
Por ejemplo, tenemos esta m aquí, hay algunas convenciones básicas entre los programadores
presionando Enter, ahora tenemos una identificación para este hola mundo. Si volvemos
a nuestro TextView desde aquí abajo, podemos vea que para este TextView, se ha agregado un atributo
a los atributos de ID.

Así que no importa lo que hace dentro de su TextView o vista de diseño,
son básicamente lo mismo. Pero como Como puede ver, ahora mismo tenemos una advertencia
para este botón. La advertencia dice que esto El botón no está restringido a ningún lugar. Eso es
porque estamos usando este diseño de restricción para todo este archivo XML. No se preocupe por este
diseño de restricción, tenemos otros diseños como el diseño relativo y los diseños lineales también.
Pero por ahora, solo sepa que cuando usted está utilizando un diseño de restricción, que es
el caso predeterminado, cuando está creando un Android aplicación, necesita concentrar o encadenar sus
diferentes elementos al software. Por ejemplo, si no restrinjo este botón a ningún lugar,
estará flotando en el momento equivocado.

Debido a los diferentes tamaños de pantalla, no
podemos saber la posición exacta o el lugar exacto de este botón. Y ahora mismo si ejecutamos nuestra
aplicación, probablemente este botón será movido al lugar cero y cero, que es exactamente
esta esquina en nuestro diseño. En orden para superar esta advertencia, simplemente podemos agregar
algunas restricciones haciendo clic y arrastrando. Tan simple como eso, estoy restringiendo este botón
a ambos bordes de mi pantalla. También para el arriba y abajo, también puedo restringir eso.
Para la parte superior, voy a restringir eso a este TextView. Para el botón, voy a
restringirlo a la parte inferior de mi pantalla. Como puede ver cada vez que agrego una restricción,
y los atributos se agregarán a este TextView aquí también. Ahora no tenemos ese rojo. Además,
vale la pena mencionar que por defecto, cuando hemos creado este botón, cuando lo hemos
arrastrado a nuestra vista de diseño, un También se le ha agregado ID.

La idea de este
botón es solo un botón, podemos cambiar eso si quieres Por ejemplo, puedo decir btn
digamos hola, o lo que quieras. Pero en un archivo XML, el ID debe ser específico para
cada elemento. Ahora mismo este botón no hace nada. En
este video, vamos a hacer nuestra aplicación. un poco más interactivo. Por ejemplo,
vamos a cambiar el texto de este TextView haciendo clic en este botón. Para eso, necesitamos definir
este TextView en nuestro archivo Java para que que pudiéramos tener acceso a sus atributos.

Pero
antes de continuar con mi archivo java, estoy voy a cambiar a pantalla completa para que no
te distraigas con todos mis íconos hacia abajo aquí Si va a esta opción de vista aquí, aquí
abajo en la parte inferior, puede ver que tenemos pocas opciones. Voy a ir a pantalla
completa. Por el resto del curso Me voy a quedar con pantalla completa. Bien, cambiemos
a nuestra actividad principal punto java expediente. Como dije en el video anterior, pueden
ver que tenemos algo de código escrito en aquí. Y es que cuando creamos nuestro proyecto
hemos seleccionado la actividad vacía proyecto para eso ahora tenemos una actividad vacía que tiene
un archivo XML de punto principal de actividad y también la actividad principal dot archivo java. En
el futuro veremos que podemos crear Todos estos se pliega si seleccionamos ninguna actividad en el momento
de crear nuestro proyecto, pero aquí tenemos estos códigos volvieron a este nivel. Además,
tenemos este signo más aquí al lado de este importar. Si hace clic en eso, puede ver que
hemos importado algunos paquetes a este clase. Si lo desea, siempre puede minimizar
y maximizar esa entrada.

Y para el caso, puede minimizar y maximizar todos sus métodos.
Por ahora, voy a dejar estos importaciones como esta para que podamos ver lo que
estamos importando en nuestro archivo Java. No Preocúpese por todas las nuevas palabras clave que
está viendo aquí, por ejemplo, esto probablemente la clase extiende el vacío protegido. Hablaremos
de todos ellos más adelante en el curso. Pero por ahora, sepa que este método onCreate
será el punto de inicio de nuestro aplicación, significa que cuando ejecutamos nuestra
aplicación, el código dentro de estos dos rizados llaves será el código que se ejecutará primero,
una vez más, no se preocupe por el término método que usamos. Hablaremos de eso más adelante
en el curso. Así que dentro de este onCreate método, están sucediendo dos cosas, tenemos
este super.on create, no vamos a hablar de eso ahora mismo. Y después de eso, estamos
configurando algunas vistas de contenido configurando vistas de contenido estamos accediendo al archivo principal
de actividad, puede ver que tenemos esta actividad principal aquí. Básicamente significa que esta clase de
Java está relacionada de alguna manera con esta actividad.

Archivo de diseño principal. Hablaremos con más profundidad
sobre esto más adelante en el curso. Pero para ahora solo sepa que hasta este punto en nuestro
código, hemos dicho que este archivo java está relacionado con este archivo de diseño. Después de eso,
podemos escribir las cotizaciones que necesitamos. Para ejemplo, aquí voy a acceder a ese TextView
que hemos creado en el anterior video para eso puedo decir vista de texto. Como
puede ver, cuando escribo algo inteligente, la idea detrás de Android Studio sugiere algunas
opciones. Hay muchas opciones en aquí, pero el que necesito vendrá del paquete
de widgets de puntos de Android. así que en Java, tenemos clases equivalentes a los elementos de la interfaz
de usuario o elementos de la interfaz de usuario en nuestro archivo de diseño. Si vamos a definir un botón, también
tenemos esa clase en el archivo java.

En aquí vamos a utilizar la vista de texto. Entonces podemos
importar eso en nuestro proyecto también. Como Como puede ver, se ha agregado una nueva línea de código a nuestras
importaciones. Esta línea de código está importando el TextView del paquete de widgets en nuestro archivo
Java. A continuación, necesito nombrar mi TextView El nombre es opcional, y puedes ponerle el nombre
que quieras. Por ejemplo, aquí dentro, estoy voy a decir txt Hola, esta es solo la convención
básica, puedes nombrar tu clase, lo que sea desee, pero hablaremos de convenciones más adelante
en el curso, después de nombrar su TextView necesita ubicar TextView desde dentro del
archivo de diseño. Y la manera de hacer que es así, se puede decir que es igual a
que hay un método útil en cada actividad eso es útil para encontrar diferentes vistas
por sus ID. Y ese método se llama find ver por ID. Una vez más, este método es útil para encontrar
diferentes vistas, diferentes interfaces de usuario.

Elementos de sus archivos de diseño por ID de fecha
dentro de los paréntesis de este método, necesita pasar la ID de nuestro TextView desde dentro de nuestro
archivo de diseño. Y la forma de hacerlo es así, podemos escribir r r es una clase especial
en Java, que nos dará acceso a todos nuestros recursos, nuestros archivos estáticos
en nuestro proyecto. Una vez más, significa recursos, seleccionemos eso, puede decir r.id punto después de eso,
necesitamos agregar la ID de nuestras cintas que tengo que era un mensaje de texto, creo que esta identificación
aquí debe ser la identificación exacta que usted ha puesto dentro de su archivo de diseño para este
TextView, puede ver que la ID es un mensaje de texto.

Y estamos usando eso para tener acceso a nuestra vista de
texto. Entonces de esta manera usando esta multa ver por método de ID, y luego pasar la ID
en esta forma. Ahora tenemos acceso a nuestra vista de texto. Pero puedes ver que
hay un error más aquí. Y eso es porque en Java, cada vez que escribe una oración,
debe terminar sus oraciones con un punto y coma. Eso es solo sintáctico y realmente no importa,
algunos idiomas no requieren el punto y coma, pero en Java, debe colocar un punto
y coma al final de cada oración.

De acuerdo, ahora hasta este punto, tenemos nuestro TextView en
nuestro archivo Java. Ahora podemos usarlo por ejemplo, si queremos cambiar el texto de nuestro TextView podemos
decir algo como esto, podemos escribir el nombre de nuestro TextView que es txt Hola. Después
de eso podemos decir punto No te preocupes por este operador punto. Hablaremos de ello en la siguiente
sección en la sección de Java. Pero por ahora solo sepa que cuando está escribiendo
en un objeto, tiene acceso a todos sus métodos y atributos. Por ejemplo, aquí puedo ver el texto
establecido una vez más, puede ver que nosotros tener múltiples opciones.

Importemos el primero
dentro de los paréntesis de este método. Tienes que pasar un mensaje de texto. Y siempre que vayas
a pasar un texto de forma estática, siempre que va a codificar el texto, debe pasarlo
entre comillas dobles. Vamos pasa una comilla doble dentro de esta comilla
doble, te voy a saludar, por aquí. Ahora hemos cambiado el texto de nuestro TextView.
Ejecutemos la aplicación y veamos si es yendo a trabajar. Recuerde que dentro de nuestro archivo de diseño
principal de actividad, el texto es HelloWorld. Dentro de nuestro archivo Java, lo estamos cambiando
a Hola, ejecutemos la aplicación. Como puedas mira, aquí, el texto de nuestro TextView ha sido
cambiado a Hola. Aún así, nuestra aplicación no es interactivo, queremos cambiar el texto
cuando hacemos clic en este botón, no cuando ejecutamos la aplicación.

Para eso, necesitamos definir
un detector de eventos para ser precisos, un onClick listener para este botón para que cuando hagamos
clic en este botón despeguemos nuestro TextView cambios, hay varias formas de definir un onclicklistener.
Para nuestro botón, el más simple una es hacerlo dentro de su archivo de diseño
de actividad principal. Si bajas aquí adentro su elemento de botón dentro de los corchetes de anclaje
de su botón, si escribe al hacer clic, puede ver que tenemos una opción aquí.

Vamos
a pasar un nombre aquí, por ejemplo, voy para decir en btn clique, este nombre aquí será
el nombre de un método en nuestro Java expediente. Como puede ver, en este momento estamos recibiendo
una advertencia roja, dice que no existe tal método en su archivo Java. Copiemos el nombre de
aquí. Y vamos a nuestra actividad principal y crear ese método. Entonces, para crear un
método, necesitamos hacerlo fuera del alcance de este método onCreate. Y dentro
de las llaves de esta clase y hablando sobre esto, necesitamos definir nuestro método dentro
de esta clase. Y la forma de hacerlo es como esto, podemos decir public void después de eso el nombre
de nuestros métodos, que está en btn. Hacer clic un par de paréntesis, porque será el
onclicklistener. Para nuestro botón, necesitamos aceptar una visualización aquí, no se preocupe
por esta visualización aquí, hablaremos sobre todo esto en la sesión de Java.

Vamos a nombrar esta vista.
Después de eso, necesitamos un par de rizado llaves para nuestro método. Y aquí, necesitamos
poner el código que necesitamos ejecutar cuando el usuario hace clic en nuestro botón. Si vuelve al archivo
XML del punto principal de su actividad. Ahora se puede ver que el error rojo ha desaparecido. De acuerdo, vayamos
al archivo java del punto de actividad principal, Voy a cambiar el texto de nuestro TextView a Hola
cuando el usuario haga clic en nuestro botón. Entonces, para ese método, voy a mover estas dos
líneas de código dentro de este método. probablemente pueda adivinar el comportamiento de nuestra aplicación
en este momento.

Intentémoslo una vez más y veamos como va a funcionar Puedes ver que el texto
todavía dice hola mundo. Si nosotros haga clic en nuestro botón, el texto cambiará
a Hola, está bien. Pero esto no es del todo lo que nosotros queremos. Es solo saludar en este
momento, queremos saludar al usuario exacto. Por ejemplo, vamos a obtener el nombre de nuestro
usuario. Y haciendo clic en un botón estamos va a decir por ejemplo Hola puede sonar
Hola Tom y algo así vamos a obtener la entrada del usuario, la forma de obtener la entrada del usuario es
mediante el uso de algún elemento en nuestra interfaz de usuario llamado editar texto.

Pasemos a la vista de diseño. Puede
agregar un texto de edición a su proyecto yendo a esta opción de texto aquí, puede ver
que tenemos múltiples opciones. El primero uno es para la vista de texto, hemos visto la vista
de texto, es este texto de hola mundo. Después tenemos otras opciones, texto sin formato, contraseña,
correo electrónico y todas estas, todas son útiles para cuando desee obtener diferentes tipos de entradas
de usuarios. Pero para nuestro propósito aquí, vamos a utilizar texto sin formato. Texto sin
formato es solo un texto simple que vamos a obtener del usuario. Arrastremos eso a nuestra
vista. Si echas un vistazo a los atributos aquí, puede ver que su ID es editar texto.
Cambiemos eso rápidamente. Digamos EDT. nombre de texto. Debido a que estamos dentro del diseño de restricción,
también necesitamos restringir esta edición texto también.

Pero antes de eso, voy a cambiar
la restricción superior de este botón, Voy a cambiar su restricción desde la parte inferior
de este TextView hasta la parte inferior de estos editores Para eso, voy a dirigir la restricción
superior de este botón hacia abajo. de este texto de edición. Ahora agreguemos algunas otras
restricciones para este texto de edición también. Para ejemplo, para la parte superior, voy a restringirla a la
parte inferior de mi vista de texto.

Y también para los bordes. Voy a ir a los bordes de la pantalla.
Ahora mismo está demasiado cerca de nuestra vista de texto. Si quieres podemos añadir
algunos márgenes. Por ejemplo aquí, voy a digamos 70. Eso parece ser mejor. El otro atributo
que tiene cada texto de edición es este texto aquí. Estoy hablando de este atributo
aquí. Puedes ver que ahora mismo dice nombre, si quieres, puedes cambiar eso, pero
aquí, voy a borrarlo por completo, en cambio, voy a definir algunas pistas. Puede
ver este atributo de sugerencia aquí. La diferencia entre sugerencia y texto es que cuando haces clic en
tu texto de edición, la sugerencia se eliminará.

Es solo una pista para que el usuario sepa
que lo que va a ingresar dentro de este editar texto. Por ejemplo, aquí, voy a decir yo,
pueden ver que de alguna manera está atenuado afuera. Bien, ahora tenemos un texto de edición dentro de nuestro
archivo de diseño dentro de nuestro archivo Java, necesitamos para tener acceso a este texto de edición para que podamos
obtener la entrada del usuario una vez más, el punto de partida de nuestra actividad. Y nuestra aplicación es
este método onCreate. Entonces podemos hacer eso dentro de este método onCreate, podemos tener acceso a nuestro
texto de edición como lo hicimos para este TextView. Podemos decir Editar texto. Una vez más, puede
ver que tenemos una clase equivalente para este editar texto también.

Además, si echas un vistazo
aquí, puedes ver que esta línea de El código también se ha agregado a nuestra clase.
Digamos Editar texto, editar GTX. El nombre, como antes, podemos decir que es igual a encontrar la vista por ID.
Y una vez más, necesitamos pasar la identificación. de nuestro texto de edición que puedo decir r.id
dot EDTA. nombre de texto. Hasta aquí hemos definido nuestro texto de edición. Ahora, necesitamos obtener el texto
de nuestro texto de edición para que podamos decir Editar nombre de texto, dot get text, puedes ver que tenemos esta opción.
Pero esto no es suficiente, también necesitas para hacer otro nivel de conversión. Y lo hacemos
diciendo.to string. no te preocupes por este método de dos cadenas todavía, hablaremos de
eso más adelante en el curso. es solo para convertir cualquier texto que esté dentro de nuestro texto
de edición en un texto que podamos usar en nuestro archivo Java.

No te preocupes por eso. Hablaremos
de ello más adelante. Pero hay un problema con nuestro código aquí, vamos a obtener
el nombre del usuario y vamos a saludar al usuario Cuando hacemos clic en el botón. Para
eso necesitamos tener acceso a esta edición. texto dentro de nuestro método de clic en el botón.
Pero si tratas de hacer eso, por ejemplo, si diga Editar nombre de texto, puede ver que todo
está en rojo, significa que no tiene acceso a ese texto de edición dentro de este método.
Y eso es porque algo llamado alcance en Java.

El alcance de este texto de edición es
este método onCreate dentro de las llaves de este método onCreate, podemos tener acceso a estos
elementos desde adentro al hacer clic en el botón método. Para resolver ese problema, necesitamos
mover estas dos líneas de código al interior nuestro método de clic en el botón. Hagamos eso rápidamente.
Dentro de nuestro método de clic en el botón, vamos a pegarlos. Pero en este momento no estamos haciendo
nada con la entrada de los usuarios, estamos obteniendo la entrada del usuario, pero no está haciendo
nada con eso, necesitamos pasar esta línea de código al método de texto establecido.

Eliminemos rápidamente
esta línea de código. Y dentro de los paréntesis del método de texto establecido. Voy a pasar
que voy a decir Edit Text name, dot obtener text.to string. De esta manera, estamos configurando
el texto de nuestro TextView a cualquier texto está dentro de nuestro texto de edición. Ejecutemos
rápidamente la aplicación y veamos si va a funcionar. Así es como se ve nuestra aplicación y este texto de
edición en este momento. Si hacemos clic en eso, puede ver que podemos escribir algo, por ejemplo,
escribamos mi nombre. Y si hacemos clic en nuestro botón, el texto de nuestra vista de texto cambia
a Mesa, esto no es del todo lo que queríamos, queremos decir hola a mí mismo. Para hacer eso,
necesitamos hacer algunos cambios en nuestro código. También tenga en cuenta que no puse ninguna
comilla doble aquí. Y eso es porque somos pasando este texto dinámicamente a nuestro método de texto
establecido. Si quisiéramos pasar nuestro texto estáticamente necesitamos poner eso dentro de comillas dobles
pero aquí no necesitamos comillas dobles si queremos saludar al usuario, podemos decir
algo como esto, podemos decir doble cotización, agreguemos un plus aquí.

Y dentro de
estas citas de nivel, digamos hola. También agreguemos un espacio para que podamos ver todo mejor.
Esto aquí se llama concatenación. en programación, sumando los dos textos juntos,
ejecutemos la aplicación una vez más. Y Escribamos algo aquí. Digamos Mesa presionando
botón. Esta vez, puedes ver que el texto ha sido cambiado para permitir que Mesa nuestra
aplicación ahora sea mucho más interactiva. Bien, este es nuestro desafío, vamos a crear
un formulario de registro como este, van a obtener el nombre, apellido y correo electrónico
del usuario. Y al presionar este registro botón, los vamos a mostrar dentro de estas vistas de texto.
Déjame mostrarte rápidamente de lo que estoy hablando. sobre. Entonces, si tenemos un nombre, un apellido y también
un correo electrónico.

Si hacemos clic en este registro botón, los vamos a mostrar dentro de estas vistas
de texto al usuario. es solo un simple aplicación para que podamos practicar todo lo que
hemos aprendido hasta ahora. bien, quiero pausar el video aquí y crear la aplicación
simple Después de haber creado vuelva al video y vamos a crear juntos
esta misma aplicación. Espero que resuelvas el reto pero si
no, no pasa nada, vamos a crear que aquí juntos. También tenga en cuenta que cada vez
que ejecuta Android Studio, puede ver una lista de proyectos recientes en el panel izquierdo aquí. Está
bien, sigamos adelante. Y vamos a crear nuestro proyecto podemos decir iniciar un nuevo proyecto de Android
Studio. Una vez más, vamos a seleccionar esta actividad vacía. Vamos a nombrar nuestro
proyecto aquí. Voy a nombrarlo el primer desafío. o llamémoslo registro porque necesita especificar
un nombre de paquete, el mío está bien. Cambio Guardar ubicación si lo desea. Y también me quedaré
con el nivel de API 19.

Bien, sigamos crear nuestro proyecto. Comencemos por crear nuestro
archivo de diseño. voy a cerrar estos gelatinizado por ahora. Y también minimicemos este
nombre de proyecto. En primer lugar, eliminemos este texto de HelloWorld, puede hacer clic en
él y presionando Eliminar, puede eliminar ese en nuestro formulario de registro, necesitábamos editar textos,
agréguelos rápidamente. En el texto, nosotros necesita agregar tres textos sin formato aquí. Vamos a
agregarlos rápidamente, los restringiremos más tarde. en. No te preocupes por eso ahora mismo a través de editar
textos. Y también necesitamos un botón. Vamos añade eso también. También necesitábamos tres vistas de texto.
Para los textos de edición. También cambiemos los ID. Para el primero, voy
a decir Editar texto nombre de pila. Vamos también elimine este texto y también agregue algo.
Eso es lo primero.

Hagamos lo mismo cosa para los otros dos textos de edición. A veces, cuando
estás definiendo una pista, o tal vez un texto atributo para sus elementos, puede ver algunos
diálogos molestos como este aquí, puede evítelo presionando la tecla Escape en su teclado.
Está bien para el botón. Ante todo, cambiemos su ID a, digamos, registro btn.
Puedes nombrarlo como quieras. también eliminar este texto. Y digamos registrarse.
Además, puede ver que tenemos esto onClick atributo aquí, podemos definir un atributo onClick
para nuestro botón desde aquí o como hicimos en el video anterior en nuestro TextView.
Voy a definir eso ahora mismo aquí, digamos en Registro btn.

Haga clic más adelante,
crearemos este método para las vistas de texto. En primer lugar, cambiemos sus ID. Por
ejemplo, para el primero, digamos txt primer nombre. Además, cambiemos el texto a En primer lugar,
de manera similar para los otros dos. De acuerdo, y restrinjamos en gran medida todos estos elementos,
podemos hacer clic en ellos. Por el primero uno, lo limitaré al borde superior de mi
pantalla. Y también ambos lados de mi pantalla Agreguemos también un margen superior
de quizás 100. Eso parece ser mejor. Para el siguiente, voy a restringirlo a ambos bordes
del texto de edición del nombre, y también al final del texto de edición de mi nombre, agregue
un margen superior de 24. Voy a hacer lo siguiente Lo mismo para este correo electrónico.

Para el
botón, voy a hacer lo mismo, pero lo haré probablemente cambie la restricción superior. Además,
si cometiste un error, cuando estás restringiendo sus elementos, puede hacer clic en la restricción presionando
la tecla Suprimir puede eliminar la restricción, cambiemos la restricción superior
a tal vez algo como 90 db. Por el primero nombre, lo restringiré a ambos bordes de
mi botón. A veces puede no funcionar solo inténtalo una vez más. Y también la restricción superior
en la parte inferior de mi botón. Para la restricción superior una vez más, digamos 90, creo que 90 está bien.

Eliminemos
su restricción superior porque correcto ahora no estamos viendo nuestro apellido TextView. Y
vamos a agregarlo una vez más. Por el último nombre, voy a hacer lo mismo. Cambiemos el
margen de restricción superior a let's decir 24. Lo mismo para el correo electrónico. Bien,
este va a ser el aspecto de nuestra aplicación. Y ahora que hemos definido nuestro archivo de diseño, cambiemos
a nuestro archivo Java. y para encontrar el comportamiento de nuestra aplicación, voy a cerrar
esta actividad punto principal XML justo antes todo, simplemente copiemos este atributo onClick para
que no cometamos ningún error cuando definir este método en nuestro archivo Java.

En nuestros proyectos
estando dentro de la carpeta Java dentro de nuestro carpeta del paquete dentro de nuestro archivo java de punto
de actividad principal, necesito crear mi método onClick. Una vez más, puedo decir public void el nombre
de mi método, que he copiado de mi diseño archivo, dentro de los paréntesis, necesito decir vista
con V mayúscula después de esa vista con el Lord v. Y ahora he creado mi propio oyente de clic
de botón. Una vez más, no te preocupes sobre la sintaxis de este método. Hablaremos de
ello más adelante cuando hayamos hablado de Java aquí. En primer lugar voy a definir mis vistas
de texto.

Si recuerdas podemos hacer algo. como esto. Podemos decir TextView para el primero. Digamos
que el primer nombre del txt es Llamar para encontrar ver por ID r.id dot txt. En primer lugar, voy a hacer
lo mismo para el correo electrónico. Y por último, después de haber definido sus vistas de texto, es hora
de definir sus textos de edición. Tu puedes hacer que así, podemos decir Editar Texto. Para
el primero, llamémoslo editar texto primero nombre es igual a buscar vista por ID r.id punto
editar texto nombre.

Una vez más, voy para hacer lo mismo para editar texto, correo electrónico
y también editar apellido de texto. Bien, ahora nosotros tener acceso a todos los elementos de la interfaz de usuario
que queríamos. Ahora vamos a cambiar el texto de nuestro vistas de texto. Por ejemplo, para el nombre
de txt, puedo decir algo como esto, digamos decir txt primer nombre. Eso es un texto. Lo
hemos visto en el vídeo anterior. Nada nuevo aquí Digamos el nombre, más el texto de nuestro texto
de edición. En primer lugar, podemos decir Editar Envía un mensaje de texto con el nombre, no obtienes el texto.a la
cadena.

Tan simple como eso. Ahora, estamos configurando el texto. de nuestra vista de texto al texto de nuestro texto de
edición. Hagamos lo mismo con el apellido y Email. Editar apellido de texto, eso es un texto. Digamos
que el apellido, en primer lugar, fue editado texto apellido punto obtener texto. a cadena, editar correo electrónico
de texto. Eso es un texto. Lo siento, he puesto el elemento equivocado aquí. Esto debería ser
un txt. Apellido, no editar texto apellido. Lo mismo para el correo electrónico, txt email.

Ese es el texto. Digamos email plus edit text
email dot get text.to string. Ese es todo lo que necesitamos de nuestra aplicación. Vamos
a ejecutarlo. Bien, parece que hemos hecho un buen trabajo con el diseño de nuestra aplicación.
Creo que es mejor disminuir el margen. parte superior de este botón de registro y también este
texto de edición de nombre para que podamos ver todos ellos mejor. Probemos también su comportamiento
para el primer nombre, digamos Emma. Para el apellido, digamos Watson para el correo electrónico,
Sr. watson@gmail.com. Hagamos clic en esto botón de registro. Y como podéis ver, estamos
viendo el texto que queríamos. Parece que nuestra aplicación está funcionando perfectamente.
En esta sección del curso vamos a hablar sobre Java para escribir aplicaciones Java,
vamos a necesitar un ID ID significa integrado entorno de desarrollo.

Android Studio se ha construido
sobre una identificación llamada IntelliJ. Hasta que hace unos meses, podría haber comprado aplicaciones
Java correctas y dibujadas en Android Studio Creo que fue alrededor de julio de 2019, que
ya no puedes hacer eso. Y eso fue porque de una nueva versión en Gradle. He grabado un video
sobre ese problema exacto en ese momento. Y está en mi canal de YouTube. Si quieres
echarle un vistazo solo busca maquillaje en YouTube y probablemente encontrarás un video déjame
mostrarte rápidamente que este es el video que estoy hablando. Andrew the Sudo ya no es
compatible con el código Java simple.

Hagan ahora. Y también puedes ver el nombre de mi canal, así
que asegúrate de verificarlo si lo necesitas. Pero básicamente de lo que estaba hablando en ese
video era que en lugar de Android Studio, necesita usar otra identificación. Los ID más famosos
que están disponibles para escribir aplicaciones Java son Eclipse e IntelliJ. En este curso,
vamos a utilizar inteligente porque es muy parecido a Android Studio. Y además es gratis.
En ese video he hablado sobre cómo instalar identificación inteligente, asegúrese de verificar eso
si lo necesita, pero es muy parecido a instalar Android Studio además de inteligente, necesitará
JDK Java Development Kit, que tenemos ya instalado en nuestro sistema, puede obtener una identificación
inteligente del sitio web de JetBrains, vamos decir identificación inteligente. El primer enlace del sitio
web de JetBrains probablemente sea nuestro enlace necesario. Solo una cosa que estaba mencionando aquí
es que hay dos versiones, la comunidad versión y también una versión definitiva, la versión
comunitaria es gratuita.

Y también es suficiente para nuestras necesidades en este curso. Así que asegúrese
de descargar eso y después de haberlo descargado y también lo instalé vuelve a este video
para escribir aplicaciones Java. tengo inteligente instalado en mi sistema y lo voy a abrir ahora
mismo puedes crear un nuevo proyecto aquí diciendo crear nuevo proyecto. Como puede
ver, el proceso es muy parecido a Android Studio, tengo la última versión de Intelligence
ID y por eso puedo ver todas estas opciones. Es posible que no estén disponibles para usted si está utilizando
la versión comunitaria, pero pase lo que pase versión que está utilizando, debería ver esta
opción de Java aquí, selecciónela aquí necesita especificar la ruta a su JDK. Si
ha instalado JDK conmigo al principio de este curso deberías ser bueno aquí solo
puedes seleccionar la versión de tu JDK mi versión aquí es la 13.

Pero no vamos a usar
todas las funciones de Java 13. Porque Oracle no soporta esta versión de Java a largo
plazo, nos vamos a quedar con todos de las características de Java ocho. Bien, después
de haber seleccionado Java y su JDK, vamos a haga clic en siguiente, no vamos a crear nuestro proyecto
a partir de una plantilla, así que asegúrese de desmarcar esta opción. Después de eso, haga clic en Siguiente. Aquí, necesitamos
nombrar nuestro proyecto y también especificar una ubicación para el nombre de este proyecto.
Voy a decir hola mundo. Además, si no vea estas configuraciones aquí, tiene esta opción
de más configuraciones aquí, asegúrese de que el nombre de su módulo es exactamente el nombre de su proyecto.
También siéntase libre de cambiar el proyecto. ubicación si lo necesita, no voy a cambiar
eso aquí.

Hagamos clic en Finalizar. Y vamos a crear nuestro proyecto. Como puede ver, la identificación
inteligente se parece mucho a Android Studio. Y la razón de esto, una vez más, es que Android Studio
se ha construido sobre esta identificación. Cerremos este cuadro de diálogo de sugerencias. Y
cambiemos al modo de pantalla completa. y vamos a modo de pantalla completa. Una vez más, en IntelliJ
ID, puede ver este panel de proyecto que puede minimizar y maximizar que también puede moverse a través
de las carpetas en este momento porque no lo hicimos use cualquier plantilla, nuestras carpetas están vacías,
podemos crear nuestro proyecto así haciendo clic en en la carpeta de origen haciendo clic con el botón derecho
en ese nuevo paquete seleccionado, puede especificar un paquete para nuestra aplicación.

En este caso,
voy a decir para el fabricante punto vamos a decir hola mundo. Y dentro de este
paquete, podemos crear nuestras clases de Java No preocuparse por el término clase que se utiliza.
Vamos a hablar de eso en objeto. sesión orientada. Pero por ahora solo sepa que
vamos a necesitar al menos una clase de Java para ejecutar nuestras aplicaciones Java. Haciendo
clic derecho sobre nuestro paquete y seleccionando nueva clase de Java podemos crear nuestra clase Vamos
a nombrar esta clase. Hola. Como puedes ver, un Se ha creado una nueva clase Java en nuestro paquete. Y también
tenemos pocas líneas de código. Vamos minimizar nuestro panel de proyecto. Centrémonos en
esta clase java de Hello dot. Básicamente lo que tenemos aquí el paquete en el que nos encontramos
actualmente, que es orb dot maker dot HelloWorld. Y también tenemos la declaración de una clase
una vez más, vamos a hablar de clases más adelante en futuros videos.

Para tener un punto
de partida para nuestra aplicación, estamos va a necesitar al menos un método y ese método
se llama el método principal. En orden para crear ese método podemos escribir p SVM. Presionando
tab o enter, podemos tener ese método. Como puede ver, este triángulo verde se ha agregado aquí,
lo que significa que ahora podemos ejecutar nuestra aplicación a partir de este punto, hablaremos sobre
el significado de todas estas nuevas palabras clave más adelante en el curso. Pero por ahora,
sepa que para ejecutar sus aplicaciones Java, necesita al menos una clase de Java en la que tenga
un método llamado main este método principal es como el método onCreate de nuestras actividades.

Ahora podemos
escribir nuestros códigos dentro de este main método. Por ejemplo, para imprimir algo en
la consola, podemos decir algo como esto lo podemos decir s o UT o sur y al presionar tab
o enter se puede ver esta linea de codigo Línea de impresión de puntos del sistema. O alternativamente,
puede escribir esto manualmente. En lugar de usar el acceso directo, puede decir sistema, observe que
la s debe estar en otros casos, asegúrese para usar la mayúscula para nosotros. Digamos que el sistema puntea
hacia fuera. Básicamente, esta salida significa salida en aquí quiere decir que vamos a agregar
14 algo en este caso vamos a imprimir algo más adelante veremos que tenemos un in
también en el que obtendremos el usuario aporte.

Digamos System dot out dot print line,
puede ver que tenemos imprimir e imprimir línea. Por ahora vamos a usar el impreso, hablaremos
de la diferencia más adelante. en. Para imprimir algo en la consola, debe
pasarlo dentro de las comillas dobles, puedes decir algo como esto. Por ejemplo, digamos
hola mundo. Ahora si tienes la aplicación Java más simple que se puede escribir, ejecutemos
rápidamente nuestra aplicación. En orden para ejecutar nuestra aplicación Java por primera vez,
debemos hacer clic con el botón derecho dentro del curly llaves de nuestro método principal y seleccione Ejecutar hello.me.
Vamos a hacer eso. Como puedes ver, estamos imprimiendo hola mundo en nuestra consola. A veces,
si es la primera vez que ejecuta Java aplicaciones, es posible que obtenga algunos errores aquí. En
la mayoría de los casos, esos errores desaparecerían. al reconstruir su proyecto, puede llegar a este
construido arriba aquí y reconstruir su proyecto.

Una vez finalizada la reconstrucción, puede
ejecutar su aplicación una vez más con la derecha haciendo clic y seleccionando ejecutar. Hola, ese soy yo.
En la mayoría de los casos, el error debería desaparecer. Pero si tuvo algún otro problema, pregúntele también
en la sección de preguntas y respuestas del curso. tenga en cuenta que para el resto de esta sección,
no vamos a tener ninguna interfaz de usuario es posible tener una GUI de interfaz gráfica de usuario
para sus aplicaciones Java, pero debido a que este es un curso de Android y más adelante Hablamos
sobre la interfaz de usuario en las aplicaciones de Android, no vamos a usar ninguna interfaz de usuario para
nuestras aplicaciones Java, solo vamos a para entender el idioma.

Bien, ahora minimicemos
nuestro dolor redondo desde aquí. y vamos hable sobre la diferencia entre imprimir y imprimir
línea. La diferencia entre impresión y la línea de impresión es que cuando está usando la línea
de impresión, después de imprimir su texto, el cursor pasará a la siguiente línea. Ese no es el
caso con la impresión. Para ver la diferencia, digamos Sistema dot out dot print. Una vez más, pasemos
nuestro texto de hola mundo. y vamos ejecuta nuestra aplicación para ver la diferencia.
Además, si es la primera vez que vas para ejecutar su aplicación, puede hacer clic derecho dentro
del método principal y hacer clic en esta ejecución Hola punto principal. O si no es la primera vez, puede
hacer clic en este triángulo verde en el izquierda o el triángulo verde.

En la parte superior
de la pantalla, también puede ver el acceso directo para Windows es shift más fn. Si está usando Mac o
Linux, podemos pasar el cursor sobre este verde triángulo y ver el atajo. Ejecutemos la aplicación
y veamos la diferencia entre línea de impresión e impresión, puede ver que
el texto ha sido impreso, pero el cursor nunca movido a la siguiente línea. Si cambiamos estas
dos líneas de código, podemos ver la diferencia. Pero vamos a cambiar ahora. Ahora la línea de impresión es la primera
línea y la impresión es la segunda línea. Corramos la aplicación una vez más. Esta vez, puede
ver que los dos textos han sido impresos. en dos líneas separadas. Bien, ahora que conocemos
la diferencia entre imprimir y imprimir línea, hablemos de variables en Java. Pero antes de
hacer eso, voy a comentar estos dos líneas de código, puede comentarlas presionando Ctrl
más barra cuando comenta algún código en Java, significa que le está diciendo al compilador
que ignore estas dos líneas de código.

El uso del comentario es para que los desarrolladores se
recuerden algo a sí mismos o a otros colegas. importante. Por ejemplo, aquí dentro puedo decir
slash slash, digamos hacer algo, esto línea de código será completamente ignorada. El
otro tipo de comentarios aquí es como este, podemos decir slash slash para hacer después de eso
podemos decir hacer algo. Si usamos este tipo de comentario con hacer al principio de tu
comentario, puedes ver que antes que nada el color cambiará a azul. Y también si hace clic
en la pestaña de tareas pendientes aquí, Puede ver que tiene uno para hacer en su archivo.
Es muy útil cuando se trabaja con múltiples programadores. Al hacer clic en este
hacer, todos pueden ver la lista de diferentes instrumentos.

Hay más comentarios, hablaremos
de ellos más adelante en el curso. Pero por ahora solo sepa que cuando esté comentando
algo, esa línea será completamente ignorada. Bien, ahora hablemos de las variables. Las variables son
útiles cuando desea almacenar información simple. datos en su solicitud de empleo. Por ejemplo, si
desea almacenar un número o una variable de texto son útiles cuando desea almacenar algunos datos
pequeños en su aplicación Java. Por ejemplo, si desea almacenar un número o un texto,
si desea almacenar un número, lo hará como esto. Puedes decir int int significa entero
básicamente dentro de un entero, puedes almacenar números enteros, por ejemplo, números
negativos y positivos más cero. y el camino definirlos es así. En primer lugar, escribe
int después de eso, debe nombrar tu variable Por ejemplo, aquí, puedo decir que
el número este nombre aquí es opcional. Y puedes usar lo que quieras. Después de eso,
puede asignar un valor a su variable. Para ejemplo, puedo decir cinco aquí, este es el tipo
de datos de mi variable, este número es el nombre de mi variable.

Y este cinco es el valor
de mi variable al lado de los números positivos, también puede tener números negativos. Después
de haber almacenado sus variables, puede hacer alguna operación en ellos, por ejemplo, puede
imprimirlos y la forma de hacerlo es como esto, puede decir Sistema punto fuera punto imprimir
línea. Y después de eso puedes pasar tu número o cualquiera que sea el nombre de su variable.
Tenga en cuenta que aquí no he usado doble cita. Básicamente, cada vez que pasa algún texto
explícitamente, necesita pasar el cita del [ __ ], pero cada vez que pasa su
variable, no debe pasar ninguna doble cotización, ejecutemos la aplicación y veamos si
podemos ver nuestro número. Puedes ver eso el valor de nuestro número es menos cinco en este caso,
pero dentro de números enteros, no puedes tener valores decimales.

Por ejemplo, aquí, puedo
decir 5.3 anteriormente, otro tipo de variables en el que puede usar para almacenar números decimales,
pero más sobre eso en unos minutos. El otro tipo de variable que puede usar para
almacenar números enteros es larga. Vamos ver eso también. Podemos ver un largo, puedes nombrarlo
mi largo es igual a una vez más, vamos decir cinco. También imprimamos eso, digamos
System dot out dot print line y pasemos nuestro registro. Si ejecutamos la aplicación,
puede ver cinco aquí abajo. La diferencia entre long y entero es que puedes almacenar números más grandes
dentro de un pulmón. Y también una variable larga almacenará más espacios en la memoria RAM de su dispositivo para
ser exactos dentro de un número entero que no puede almacenar números tan grandes como el número de dos a
la potencia de 31.

Pero dentro de un largo, usted puede almacenar números tan largos como el número
de dos elevado a 63. Esa es la diferencia entre largo y entero. Pero, ¿qué sucede si desea
almacenar números decimales en punto flotante? numeros para eso tienes otro tipo de variables,
la primera es un doble, veamos que podemos decir doble, llamémoslo mi doble. Vamos
a asignarle el valor de 4,5. Como antes podemos imprimirlo, pasemos nuestros datos. Si ejecutamos la aplicación,
deberíamos ver el número de 4.5 impreso, usted puede ver eso aquí abajo. Así que el doble es
un tipo de variable que puedes usar en orden para almacenar números de punto flotante. La otra
opción es usar float. Veamos que como bien. Podemos decir flotar, llamémoslo mi flotador.

Una
vez más, los nombres son opcionales, puede nombra tus variables, lo que quieras, podemos
decir 4.5 aquí una vez más. pero bien ahora puede ver que estamos recibiendo un error
de lectura aquí. Y eso es porque flotando los números de punto por defecto son dobles en Java,
significa que si desea definir un flotante número, necesitas emitir tu número para que flote,
la forma de emitir tu número es así.

Después del igual, podemos abrir y cerrar un paréntesis y
dentro de los paréntesis se puede decir flotar al lanzar, le dirá explícitamente a la
ID que será un número flotante y no es un número doble. Bien, imprimamos esto rápidamente
también. Pasemos nuestro flotador. y vamos ejecute la aplicación, puede ver que una vez
más se ha impreso 4.5. Una vez más, el La diferencia entre float y double es que dentro de
un float, puedes almacenar números más pequeños. Y también la otra diferencia está en el espacio
que va a ocupar cada uno de estos en la memoria del dispositivo. Básicamente doble vista
ocupando más espacio, no usaremos flotadores tanto en este curso, solo quería mostrarles
que float existe en Java.

De acuerdo, ahora hemos visto números. Pero, ¿qué pasa si queremos
almacenar diferentes caracteres en Java, por que tenemos un tipo especial de variable que es
char, por ejemplo, podemos ver char, my char es igual a, digamos M. Observe que
cuando asigné este carácter a mi char variable, he usado esta comilla simple que
no era el caso cuando hemos trabajado con numeros diferentes Cuando está asignando un
carácter, necesita usar la comilla simple como antes podemos imprimir nuestro personaje. Pasemos
nuestro personaje. Y vamos a ejecutar la aplicación. Puedes verlos impresos aquí. Cuando usa la
variable char, no puede tener múltiples caracteres. Por ejemplo, aquí, no puedo tener
ma, puedes ver que estamos recibiendo un error. Para almacenar varios caracteres, tenemos
otro tipo de variable en la que Hablaremos de eso en un minuto. Pero antes de
hacer eso, les mostraré solo uno mas cosas. También puedes almacenar algo como esto
en tu personaje, puedes decir barra invertida u 00.

A, este es un valor Unicode especial para
símbolo registrado. Ejecutemos la aplicación y ver cuál sería el resultado, se puede
ver que la Marca Registrada ha sido impreso en nuestra consola. Cuando estás usando una
variable char. También puede asignar Unicode valores también. Puede buscar diferentes valores
Unicode. Por ejemplo, si queremos mostrar el símbolo de derechos de autor, podemos decir algo
como esto, podemos decir barra invertida use 00 a nueve. Si ha ejecutado la aplicación, deberíamos ver el símbolo
de derechos de autor Siéntase libre de buscar otros valores Unicode en Internet.

Bien, ahora
hablemos de la cuerda. Si queremos para restaurar múltiples caracteres, podemos usar una
cadena, podemos decir una cadena con mayúscula S. Después de eso, como antes, podemos nombrar nuestra
cadena, digamos mi cadena o Vamos a nombrar su nombre es igual a Mesa que significa como antes, si
queremos, podemos imprimir nuestra cadena. Vamos fascinar y vamos a ejecutar la aplicación, podemos
ver que Mesa ha sido impreso en nuestro consola. Pero habrás notado que hay una
diferencia aquí, el color de este string no es azul, como los otros tipos de variables.
Eso es debido a una muy importante diferencia entre una cadena y otros tipos de
variables. El otro tipo de variables de los que hemos hablado hasta ahora son tipos de datos
primitivos. Pero una cadena es una clase en Java, hemos hablado de clases y objetos en Java,
pero por ahora, solo sepa que cuando está usando una clase, puede tener algunas operaciones
en eso.

Por ejemplo, si escribe nombre, puede decir punto y puede ver una lista de diferentes
métodos disponibles. Hablaremos de algunos de ellos más adelante en el curso. Pero se puede
ver que hay muchos de ellos. entonces la diferencia aquí es que la cadena es una clase, pero otros
son tipos de datos primitivos. Hay otro tipo de variables de las que voy
a hablar aquí, y se llama Boolean. Veamos eso también. Podemos decir booleano, mi booleano,
digamos que es igual a verdadero cuando está utilizando un booleano, ese booleano solo puede tener
valores verdaderos o falsos. Estos son los únicos dos valores que puede tener un booleano. Una vez más, como
antes, podemos imprimir nuestro booleano. Vamos pasa mi booleano aquí. Y ejecutemos nuestra
aplicación, puedes ver que cierto ha sido impreso. Como dije, Our Boolean también puede tener
valores falsos, ejecutemos la aplicación.

False ha sido impreso. Boolean es muy útil cuando
trabaja con declaraciones condicionales. Hablaremos de declaraciones condicionales en el
próximo video. Bien, esta fue nuestra charla. sobre diferentes variables en Java, hay algunas
más de estas en las que puede consultar consulte la documentación de Oracle, pero probablemente
no necesitará los demás. Estas son todo lo que vamos a utilizar en este curso.
Bien, ahora que hemos hablado de variables, también hablemos rápidamente de los operadores
aritméticos. Pero antes de eso, voy a comentar. todas estas líneas de código, porque pueden
distraer. La razón por la que estoy comentando estas lineas de codigo y no borrarlas
es que voy a subir el codigo fuente para que si lo necesitas, puedas comprobar el código fuente.
De acuerdo, sigamos adelante aquí abajo, vamos a definir rápidamente dos nuevos números enteros, puedo decir
que int a es igual a seis. Después de eso, digamos int b es igual a digamos dos. Puede utilizar
operadores en Java para realizar algunas tipo de operación en su variable.

Tenemos diferentes
tipos de operadores. El primero de lo que vamos a hablar aquí se llama
operadores aritméticos. vamos rápido verlas. Por ejemplo, aquí puedo decir que la respuesta
es igual a a más b. Este plus es el primero operador aritmético del que vamos a hablar
pensando, este va a sumar el valor de B a A, imprimamos rápidamente nuestra respuesta. Y vamos
a ejecutar nuestra aplicación, puedes ver que el respuesta es ocho, ha agregado B a A. El otro
tipo de operador aritmético que estoy vamos a hablar aquí es menos del cual puedes
adivinar su valor, se va a deducir B de a, la respuesta aquí debería ser cuatro,
podemos ver que se ha impreso cuatro. los el otro es la estrella, que se usa para multiplicar
los dos valores aquí, la respuesta debe ser seis por dos, que va a ser 12.
Ejecutemos la aplicación.

Y tú puede ver 12 aquí, el otro es slash, que
se usa para la división, vamos a divide seis por dos, vamos a ejecutar la aplicación,
podemos ver que la respuesta es tres. La cosa que debe tener mucho cuidado con este operador
de barra inclinada aquí es que el segundo el número V en este caso nunca debe ser cero.
Cambiemos rápidamente el valor de b a cero.

Y vamos a ver cuál será el resultado. Ejecutemos
la aplicación, puedes ver que estamos obteniendo un error de lectura aquí estamos obteniendo
una excepción aritmética. hablaremos de excepciones más adelante en el curso. Pero por ahora
solo sepa que cada vez que ocurre una excepción, nuestra aplicación falla. Ciertamente no queremos ese
comportamiento en nuestra aplicación. Asi que tenga cuidado con el segundo número. O, alternativamente,
debe capturar la excepción que cree que podría ocurrir. Hablaremos de excepciones más
adelante en el curso, tenemos un tipo más del operador aritmético en Java, y eso
se llama resto.

Veamos eso también. Es la persona por lo que el operador resto
nos dará el resto de una división por b. En este caso, si dividimos seis por dos,
la respuesta es tres. y su resto es cero. Entonces, ahora mismo, si ejecuto la aplicación,
debería ver cero. Puedes ver que cero tiene ha sido impreso aquí. Pero si cambio el
valor de a, digamos cinco. Ahora el resto de cinco dividido por dos es uno. A ver
que si podemos ver uno. si, ha sido impreso de vez en cuando, este operador de resto
también puede ser útil. Hay una cosa más que necesito hablar sobre el operador de barra oblicua el
operador de división en este momento podemos esperar que si dividimos cinco por dos, deberíamos ver 2,5.
Vamos a ejecutar la aplicación y ver si podemos ver que podemos ver que estamos obteniendo
dos como respuesta.

Y eso es porque tenemos guardó la respuesta dentro de un número entero.
Si recuerdas al principio de este video, yo dijo que los números enteros solo pueden contener números
enteros. Si quieres tener un punto flotante números, puede usar algo como el doble. Pero
esto de aquí no va a funcionar tan bien, porque la respuesta en sí es un número entero. Si
pasa el cursor sobre el resaltado, puede ver que a dividido por b es un entero. Si desea
convertir su número en un doble después el signo igual, puede abrir y cerrar paréntesis y
dentro de los paréntesis puede decir Java, de esta manera has convertido un número entero en un doble.
Ahora si ejecutamos nuestra aplicación, se puede ver que estamos viendo 2.5 así que si quieres ver el
valor exacto de la división usa dobles. Vamos solo hable un poco más sobre el operador más. Después
de eso termina este video. tan bien Ahora, si uso más aquí, puedes adivinar la respuesta,
cinco más dos son siete.

Corramos la aplicación. Podemos ver siete aquí abajo,
también podemos usar este plus con diferentes textos. Por ejemplo, si tengo que enviar un mensaje de texto aquí,
digamos que el nombre de la cadena es igual a, digamos decir, Ema. Definamos también otro texto. Digamos
que el apellido es igual a Watson, nosotros puede usar el operador más para agregar estos dos
textos juntos. Por ejemplo, digamos una cadena. Nombre completo es la llamada al primer nombre, más nuestro
apellido. Si imprimimos nuestro nombre completo, usted puede adivinar cuál sería el resultado. Aquí
podemos ver al Sr. Watson. agreguemos tambien un espacio aquí para ver todo mejor.
El Sr. Watson ha sido impreso. Este aquí se llama concatenación en Java, agregando dos
textos juntos. Entonces puedes ver que esto El operador plus tiene dos usos, se puede usar para
concatenar dos textos juntos o cuando sea lo usamos con diferentes números, actuará
como el operador de suma. Vamos para hablar de más operadores en Java. En concreto,
hablaremos de relacional y lógico.

Operadores. Antes de hacer eso, creemos rápidamente
nuestro proyecto seleccionando crear nuevo proyecto seleccionando Java y haciendo clic en siguiente.
Y a continuación, una vez más, podemos nombrar nuestro proyecto. Llamemos a este proyecto operadores.
Creamos nuestro proyecto. Y dentro de la fuente carpeta, vamos a crear nuestro paquete. Digamos
nuevo paquete. Llamémoslo orco. Ese es mi operadores de punto de código. Dentro de nuestro paquete, creemos
nuestra clase principal. Vamos a nombrar esta clase principal. Dentro de nuestra clase principal, vamos a necesitar
nuestro método principal. Escribamos PS VM. Al presionar tab, tenemos nuestro método principal.
Antes de hablar de relacional y lógico operadores. Hablemos rápidamente un poco más sobre
los operadores aritméticos. Si recuerdas de el video anterior, cuando tenemos que encontrar un
nuevo entero, por ejemplo, a y le asignamos un valor al que podríamos haber dicho algo así,
podríamos haber dicho en respuesta es igual a un más dos. O en lugar de definir un nuevo
entero, podemos decir que a es igual a a más dos, significa que aumenta el valor de
i en dos, imprimamos a y veamos qué sería ser su resultado.

Ejecutemos nuestra aplicación porque es
la primera vez que voy a decir ejecutar principal dot Hola, puedes ver que el valor de a es siete,
podemos simplificar esta línea de código, podemos decir algo como esto, voy a comentar
eso, y aquí, puedo decir un más igual a, agreguemos también algunos espacios,
estas dos líneas de código son exactamente iguales, puede usar más igual para simplificar la línea
seis, ejecutemos nuestra aplicación. Una vez de nuevo, puedes ver que el resultado es el mismo.
Además, si queremos aumentar a en uno, por ejemplo, si quieres decir que a es igual
a más uno, podemos hacer algo como esto, podemos decir un más igual a uno. O alternativamente,
podemos decir un plus plus, que es posible como bueno, este a plus plus va a aumentar el valor
de A en uno. Si ejecutamos nuestra aplicación, deberíamos ver seis como el valor de a, puedes ver
seis aquí abajo. Alternativamente, podemos use menos también, podemos decir a menos
menos deducirá uno del valor de a, si estás en nuestra aplicación, podemos ver cuatro
en la consola.

Similar a eso podemos decir un menos igual a digamos dos. Por ejemplo. En este
caso, si ejecutamos nuestra aplicación, debería ver tres como el valor de igual menos igual.
También puede haber multiplicado igual y también dividido por igual significa que divide
a por dos y almacena el valor o a almacena el La respuesta dentro de esta oración aquí es la versión
simplificada de esta línea de código que Voy a escribir que podemos decir que a es igual
a A dividido por dos, ambas líneas son lo mismo.

Si quiere asegurarse de eso, puede
eliminar esta línea y puede ejecutar su solicitud. cinco dividido por dos es 2.5. Porque estamos
guardando que dentro de un entero, el la respuesta debe ser dos. Entonces deberíamos ver
dos como el valor de nuestra a y puedes ver dos aquí abajo. Antes de hablar de operador
lógico y relacional. solo quería hablar de estas simplificaciones. Bien, ahora
hablemos de relacional y para ser específicos. Los operadores de comparación en Java Los operadores de comparación
son útiles cuando desea comparar dos cosas. Por ejemplo, dos números. Antes de eso,
definamos rápidamente dos números. Voy decir int a es igual a cinco Después de eso,
digamos que int b es igual a, digamos tres. Después de eso, podemos decir que la respuesta booleana es
igual al primer operador de comparación que estoy vamos a hablar aquí es mayor que el operador.
Y la manera de definir eso es como esto, podemos decir, a mayor que B, he guardado
el resultado de esta comparación dentro un valor booleano, este corchete de anclaje izquierdo aquí
significa mayor que el operador, significa que si a es mayor que B, asignó el valor de verdadero
a esta respuesta, ahora mismo, si imprimimos nuestra respuesta deberíamos ver a través, hagámoslo rápidamente.
Veamos respuesta.

Y vamos a ejecutar nuestro aplicación, puede ver que la respuesta es verdadera,
porque A es cinco y cinco es mayor que tres, el otro tipo de operador de comparación
es menor que, y ese es este ángulo recto paréntesis, en este momento, a no es menor que b, por lo
que la respuesta debería ser falsa. Si ejecutamos nuestro application, deberíamos ver false en la consola.
Y podemos ver que el otro tipo de comparación El operador del que voy a hablar aquí es
útil para cuando quieres comparar el igualdad entre dos enteros.

Y ese operador son estos
dos signos iguales, ahora mismo, a es no es igual a b. Entonces, si ejecutamos nuestra aplicación,
deberíamos ver las caídas en nuestra consola. Vamos ejecutar nuestra aplicación. Y aquí podemos ver falso.
Recuerde que cuando estamos usando dos iguales signos, significa que estamos comprobando la igualdad
de dos números. Pero cuando estamos usando un solo signo igual como aquí y arriba, aquí,
estamos asignando un valor a nuestra variable.

Cambiemos el valor de b a cinco. Para ver
que si esto va a ser cierto, vamos a ejecutar la aplicación. Ahora puedes ver
que la respuesta es verdadera. Tenemos otros tipos de operadores de comparación también. Uno de ellos
es mayor que igual. Cuando usamos esta izquierda soporte de anclaje. Y también este signo igual,
significa que comprueba si a es mayor que B, o si a es igual a b, ahora mismo, a es igual a b. Así que
esta respuesta debería ser cierta. Si nosotros ejecute nuestra aplicación, deberíamos ver a través,
puede ver que aquí abajo vemos verdadero.

También, si A es cinco y B sería algo así como tres,
si ejecuta la aplicación, deberíamos ver a través una vez más, podemos ver a través.
Pero si cambiamos el valor de a de cinco a algo así como dos, porque ninguna de estas condiciones
es cierta, en este momento, deberíamos ver falso, vamos a ejecutar nuestra aplicación. Y podemos
ver falso, el otro operador de comparación es menos que igual. Y lo usamos así, podemos usar
este paréntesis de ángulo recto e igual firmar esto aquí significa que verificar si a es
menor que b, o si a es igual a b, correcto ahora, a es menor que b. Entonces, la respuesta debería ser
verdadera si ejecutamos nuestra aplicación, deberíamos ver a través de. Pero si cambiamos el valor de
a a algo así como cinco, deberíamos ver falso.

Y podemos ver falso. Además de estos, también tenemos
otro tipo de operador de comparación. Y esa es esta explicación Marque más el signo
igual esto aquí significa que verifique si A no es igual a b, este signo de exclamación aquí
tiene un significado negativo para nuestro igual operador ahora mismo, a no es igual a b. Así que la respuesta
debería ser verdadera. Si ejecutamos nuestra aplicación debemos ver de cabo a rabo ha sido presentado.
Bueno, estas fueron las comparaciones. operadores de los que iba a hablar, siéntete
libre de practicarlos porque estamos Los vamos a usar mucho en nuestro curso. A continuación
voy a hablar de los operadores lógicos en Java. Pero antes de eso, comentemos rápidamente estas
dos líneas de código aquí abajo, vamos a definir un nuevo booleano, digamos que la respuesta booleana
es igual a dejarme escribir la sintaxis y yo hablaremos de ello, podemos decir que a es igual
a cinco, o digamos que B es igual a algo como dos Este es nuestro primer operador lógico esto
aquí significa o puede agregar estos dos canalizaciones mediante el uso de shift más barra invertida barra invertida
está en algún lugar por encima de la entrada en el teclado en inglés.

Aquí, este operador OR significa que si a
es igual a cinco, o si b es igual a dos, asigne a través de esta respuesta, si ninguna de estas
condiciones es verdadera, entonces asigne falso a esta respuesta, ahora mismo, a es igual a cinco al menos
una de nuestras condiciones es verdadera. Asi que la respuesta debe ser verdadera. Entonces, si imprimimos
nuestra respuesta, deberíamos ver a través, corramos la aplicación. Y puedes ver aquí abajo,
si cambiamos el valor de a, por ejemplo a seis, porque ninguna de estas condiciones es verdadera,
deberíamos ver falso. Ejecutemos la aplicación. Y luego aquí podemos ver falso. El otro
tipo de operador lógico que voy a hablar es añadir ciencia. Veamos rápidamente
eso también.

Esto de aquí es un operador significa que asigne hasta la respuesta si
ambas condiciones son verdaderas, si A es igual a cinco y también si B es igual a dos si una
de estas condiciones no es cierta, entonces asigne falsa la respuesta en este momento, ninguna de estas
condiciones es verdadera. Entonces deberíamos ver falso como nuestra respuesta. Ejecutemos la aplicación. Y
como puedes adivinar, vemos falso. Si nosotros cambie el valor de a a cinco, y ejecute nuestra
aplicación, una vez más, deberíamos ver falso, porque la segunda condición no es verdadera. Pero
si cambiamos el valor de v2 y ejecutamos nuestra aplicación, esta vez deberíamos ver a través
y podemos ver a través de ellos aquí. Y estos eran los dos tipos de operadores lógicos
de los que iba a hablar o y y ahora que hemos hablado de operadores que queríamos, hablemos
de sentencias condicionales, estoy Voy a comentar estas dos líneas de código.
El primer tipo de enunciados condicionales que voy a hablar de lo que se llama sentencias if, podemos
escribir algo así, podemos decir si hay un par de paréntesis dentro de los paréntesis, necesitamos
proporcionar nuestra condición.

Por ejemplo, podemos decir si a es mayor que tres, después
de los paréntesis necesitamos un par de llaves dentro de las llaves, podemos poner nuestro código,
por ejemplo, digamos que a es mayor que tres. Entonces aquí, estamos diciendo que si nuestra condición
es verdadera, ejecute el código dentro del curly tirantes. Si no es cierto, salta después de
las llaves. Por ejemplo, aquí, vamos a decir continuar. En este momento, a es cinco y es
mayor que tres. Así que deberíamos ver esto texto impreso, ejecutemos nuestra aplicación,
puedes ver que a es mayor que tres.

Pero si cambiamos el valor de a a algo como dos
y ejecute nuestra aplicación, puede ver
que ya no vemos este texto en declaraciones if también podemos tener múltiples condiciones. Por ejemplo,
aquí, puedo decir otra cosa, puedo proporcionar otro par de llaves dentro de estas
llaves, puedo decir algo como esto, Puedo decir que a es menor que tres. Ahora mismo a
es dos, a es menos que dos. Entonces deberíamos vea solo este texto impreso, ejecutemos nuestra
aplicación, puede ver que a es menor que Tres. En cuanto a la condición, puede proporcionar su
condición de esta manera directamente dentro de su si la declaración está entre paréntesis o puede definir
su valor booleano antes de su declaración si. Para ejemplo, aquí, si digo que la respuesta booleana
es igual a un mayor que tres. Ahora puedo pasa mi respuesta. dentro de estos paréntesis, puedo
decir si la respuesta es igual a verdadero, vamos minimizar esta rampa por ahora. Esto va a funcionar
de la misma manera. Si pasa el cursor sobre el resaltando aquí, la identificación inteligente me está
advirtiendo sobre algo, la primera es esa respuesta es igual a verdadero se puede simplificar para responder
significa que puedo eliminar esta parte, esto va a funcionar exactamente igual.

Si ejecutamos
nuestra aplicación, deberíamos ver el mismo resultado a es menor que tres. Ejecutemos nuestra
aplicación. Y puedes ver que a es menos que tres. Si queremos negar esta respuesta, podemos agregar
un signo de exclamación antes de nuestra variable. Por ejemplo, aquí podemos decir si la respuesta
no es igual a verdadero, si ejecutamos nuestra aplicación, deberíamos ver la primera línea,
podemos ver que a es mayor que tres. Este no es verdadera porque A es verdadera. Pero aquí
hemos cambiado el significado de este brillante, hemos añadido un significado negativo. Borremos esto por
ahora. Y vamos a ejecutar nuestra aplicación una vez más. Además de else, también puede
tener un else if. Comentemos brevemente esta declaración if. Y escribamos otro.
aqui abajo voy a ver si adentro esta declaración if. Comprobemos que si a es
positivo o negativo, puedo decir si a es mayor que cero, dentro de las llaves, imprimamos
como positivo.

Aquí en lugar de otra cosa, Puedo usar algo como esto, puedo decir otra cosa si
ahora necesitamos poner otra condición en aquí podemos decir si a es menor que cero. Una vez
más, necesitamos un par de llaves. En el interior las llaves, podemos decir que a es negativo.
Puede tener tantos casos elsif como desee. Por ejemplo, puedo agregar otro aquí. Pero
por supuesto aquí, no creo que esto si la declaración significaría algo. Pero puedes
tener tantos como quieras. pero en cada Si la declaración puede tener como máximo un
caso else, eliminemos todos estos. Por ejemplo, Solo puedo tener un espacio l, este otro será el caso
predeterminado. En este caso si nosotros use this else, significa que a no es mayor que
cero. Y también no es menos que cero. Entonces es cero. Aquí podemos decir con seguridad
que a es cero. Este va a ser el caso predeterminado. para nuestra declaración if en este momento A es verdadera.
Así que deberíamos ver que a es positivo.

Corramos nuestra aplicación. Y como se puede ver a es positivo. Cambiemos
a por menos dos. Si ejecutamos nuestro aplicación, puedes adivinarlo, deberíamos ver que
a es negativo. Y podemos ver eso abajo en aquí. Si cambiamos el valor del petróleo a cero,
deberíamos ver un cero. Y como puedes ver, Podemos verlo aquí abajo. Entonces, si las declaraciones
son un tipo de declaraciones condicionales, tenga otro también, comentemos todos estos,
el otro se llama declaraciones de cambio. Veamos eso también, podemos decir switch dentro
de los paréntesis de la instrucción switch, necesitamos proporcionar la variable que queremos
activar. Por ejemplo, puedo pasar un in aquí, después de los paréntesis, puedo proporcionar
un par de llaves dentro de las llaves, Puedo definir diferentes casos. Por ejemplo, puedo decir
en caso de que a sea igual a uno después de que necesitamos una columna.

Y en caso de que a sea uno,
podemos imprimir algo, por ejemplo, podemos ver a es uno. Además, es muy importante proporcionar
un descanso después de cada caso, hagamos que. Hablaré de este descanso en un minuto. Pero por
ahora, solo sepa que después de cada caso, vas a necesitar un descanso, podemos definir tantos
casos como queramos. Por ejemplo, aquí, Puedo decir que en caso de que a sea para filtrar algo, digamos
que a es dos. Después de eso necesitamos un descanso, podemos definir otro caso. Por ejemplo, para tres,
digamos que a es tres. En cada interruptor declaración, vamos a necesitar un caso por
defecto también. Y podemos pasar eso así podemos decir predeterminado. Y podemos imprimir algo como
a no es uno, dos o tres.

En el valor predeterminado caso, también necesitamos el descanso. Agreguemos rápidamente
eso, ahora mismo el valor de a es cero. Cambiemos eso a dos. Y puedes adivinarlo, deberíamos
ver a es dos, ejecutemos la aplicación. Y puedes ver que a es dos, si cambiamos el valor
de dos una vez más a cero y ejecutamos nuestro solicitud. Puedes ver que a no es uno, dos o
tres. Hablemos también de este descanso.

Aquí Pero antes de eso, cambiemos rápidamente
el valor de ocho a uno. Esta ruptura aquí hará que nuestra declaración de cambio se rompa.
Por ejemplo, si no tenemos este descanso en aquí en los primeros días, que es a es igual a
uno. Y si ejecutamos nuestra aplicación, puede ver que aunque a es uno podemos ver ambas
oraciones, podemos ver que a es uno más a es dos aquí.

Debido a que no tenemos ningún
descanso, no salimos de la declaración de cambio. Y hemos saltado a la segunda afirmación. Así que
no olvides tomarte un descanso después de cada caso en su declaración de cambio. Vamos a hablar
de bucles en Java. Pero antes de eso, permítanme decir que he creado mi proyecto, he
agregado este paquete dentro de mi fuente carpeta. Dentro de este paquete solo tenemos una clase
principal que tiene este método principal, Espero que puedas llegar a este punto por ti
mismo.

Si no, por favor mira el anterior. videos sobre cómo crear un proyecto y crear su clase
principal y su método principal. en programacion Los bucles son útiles cuando desea realizar
un trabajo repetitivo. Por ejemplo, si desea imprime algo 10 veces como esto aquí. Si
quieres imprimir este Hola 10 veces puede simplemente copiarlo y pegarlo 10 veces lo
que en general, es una mala idea que copie y péguese cada vez que en la programación esté
copiando y pegando sepa que está haciendo Ocurre algo. En lugar de copiar y pegar,
vamos a usar bucles en este video. los El primer tipo de bucles de los que voy a hablar son
los bucles for. Déjame escribirlo y nosotros hablará sobre su sintaxis. Esta es la sintaxis general
de un bucle for antes que nada escribimos por. Después de eso tenemos un par de paréntesis dentro
de los paréntesis tenemos tres declaraciones en la primera declaración, estamos definiendo un nuevo
entero llamado aceite, puede nombrar su entero lo que quieras, y también estamos inicializando nuestra
IA para que tenga un valor de cero.

El segundo instrucción es la condición de nuestro ciclo
for vamos a continuar este ciclo hasta que este no se cumple la condición. Y la tercera declaración
es solo una declaración para cambiar el valor. de i cada vez que miramos la inacción de PVC lo que
significan todos estos después de los paréntesis tenemos un par de llaves en las que podemos contener
nuestro código dentro de ellas.

Por ejemplo, si queremos imprimir algo como hola aquí, podemos
incluir eso dentro de este par de rizos tirantes. Entonces, lo que va a hacer este ciclo for
es que, en primer lugar, estamos definiendo un nuevo entero llamado AI y estamos asignando
el valor de cero a ese entero. Después estamos comprobando nuestra condición estamos comprobando
que si i es menor de 10 la primera vez que vamos a buscar i es Hola Entonces se cumple esta
condición.

Si esta condición es verdadera, vamos a ejecutar el código dentro de
las llaves. En este caso vamos a imprimir hola. Después de imprimir Hola, vamos
a ejecutar la tercera declaración. En esto caso, vamos a aumentar el valor de i en
uno. Para la próxima vez que vayamos para hacer un bucle en primer lugar, vamos a verificar
nuestra condición, estamos verificando que si I es todavía menos de 10 o no. Por segunda vez I
es uno, todavía es menos de 10. Entonces, vamos a ejecutar nuestro código.

Este dar vueltas
aquí va a continuar y continuar hasta que nuestra condición es falsa. Cuando sea falso,
saldremos de la foto. así que en este caso, vamos a imprimir hola 10 veces,
ejecutemos nuestra aplicación. y vamos mira si podemos ver Hola 10 veces, puedes
ver que hemos impreso Hola 10 veces parece ser perfecto. En lugar de 10. Puede poner
cualquier número que desee aquí, por ejemplo, puedes decir cinco, si ejecutas
tu programa, veremos que Hello sería se imprimirá cinco veces, en lugar de estas cinco
aquí, puede pasar una variable, por ejemplo, si tuviera una variable antes de este bucle for,
si tuviéramos int a es igual a cinco aquí, más adelante, podemos pasar un en lugar de cinco
a esta foto.

Por ejemplo aquí en lugar de cinco, podemos decir que si ejecuta la aplicación, deberíamos
ver el mismo resultado. Dentro de nuestro for loop también podemos tener acceso al propio
ojo. Por ejemplo, en lugar de imprimir Hola, podemos imprimir, pintemos eso también rápidamente.
Y vamos a ejecutar la aplicación, tú puede ver que estamos imprimiendo los números del cero
al cuatro. Vale, for loop es un tipo de loops en Java. El otro punto es mi bucle. Veamos brevemente
eso también. Una vez más, estoy Voy a escribir la sintaxis del ciclo while y hablaremos
de eso después de eso.

Esta es la sintaxis general de un bucle salvaje. En primer
lugar, escribimos void. Después de eso nosotros tenemos un par de paréntesis dentro de los paréntesis
tenemos nuestra condición, en este caso, menos de 10. Después de eso tenemos un par de
llaves y dentro de las llaves tenemos nuestro código. En este caso vamos a imprimir
hola, observe que no estamos cambiando el valor de a por lo que esta condición siempre es cierta.
Y si ejecuto mi aplicación ahora mismo, van a quedar atrapados en un bucle infinito. Déjame
ejecutar rápidamente la aplicación y ver qué parece un bucle infinito. Pero antes de eso, déjame
comentar esto for loop, puedes ver que pase lo que pase, estamos dentro de un bucle
infinito estamos imprimiendo Hola indefinidamente.

En algunos casos, este podría ser nuestro comportamiento deseado. Pero
en la mayoría de los casos, probablemente no queramos que podemos salir de nuestra aplicación pulsando sobre este
botón rojo, también podemos consultar nuestra código de salida que es negativo en una aplicación
normal, obtendríamos cero. Está bien, pero ¿Cómo podemos salir de un comodín? Hay varias formas
de hacerlo, la forma más sencilla es cambiar el valor de a dentro del bucle vacío. Por ejemplo, después
de imprimir Hola, puedo decir un plus plus, para aumentar el valor de a para que no
sea el mismo cada vez que estemos va a recorrer este ciclo while. Entonces,
por ejemplo, por primera vez a es cinco, por lo que nuestra condición es verdadera. Así que vamos
a ejecutar estas dos líneas de código, estamos va a recorrer el ciclo hasta que a sea 10.
cuando ese es el caso, esta condición es ya no se reunió. Y vamos a salir del ciclo
del Vacío.

Ejecutemos la aplicación Una vez más. Esta vez puede ver que solo
hemos impreso Hola cinco veces. Y también este código de salida es cero, lo que significa
que hemos salido de nuestra aplicación con éxito sin ningún error. La otra forma de salir del bucle
de evitación es agregar un descanso. Déjame agregue rápidamente que esta vez después
del primer ciclo vamos a salir del tiempo bucle significa que vamos a imprimir hola solo
una vez. Ejecutemos la aplicación. Y aquí puede ver que hemos impreso Hola solo una vez
dentro, mientras que los bucles tenemos otro palabra clave llamada continuar. Veamos rápidamente
eso también. Voy a borrar este descanso y antes de esta sentencia de impresión, voy a
poner una sentencia if.

Digamos que si A es igual a ocho. Entonces continuemos. Este continuar
aquí significa que ir a la siguiente registro de su bucle while, vaya a la siguiente ronda
de bucle. Significa que no importa lo que sea el resto del código dentro de la salida viable
del ciclo while y va al siguiente registro, entonces, por ejemplo, en este caso, si A es cinco,
seis o siete, vamos a imprimir hola. Pero si a es ocho no vas a imprimir hola.
Después de eso vamos a imprimir hola en caso de que sea agradable.

Si no quiere quedarse
atrapado en un bucle infinito, también necesita cambiar el valor de un software dentro del ciclo
while. Por ejemplo, antes de esta instrucción if, Puedo decir que una ventaja fue en este momento si ejecuto
mi aplicación, debería saludar solo cuatro veces, porque si a es ocho, vamos a continuar
el ciclo, significa que estamos vamos a saltar al siguiente registro y no vamos
a imprimir hola, vamos a ejecutar la aplicación y ver si podemos ver Hola cuatro veces.

Y como
puede ver, estamos viendo Hello cuatro veces. Así que continuar es una palabra clave útil para cuando
desea pasar al siguiente registro. OK ahora que hemos hablado de por qué bucle también hablemos
de otro tipo de bucles en Java, el valor de A aquí es cinco. Si cambiamos nuestra
condición a, digamos, menos de cinco, sabemos que esta condición ya no es cierta.
Entonces no vamos a entrar al violín, significa que no vamos a ejecutar el código dentro
del bucle vacío. Vamos a ejecutar la aplicación, no deberíamos ver ningún Hello impreso en nuestra
consola. Y como puedes ver, no podemos ver cualquier Hola. Pero en algunos casos, es posible que
desee ingresar al ciclo while al menos una vez.

No importa cuál sea la condición. Para esas situaciones,
puede usar los bucles do while. Dejar comente este ciclo while y creemos un ciclo dividido.
Es muy parecido a través de bucles, debe escribir do dentro de las llaves, debe
poner su corte, por ejemplo, nosotros puede decir System dot out dot print line. Y
puedes escribir hola, después de la llave, tenemos que decir por qué. Y dentro de los paréntesis,
debe especificar su condición, por ejemplo, necesitamos decir menos de cinco, después del paréntesis
necesitas un punto y coma, por supuesto, en este caso, debido a que A es igual a cinco, esta
condición aquí no es cierta. Pero incluso con esa condición, deberíamos ver este Hola al menos
una vez porque estamos usando dos comodines bucles Ejecutemos la aplicación. Y a ver si
podemos ver Hola.

Como puede ver, nosotros puede ver Hola solo una vez. Entonces, los bucles
do while son útiles para cuando desea ejecutar su código, al menos uno sin importar cuál sea la condición.
También tenemos otro tipo de bucles en Java pidió cada bucle. Pero no voy a
hablar de eso aquí. Porque pienso que si sabemos acerca de diferentes arreglos
y colecciones, y con respecto a eso si sabemos sobre la programación orientada a objetos, lo
entenderemos mucho mejor.

Así que voy a hablemos de los bucles for each después de que hayamos
aprendido todas esas cosas. Bien, creo que eso es suficiente para bucles. Ahora vamos a tener un desafío
rápido. Pero antes de que tengamos nuestro desafío, necesitamos saber sobre dos cosas más,
necesitamos saber cómo obtener el usuario aporte. Y también necesitamos saber cómo generar un
número aleatorio. Más adelante veremos que cómo estos dos van a ser útiles. Para obtener
la entrada de los usuarios, puede usar algo llamado escáner.

Es posible que la sintaxis aquí
no le resulte familiar porque no hemos habló sobre la programación orientada a objetos.
Pero vamos a necesitar eso en nuestro desafío. Porque queremos tener un desafío interactivo. Si
no entiende la sintaxis, simplemente copie y pega el código que estoy escribiendo aquí.
Para definir un escáner, puede escribir algo como esto, puede ver el escáner con
S mayúscula, observe que viene de Paquete de utilidad de puntos de Java. Después de
eso, debe nombrar su escáner, que voy a decir un escáner, después de eso puede decir que es igual
a un nuevo escáner. Una vez más, con S mayúscula dentro de los paréntesis debe decir system.in
hemos visto system dot out que fue útil para generar algo del sistema que sea útil cuando
desee obtener la entrada del usuario. Ahora que tiene un escáner, puede obtener un número
de usuario como este. Puedes decir respuesta int es igual a un escáner, punto siguiente int este aquí
abajo diciendo un escáner punto siguiente int nuestro escáner esperará la entrada del usuario hasta
que el usuario ingrese algún número.

Nosotros lo verá en acción en un minuto. Pero antes de
eso, saquemos algo rápidamente. Para ejemplo, digamos que la respuesta fue más el valor
de la respuesta. Además, escribamos algo antes nuestro escáner. Digamos que por favor ingrese un número.
Ejecutemos nuestra aplicación. Y veamos qué estas pocas líneas de código van a hacer. Puede ver
que le estamos diciendo que introduzca un texto numérico. Y aquí la consola está esperando
que el usuario ingrese un número. Por ejemplo, Puedo decir cinco presionando Enter. Puedes ver
que la respuesta fue cinco.

Y hemos salido nuestra aplicación con éxito. Entonces, al usar un
escáner, puede obtener la entrada del usuario. Además enteros al lado del número, también puede obtener
un texto del usuario si lo desea. vamos rápido ver eso también. En primer lugar, vamos a algo, digamos
que ingrese su nombre. Después de eso, puedo decir algo como esto, puedo decir el nombre de la cadena
es igual al siguiente punto del escáner, puede
ver que este próximo método devolverá un cuerda. No se preocupe por todas estas cosas nuevas,
métodos, clases de escáner, orientación a objetos programación. Hablaremos de todo esto más
adelante. Pero por ahora, porque vamos para necesitar la entrada del usuario, vamos a encontrar
una manera de recibir eso.

Así que al usar punto del escáner, a continuación, obtendrá el nombre
del usuario. Y después de eso, vamos a crear alguna cosa. Digamos hola, cierre el nombre del
usuario. Ejecutemos nuestra aplicación una vez otra vez. Aquí, en primer lugar, necesitamos ingresar un
número. Sumemos cuatro. Después de eso, el escáner está esperando mi nombre, digamos Mesa. Y podemos decir
hola Mensaje de Mesa. Así que de esta manera podemos obtener la entrada del usuario. Veamos también
cómo podemos generar un número aleatorio. Voy para comentar estas líneas de código por ahora,
para generar un número aleatorio, puede diga algo como esto, puede decir aleatorio con
R mayúscula, llamémoslo aleatorio, es igual a nuevo aleatorio. Y no necesitamos proporcionar
nada dentro de los paréntesis. Después, para generar un número aleatorio, podemos decir
algo así como int número es igual a random dot next int, este método aquí va a
generar un número aleatorio.

Vamos a imprimir Ese número. Ese es el número más el número. Ejecutemos
nuestra aplicación. Una vez más, tú podemos ver que tenemos este número aleatorio. También
es útil especificar un dominio para su aleatorio número. En este momento, nuestro número aleatorio es
este extraño número negativo, puede que no sea útil, es bueno definir un dominio. Para definir
ese dominio, puede pasar un número a este siguiente método int.

Por ejemplo, si
pongo 20 aquí y si ejecuto mi aplicación, una vez más, el número debe estar en algún lugar
entre cero y 19. Si desea que su número aleatorio número debe estar entre uno y 20, simplemente
puede agregar uno aquí, podemos decir más, pero vamos a ejecutar la aplicación. Una vez
más, podemos ver la mía esta vez. Esta numeración aquí es completamente al azar. Significa que cada vez
que estuviéramos en nuestra aplicación, deberíamos ver un número diferente, puede ver que estamos
generando números diferentes. OK ahora que sabemos cómo obtener un número aleatorio y también
cómo obtener la entrada del usuario, es hora para nuestro desafío. Aquí está nuestro desafío
que vamos a crear de nuevo, el concepto detrás este juego consiste en generar un número aleatorio y
pedirle al usuario que adivine ese número.

Seguir preguntando al usuario hasta que reciba el número correcto.
Además, para que todo sea más divertido. Después de adivinar cinco veces, gronke muestra un
mensaje de fin de juego al usuario. Aquí es cómo nuestro juego va a funcionar. En primer lugar, vamos
a mostrar un mensaje de bienvenida. Después que vamos a pedir el nombre del usuario.
Y vamos a saludar al usuario. Después de eso, vamos a pedir permiso al usuario
para iniciar el juego. si recibiste una respuesta positiva, vamos a generar
un número aleatorio y vamos a pedir los invitados de los usuarios. Si el invitado es correcto,
le mostraremos un mensaje de felicitación. y sal del juego. Si el huésped se equivoca,
vamos a volver a preguntar hasta recibir el número correcto Además, como una pista para el
usuario además de la primera vez, cada vez que está pidiendo un número, dígale al usuario que adivine
más alto o más bajo.

Por ejemplo, si el número aleatorio es 10. Si el usuario ha adivinado
siete por primera vez, dígale que adivine más alto si el usuario falla después de cinco veces,
muestra un mensaje de fin del juego y sale del juego. Este desafío aquí es la combinación de todo
lo que hemos aprendido hasta ahora. Asi que Asegúrate de practicar antes de ver el
siguiente video, te ayudará mucho. Está bien, ve a resolver el desafío. Y después de
eso, vuelve al siguiente video para que veas mi solución para este desafío.

Nos vemos en
el próximo vídeo. espero que resuelvas el reto pero si no, está totalmente bien. Después de
todo, es tu primer encuentro con Java. Y es la primera aplicación que estás escribiendo.
En este vídeo vamos a resolver el reto. juntos. Comencemos creando un nuevo proyecto. Como antes,
voy a seleccionar Java a continuación. Una vez más a continuación, vamos a nombrar este proyecto
que me pone en marcha. Creamos nuestro proyecto. Y dentro nuestra carpeta fuente, vamos a crear nuestro paquete
y archivo Java. Vamos a nombrar este paquete o que puede codificar eso me da una nueva clase de Java.

Llamémoslo principal.
Dentro de nuestra clase principal, escribamos p SVM y ahora tenemos nuestro método principal. Bien,
antes que nada, vamos a mostrar un poco de bienvenida. mensaje al usuario. Así que digamos System dot out dot
print line, digamos bienvenido al País de las Maravillas. Después de eso, vamos a pedir el nombre del usuario.
Así que digamos Por favor ingrese su nombre, o casarse tiene su nombre. Después de eso, necesitamos
recibir el nombre del usuario, en el que necesitamos un escáner para eso. Vamos a crear nuestro escáner. Digamos
que el escáner es igual al nuevo escáner system.me. Después de eso, digamos que el nombre de la
cadena es la siguiente llamada al punto del escáner, y saludar al usuario. Digamos hola, más el nombre.
Después de eso, vamos a preguntar por el usuario permiso para iniciar el juego. Digamos ¿Empezamos?
aquí? voy a darle al usuario dos opciones Y aquí están mis dos opciones.

Digamos
uno, sí. Y el otro, digamos que no. Pero para formatear mi texto un poco mejor,
voy a agregar una sintaxis especial aquí en el que no has visto hasta ahora. Al agregar
la barra invertida T. Estoy agregando una pestaña antes este. Sí. Entonces esto se formateará con una
pestaña. Agreguemos uno aquí también. Nada es especial Solo por formatear mi texto un poco
mejor. Después de eso, voy a guardar la respuesta del usuario. Digamos ocho, la respuesta
inicial es igual al punto siguiente del escáner. Y después de eso, voy a crear un ciclo while. Digamos
que la respuesta de inicio de vid no es igual a uno, vamos a seguir haciendo nuestra pregunta.
Así que copiemos estas tres líneas de código y péguelos dentro de nuestro ciclo while. Después
de eso dentro del bucle vacío, también necesitamos para almacenar la respuesta de los nuevos usuarios, podemos
decir que la respuesta inicial es igual al escáner punto siguiente int.

De esta manera, si no va
a salir de este bucle while hasta que el La respuesta de los usuarios es válida, cuando es divertido,
tenemos permiso para iniciar el juego. Después de la bucle vacío, es hora de generar un número aleatorio,
digamos aleatorio, aleatorio es igual a un nuevo azar. Después de la muerte, digamos que int x
es igual al siguiente int de punto aleatorio para el dominio, voy a decir 20. Porque quiero que mi número
sea del uno al 20. Así que necesito para agregar un más uno aquí. Después de eso, es hora
de pedirle al usuario que adivine un número.

Asi que digamos por favor, obtenga un número. Y aquí, necesitamos guardar
la respuesta del usuario. Digamos int, la entrada del usuario es igual a un punto
de escáner al lado de int. Aquí voy a definir tres nuevas variables y su uso como quedará claro
en un minuto. Definamos rápidamente a ellos. En primer lugar, voy a guardar las veces
que el usuario ha probado el juego. Entonces vamos digamos que ocho intentos es igual a cero inicialmente,
después de eso, definamos un valor booleano, decir booleano. Además, inicialmente, es falso.
Y después de eso, un booleano que indica si debe terminar el juego. Así que digamos que debería
terminar. Una vez más, va a ser falso. Inicialmente, después de definir estas tres
nuevas variables, voy a crear otro vial de digamos, por qué debe terminar no es igual
a dos.

Después, dentro del bucle while, en primer lugar, voy a aumentar
los tiempos que el usuario tiene derecho. Así que digamos multiplicado por tres más más,
después de eso, voy a crear una instrucción if. Digamos que si tres veces es menor que cinco,
entonces tenemos permiso para continuar. Si son más de cinco, en caso contrario, necesitamos
salir de este bucle while. Para eso, solo voy a decir que el final corto es
igual a verdadero. este va a ser el ultimo línea de nuestro ciclo while. Entonces, si miramos
una vez más, porque esta condición ya no es met, vamos a salir del bucle while. Pero en
caso de que el paso del tiempo sea menor de cinco, vamos a comprobar que si la entrada de los
usuarios es igual a la generada aleatoriamente número para el que puedo decir si la entrada del usuario
es igual a x, entonces tenemos que cambiar el valor de marido a verdadero porque el usuario ha ganado
el juego.

Y también tenemos que salir de esto mientras que el bucle digamos que el final corto es igual
a verdadero. Agreguemos un caso else if a esto si declaración. digamos otra cosa. si digamos que la
entrada de los usuarios es mayor que r x, que es nuestro número generado aleatoriamente, vamos a decirle
al usuario que adivine más bajo para eso puede decir, adivinó más bajo. Y, por supuesto, debemos
esperar las entradas de los nuevos usuarios para que podemos decir que la entrada del usuario es igual a un punto de escáner
al lado de int. También necesitamos otro caso en aquí en caso de que el número sea menor que
x. Si ese es el caso, vamos a decirle a la usuario a adivinar más alto. Y también si va a esperar
la entrada del nuevo usuario, digamos la entrada del usuario es igual al siguiente int del punto del
escáner.

Hemos terminado con este bucle vacío, revisaremos lo que estamos haciendo aquí. Pero después del bucle
vacío, necesitamos otra instrucción if, podemos decir si el usuario ha ganado el juego. Si eso es
cierto, entonces vamos a mostrar un mensaje, digamos felicitaciones. Y también digamos
al usuario, en qué intento ha ganado el juego. Digamos que has adivinado en tus intentos
más veces más adivinar. pero en el otro caso, primer nivel, vamos a mostrar un mensaje de
fin de juego. Digamos que se acabó el juego. Y después de eso, vamos a decir cuál fue el número,
digamos que el número era más x.

Esta es toda
nuestra aplicación. Repasemos lo que somos haciendo aquí. En primer lugar, estamos mostrando
un mensaje de bienvenida al usuario. Después estamos pidiendo el nombre del usuario, estamos
creando un escáner y luego estamos esperando para que el usuario introduzca su nombre. Después
de recibir el nombre, estamos esperando el permiso del usuario para iniciar el juego, estamos guardando
la entrada del usuario aquí, dentro del while loop nos estamos asegurando de que tenemos
el permiso. Si no tenemos el permiso, vamos a pedir una y otra vez hasta que tengamos
el permiso. Después de eso, hicimos seguro que tenemos el permiso, estamos creando un número
aleatorio, el número aleatorio está entre uno a 20. Y después de eso, le pedimos al usuario
que adivine un número. estamos salvando el entrada del usuario aquí, hemos definido tres nuevas
variables aquí veces a través de ella tiene Final único y corto.

A continuación, estamos creando
este bucle viral. Comienza desde aquí y termina aquí La condición de este bucle viral es vil,
no deberíamos terminar el juego continuar el lazo. Lo primero dentro de este bucle while es
que aumentamos el paso de tiempo. entonces si es la primera vez porque el paso de tiempo es inicialmente
cero, estamos cambiando eso a Vaughn. Después de eso, estamos comprobando que si tres veces es menor
que cinco, estamos comparando los datos del usuario. entrada con el número generado aleatoriamente.
Si eso es igual a un número aleatorio, estamos cambiando el valor de este esposo a verdadero
y también necesitamos salir de este bucle. Así que estamos cambiando el valor de este final corto
a verdadero. Pero en caso de que el usuario ingrese es mayor que nuestro número aleatorio, le estamos diciendo
al usuario que adivine más bajo y también están esperando la entrada del usuario. Pero en caso de que
la entrada del usuario sea menor que nuestro número aleatorio, le estamos diciendo al usuario que adivine más alto una vez
más, estamos esperando la entrada de los usuarios en caso de que el tiempo de huelga sea mayor que cinco,
solo estamos esperando fuera del ciclo.

Si eso es el caso, el marido sigue siendo falso. Así que estamos
comprobando eso aquí. si tiene uno es igual a verdadero significa que el usuario ha ganado el juego.
Así que estamos mostrando este mensaje de felicitación. También estamos mostrando que el inglés intenta que el usuario
haya adivinado el número correctamente. pero en caso si el usuario no quería el juego, mostramos este
mensaje de fin de juego y también mostramos el numero aleatorio Ejecutemos el juego y
veamos si todo funciona bien. Estamos viendo el mensaje de bienvenida. Después de eso está
preguntando por nuestro nombre. Pongamos Mesa somos viendo Hello Mesa después de eso estamos viendo
el mensaje para nuestro permiso, ¿empezamos? o era mejor decir ¿Empezamos? Digamos para
saber una vez más, estamos viendo el mensaje. Esta es nuestra primera mirada amplia.

También
este formato aquí se debe a esa barra invertida t que he usado cuando he creado este texto
estoy hablando de este, esta barra invertida aquí. También al lado de uno y dos. Si ingresa
cualquier otro número, deberíamos ver esto mensaje una vez más. Así que digamos tres por
ejemplo. Puedes ver que estamos viendo el mensaje. Bien, digamos Sí para continuar. La consola
está esperando que obtengamos un número. Digamos que 10 dice que baja, digamos cinco.
Parece que he ganado el juego en mi segunda Troya. Bien, ejecutemos el juego una vez
más.

¿Puedo tener su nombre? Digamos Masón. Sí. Vamos a empezar. Eso es adivinar otro
número. Dice que baja, voy a adivinar superior para depurar todas las características
del juego, digamos 1112 1315. Puede ver que después de cinco Troy, puedo ver el mensaje
de gameover. Y puedo ver que el número era nueve. Vale, parece que nuestra aplicación funciona
perfectamente. Justo antes de terminar este video, cambiemos este mensaje aquí también.
¿Deberíamos empezar? Creo que eso es mejor. Bien, este era nuestro desafío. Espero que lo hayas
resuelto si lo celebraste, pero si no, eso es bueno. Más adelante en el curso, vamos a practicar
todo esto muchas veces más para que que nos aseguremos de haber aprendido todo lo que
vemos en el curso. Bien, creo que eso es un buen punto para detener el video aquí. Justo
antes de hacer eso, voy a decir eso en En el siguiente video, vamos a hablar sobre arreglos
en Java. Nos vemos en el próximo vídeo. En este video,
vamos a hablar sobre arreglos en Java.

Hasta ahora, si queríamos almacenar algunos datos simples,
por ejemplo, un número o tal vez un texto, podríamos haber usado variables. Por ejemplo, podríamos
haber dicho que int a es igual a cinco. Pero, ¿qué sucede si queremos almacenar una lista de diferentes
variables, por ejemplo, una lista de nombres o una lista de estudiantes. para almacenar una lista
de variables, tenemos múltiples opciones en Java. El primero del que vamos a hablar en este
video se llama array, veamos como podemos tener una matriz de, por ejemplo, cadenas.
Por eso podemos decir para cadena. Después, necesitamos un par de corchetes. Después de eso, necesitamos
el nombre de nuestra matriz.

Por ejemplo, Puedo decir estudiantes, luego puedo decir nueva cadena
una vez más con un par de corchetes. Este nuevo teclado aquí es inglés simple, significa
que estamos definiendo una nueva matriz de cadenas dentro de este corchete, podemos definir
el tamaño de nuestra matriz. Por ejemplo, si queremos servir cinco nombres de estudiantes diferentes,
puedo decir cinco aquí, tan simple como que ahora tenemos una matriz de tamaño cinco. Después
de definir su matriz, puede poner algunos valores en ello. Por ejemplo, puedo decir que los estudiantes
tienen un índice de, digamos, Vaughn es igual para poner mi nombre aquí Puede sonar
así, estamos asignando este valor a la elemento en el que tiene el índice de uno en nuestra
matriz, hay un punto muy importante en aquí y que los índices en Java comienzan desde cero.
Así que aquí, cuando dije que los estudiantes con un índice de uno, significa que nos estamos
refiriendo al segundo elemento de nuestra matriz.

Si desea asignar algún valor a su primer elemento
en su matriz, puede decir estudiantes con un índice de cero. Veamos que también, digamos
que es igual a, por ejemplo, entonces podemos seguir haciendo esto para todos nuestros elementos
dentro de nuestra matriz. Además de asignar valores a los elementos de su matriz, también puede obtener
el valor de esos elementos. Por ejemplo, aquí, podemos decir imprimir el valor de un estudiante
con un índice de dos. Puedes supongo que en este caso, debería ser Tom. Ejecutemos
la aplicación y veamos si podemos ver Tomás. Como puede ver, Tom ha sido impreso. Esta
es una forma de asignar diferentes valores. a los elementos de su matriz. La otra forma es así,
puede asignar diferentes valores en el momento de crear tu área. Por ejemplo, aquí puedo
ver una matriz de cadenas, vamos a nombrar empleados es igual a en lugar de decir nueva matriz
de cadenas, puedo pasar un par de rizado abrazadera.

Y dentro de esa llave, puedo pasar
mis valores. Por ejemplo, puedo decir Mesa, o cualquier otro valor que yo quiera. Así que estas
son las dos formas de asignar valores a su elementos de matriz, como una matriz de cadenas, también
puede tener otros tipos de matrices. Para ejemplo, si quiero poner algunos números dentro de una
matriz, puedo decir int con un par de cuadrados corchetes, digamos que los números son iguales a,
digamos un par de llaves. Y dentro de esos llaves, puedo pasar mis valores, digamos uno,
dos, hasta seis. cuando estas trabajando con diferentes arreglos, los bucles for pueden ser muy
útiles para acceder a todos los elementos dentro tu matriz. Por ejemplo, si quiero imprimir todos
los valores dentro de esta matriz de números, Puedo decir algo como esto, puedo crear una
carpeta. Digamos que int i es igual a cero, i menos que en este caso, el tamaño de mi matriz
de números es seis. Así que digamos seis. Después de eso, digamos i plus plus. Dentro del
ciclo for, puedo decir imprimir el valor de números con un índice de I.

De esta manera, voy
a imprimir todos los números dentro de mi matriz de números antes de ejecutar la aplicación.
Voy a comentar esta línea de código para que que tenemos una consola limpia. Como puede ver, se
han impreso los números del uno al seis. en nuestra consola. Entonces, los bucles for son muy útiles
cuando trabajas con diferentes tipos de arreglos Aquí, hemos codificado estos seis.
Pero, ¿y si no sabemos el tamaño de nuestra matriz? Por ejemplo, si obtenemos algunos valores
de nuestra base de datos o de nuestro servidor en ese caso, es posible que no sepamos el tamaño de nuestra
matriz. ¿Cómo podemos usar para bucles con matrices, si no conoce el tamaño de nuestra
matriz para eso, podemos usar un útil propiedad de diferentes áreas.

Por ejemplo, en este
caso, puedo decir números, longitud de punto. De esta manera, no necesitamos preocuparnos por el tamaño
de nuestra matriz, simplemente podemos usarla como esto. Ejecutemos la aplicación una vez
más. Y como antes, tenemos números impresos de uno a seis. Más adelante, veremos que además
de los tipos de datos primitivos y las cadenas, también puede tener diferentes tipos de arreglos para
diferentes objetos, por ejemplo, para diferentes clases en Java, pero más sobre eso más adelante. Entonces,
usar arreglos es una forma de tener una lista de diferentes artículos. Pero hay algunas limitaciones para las
matrices. Por ejemplo, el tamaño de nuestra matriz después de la definición es inmutable.

Déjame
mostrarte de lo que estoy hablando. aquí Cuando definimos nuestra matriz de estudiantes, hemos
establecido el tamaño en cinco. Pero, ¿y si queremos para cambiar el tamaño de nuestra matriz, por ejemplo,
¿qué pasa si queremos definir un sexto elemento? Por ejemplo, si dice los estudiantes con
un índice de cinco, digamos Brian, si pase el cursor sobre estos cinco, puede ver que el índice de
matriz está fuera de los límites, significa que estos los elementos aquí no pueden caber en nuestra matriz.
Por ejemplo, si tratamos de llegar a ese elemento, debería ver un problema, digamos que imprima a
los estudiantes con un índice de cinco. Antes eso, comentemos esta línea de código. Ejecutemos
nuestra aplicación. Como puedes ver, estamos obteniendo una excepción aquí. Una vez más, cuando
obtenemos excepciones, significa que nuestro la aplicación falla. Y el tipo de excepción aquí
es el índice de matriz fuera de los límites, lo que significa que el sexto elemento no existe en nuestra
matriz.

Entonces las matrices son inmutables después de definirlos, no puede cambiar su tamaño.
Esta es una de las limitaciones de la simple arreglos en Java, también hay otros. Por
ejemplo, no puedes hacer tanto con tus arreglos. mas tarde. Cuando usemos otro tipo
de colecciones en Java, veremos que tener todo tipo de operaciones en los elementos
de nuestra matriz. pero no voy a hablar de otro tipo de colecciones aquí porque
creo que es mejor hablar de ellas después de que sepamos acerca de la programación orientada
a objetos. Más adelante en el curso, hablaremos de otros tipos de colecciones como listas de arreglos
y mapas.

Justo antes de terminar este video, Voy a escribir una aplicación sencilla en la
que nos ayudará a practicar lo que tenemos aprendido acerca de las matrices. Antes de eso, déjame
comentar todas estas líneas de códigos. y vamos empezar a crear nuestra aplicación aquí abajo.
En esta aplicación, voy a simular la aplicación de contactos en el teléfono, voy
a mostrar una lista de diferentes contactos nombres en un teléfono para el usuario. Y después
de eso, escribiendo el nombre de los contactos, vamos para darle al usuario ese número de contacto.
Para simular eso en primer lugar, estamos va a necesitar una matriz de cadenas, digamos que los nombres
de una matriz de cadenas son iguales a pasemos nuestros nombres directamente.

Digamos Mesa. Después de
eso, necesitamos una lista de diferentes números. para eso voy a crear esa matriz de enteros.
Veamos números es igual a y vamos inicializamos nuestra matriz. Después de eso, voy
a mostrar el nombre de todos los contactos disponibles. en el teléfono Así que vamos a crear un bucle for.
Para int i es igual a cero, i menos que nombres esa longitud, y yo más más. imprimamos los nombres
dentro de nuestra matriz de nombres. Digamos imprimir nombres con un índice de I. Después
del bucle for, le pediré al usuario que ingrese un nombre. Así que digamos imprimir. Digamos que por favor ingrese
un nombre. Después de eso, necesitamos nuestro escáner. Entonces, creemos que es igual al nuevo sistema de escáner,
lo que significa que después de eso, obtengamos el Nombre del contacto.

Digamos el nombre de la cadena es igual a un punto de escáner siguiente. Luego voy
a crear un ciclo for y dentro de ese ciclo Voy a buscar el índice del contacto. Así
que digamos que int i es igual a cero. i menos que nombres, longitud de punto, i plus plus.
Escribamos una sentencia if aquí. Vamos decir si el nombre es igual a los nombres con un índice
de alegría. Entonces dentro de esta sentencia if somos Voy a imprimir el número de contactos para que pueda
ver números de impresión con un índice de pi. Pero ahora mismo hay un problema con mi código,
no estoy seguro si va a funcionar bien o no, y eso es debido a estos dos signos iguales
aquí. Vamos a ejecutar la aplicación y ver si va a funcionar. Ingresemos nuestro
nombre aquí. digamos Sara. y como tu puede ver, no se ha impreso nada. Hablemos de
estos dos signos iguales aquí. Si usted pase el cursor sobre la advertencia aquí, dice que
los valores de cadena se comparan usando dos iguales signos no iguales a un par de paréntesis.

El
problema aquí es que cuando estás usando dos signos iguales, está verificando la igualdad
de dos cadenas por una referencia, estoy hablando de la referencia dentro de la memoria RAM de
los dispositivos. Siempre que almacene una variable, esa variable asigna algo de espacio dentro de
la memoria RAM del dispositivo, y eso asignado un espacio tiene alguna dirección. Y que asignado el
espacio tiene alguna referencia en la que estamos comparando esas dos referencias aquí juntas.

Entonces,
incluso si el valor de dos cadenas aquí puede ser lo mismo, pero la referencia puede
no ser por eso, no es una buena manera de compare dos cadenas usando estos dos signos iguales.
En lugar de usar estos dos signos iguales, hay una mejor opción para comparar dos cadenas,
y ese es el método de igualdad. Vamos ver eso también. Aquí, puedo decir nombre,
punto igual, y dentro de los paréntesis, puede pasar la otra cadena. Por ejemplo, puedo
decir nombres con un índice de I.

Si recuerdas de los videos anteriores, dije que las cadenas
no son un tipo de datos primitivo, y son objetos en Java. Y debido a que son objetos,
tenemos algunas propiedades en nuestras cadenas. Por ejemplo, este método es igual a. Una vez más,
vamos a hablar de métodos más adelante. en el curso cuando hablamos de programación orientada
a objetos. Pero por ahora, sólo sé que hay es un método llamado equals en nuestra clase de cadena, en
el que podemos usar para verificar la igualdad de dos cadenas por los valores. Ahora, si está en nuestra
solicitud, deberíamos obtener la de Sarah. número. Ejecutemos la aplicación. Aquí, una
vez más, veamos a Sarah. y como puedas mira, estamos obteniendo el número. También verifiquemos
que si está obteniendo el número correcto, Sarah es el segundo contacto de nuestra matriz. Y
el segundo elemento en nuestra matriz de números es este número en el que tenemos impreso en nuestra
consola, parece que nuestra aplicación está funcionando bien Bien, creo que es suficiente
hablar de arreglos en Java.

En el proximo video. Finalmente, vamos a empezar a hablar de la
programación orientada a objetos. Ese es un tema muy importante, y te va a ayudar
mucho a entender Java, así que haz Asegúrate de no perderte los próximos dos o tres videos. Nos
vemos en el próximo vídeo. Como dije al final del video anterior, en
este video, finalmente vamos a comenzar hablando de programación orientada a objetos.
Hasta este punto con la ayuda de variables, podríamos haber definido tipos de datos simples.
Por ejemplo, si quisiéramos tener números, Podría haber dicho que el número int es igual a cinco,
cuatro. Del mismo modo, podríamos tener caracteres definidos, textos, y todo tipo de variables de las que
hemos hablado en vídeos anteriores. Pero ¿y si queremos tener datos más complejos? Por ejemplo,
¿cómo podemos definir un automóvil en Java? o un teléfono o cualquier otro objeto que
se te ocurra? Bueno, eso es posible con el concepto de programación orientada a objetos. En
la programación orientada a objetos, se define sus propios objetos, el componente central de la programación
orientada a objetos nuestras clases.

En este momento puedes ver que estamos dentro de la clase, esta
clase se llama main. Pero si queremos, podemos crear nuestra propia clase también. Permítanme
eliminar rápidamente esta línea de código. y vamos crear una nueva clase. Por ejemplo, dentro de mi carpeta
de origen, dentro de mi paquete en el paquete, Puedo hacer clic con el botón derecho y, al seleccionar una
nueva clase de Java, puedo crear mi clase. aquí necesito para nombrar mi clase. Por ejemplo, puedo decir teléfono,
fíjate que hay una convención, necesitas usar mayúsculas para la primera letra del
nombre de tu clase. Además, no puede tener espacios o algunos caracteres extraños como el nombre
de tus clases. Así que aquí, solo voy para simplemente nombrar mi formulario de clase.

Tenga
en cuenta que hay otras opciones aquí también para interfaz de ejemplo y ya sabes, más adelante
hablaremos de ellos, pero por ahora, vamos a crea una clase la que tiene el CI con. Presionando
Enter, podemos crear nuestra clase. Así es como una clase se ve como si viviera dentro
del paquete ahora que se modifica su paquete. maker.org es la sección uno. Además, si observa
el panel izquierdo aquí, puede ver que se ha agregado una nueva clase a nuestro paquete.

Cada
clase tiene la palabra clave class en su declaración. También cada clase tiene un nombre y además esto también
tiene un modificador de acceso. hablaremos de modificadores de acceso en pocos minutos. Pero por
ahora sigamos. Cada clase tiene un par. de llaves en las que podemos poner nuestro código
dentro de ellas. Una clase va a representar un objeto. En este caso, vamos a representar un teléfono.
Si piensas en diferentes objetos, Los objetos pueden tener diferentes propiedades. Por ejemplo,
en el caso de un teléfono, un teléfono puede tener cierta cantidad de memoria RAM, puede tener un tamaño
de pantalla. Además de que tiene un nombre, y todo tipo de otras propiedades que se
te ocurran. Cuando defines una clase, también puede tener propiedades para sus clases.
Por ejemplo, en este caso, si queremos dar algunas propiedades a nuestra clase de teléfono, podemos
decir algo como esto, podemos decir la cadena nombre. Ahora definimos una propiedad llamada nombre para
nuestro teléfono.

Tenga en cuenta que no estoy inicializando la propiedad de mi clase aquí, no le voy a
dar un nombre a mi teléfono. Y eso es porque cuando declaramos una clase, podemos reutilizar esa
clase, podemos crear múltiples instancias de esa clase con diferentes propiedades. Por ejemplo,
si definimos un nuevo iPhone, el nombre sería iPhone, si definimos otro teléfono, el nombre
de ese teléfono podría ser diferente. Entonces, por esa razón, no estoy inicializando las
propiedades de mi clase, agreguemos algunas más propiedades a nuestro objeto de teléfono, digamos
en tamaño de pantalla. Aparte de eso, digamos en RAM de memoria. Después de eso, digamos cámara interna.
Ahora que hemos creado esta clase simple, podemos instanciarlo, sabemos con certeza que el
punto de partida de nuestra aplicación es este método principal dentro de nuestra clase principal. Entonces,
si necesito crear una instancia de mi clase, debo hacer aquí.

Y así es como puede crear una instancia
de su clase, escriba el nombre de tu clase, puedes ver que cuando escribí el
nombre de mi clase, recibo algunas sugerencias de IntelliJ. A veces puede obtener múltiples
opciones. Y eso es porque diferentes clases con diferentes nombres pueden vivir en diferentes
paquetes. Por eso, siempre eche un vistazo en el paquete en el que vive su objeto.
En este caso, solo voy a importar este clase. Después de eso, debe nombrar su instancia, por
ejemplo, puedo decir iPhone, luego puedo decir es igual al teléfono nuevo. De esta manera, con la
ayuda de esta nueva palabra clave, podemos crear una nueva instancia de nuestro objeto. Ahora que hemos creado
una instancia de nuestra clase, podemos tener acceder a las propiedades de nuestros objetos nuestra
clase, por ejemplo, si desea definir alguna propiedad para nuestra clase, podemos decir algo
como esto, podemos decir iPhone dot, digamos el nombre es igual a llamémoslo iPhone 11.

Con la ayuda de este operador punto, puede
tener acceso a todas las propiedades o a sea ​​preciso todos los campos de su clase.
Similar a asignar un valor a sus clases, propiedades o campos, también puede obtener esas
propiedades o campos. Y así es como usted puede conseguirlos. Por ejemplo, si queremos imprimir
el nombre de nuestro iPhone, podemos decir algo así, podemos decir imprimir, nombre de punto de iPhone.
Si ejecuta nuestra aplicación, deberíamos ver iPhone 11 impreso en nuestra consola. Y aquí está
el iPhone 11. Similar al que puedes tener acceso a todos los campos de su clase. Por
ejemplo, puedo decir iPhone, digamos memoria RAM es igual a ocho. Además de las propiedades, sus clases
también pueden tener algunos comportamientos. Por ejemplo, en el caso de un teléfono, puede
reproducir música con su teléfono o puede llamar a alguien Si desea definir algún comportamiento
para su clase, puede usar métodos, vamos a verlos como construidos.

Volvamos a nuestra
clase telefónica. Así es como se puede definir un método voy a escribir la sintaxis y
luego hablaremos de ello. Primero de todo, nuestro método tiene un nombre en este caso su nombre
es reproducir música. Después de eso, un método puede tener un modificador de acceso como lo hicimos para
la declaración de nuestra clase, hablaremos de este público en un minuto.

Después de eso, cada método
puede tener algunas entradas. Por ejemplo, en este caso, obtenemos una cadena llamada trackman.
Más adelante, cuando usamos este método, Necesitamos pasar alguna entrada a este método.
Si no desea tener ninguna entrada para su método, puede simplemente pasar un par de paréntesis
vacíos. Pero si quieres, puedes tener una o más entradas. Si desea tener varias entradas
para su método, puede separarlas entradas con una coma. Por ejemplo, aquí puedo decir
que es el nombre del álbum de bebidas. pero no voy para hacer eso aquí. Pero puedes tener tantas entradas
como quieras. al lado de un nombre, una entrada y también un modificador de acceso. Cada método
puede devolver algo en este caso, es nulo, pero si quieres puedes cambiarlo. Por ejemplo, podemos
decir una cadena como el tipo de retorno de tu método También puede tener números enteros u otros
tipos de tipos de datos primitivos.

Incluso puede devolver otra clase con su método. Pero
más sobre eso más adelante. si no quieres para devolver cualquiera de su método, puede usar la
palabra clave void. Como hicimos antes, lo haremos hable más sobre el tipo de devolución de cada método
más adelante. Pero por ahora, no vamos a devolver nada de este método. Entonces vamos
a pasar vacío dentro de las llaves de mi método, puedo poner mi código por ejemplo,
en este caso, voy a poner música, o al menos voy a imprimir algo. En este
caso, solo voy a decir, jugando más la pista de mí. Ahora que he creado este método, puedo usarlo
en mi clase principal donde he instanciado mi objeto Por ejemplo, aquí puedo ver el punto de
iPhone reproducir música.

Una vez más, puedes vea que al escribir puntos, también puedo tener acceso
a mis métodos. Ahora mismo, estoy recibiendo error error aquí. Y eso es porque cuando
creé mi método, configuré una entrada para ello. Entonces, cuando voy a usar mi método,
necesito pasar un seguimiento. Por ejemplo, vamos dicen que nuestros seres llevan el nombre de una pista.
Ejecutemos la aplicación y veamos qué suceda, se puede ver que estamos tocando algo de música.
Entonces, al definir métodos, puede tener comportamientos para sus clases, hay algunas
razones para usar métodos. El primero es que puedes reutilizar tu método. Por ejemplo, aquí,
después de esta línea de código, puedo decir iPhone no reproduce música, y puedo pasar un nombre de pista
diferente, pasemos lamentándonos caso esto tiempo. Si ejecutamos nuestra aplicación, puede ver
que nuestros métodos se ejecutan uno a la vez. un momento. Entonces, el primer beneficio de usar métodos
es que puede reutilizarlos. el siguiente es por organizar nuestro código. Por ejemplo, imagina
que quieres tener algún tipo de cálculo, puede pasar todos los códigos para ese cálculo
a un método.

Y llamando a ese método, puede pasar todos esos cálculos a un método
y más adelante, simplemente puede llamarlo método para hacer el cálculo, nos va a
ayudar mucho para organizar nuestro código. Además, mediante el uso de métodos, puede encapsular
cosas. Hablaremos sobre la encapsulación en vídeos posteriores. Pero aquí dentro de tu clase,
puedes definir tus métodos como privados, y ese método será accesible solo desde su
clase y no desde fuera de su clase.

Si regresa a la clase principal, puede ver que estamos
recibiendo una advertencia roja. si flotas por ahi dice que este metodo tiene acceso privado.
Entonces, al usar métodos privados, puede encapsule diferentes comportamientos para su propia
clase. Bien, ahora hablemos de este acceso. modificador Puede tener modificadores de acceso, para
sus métodos para sus clases. y también para los campos de sus clases, puedo hacer que este nombre
sea privado, si quiero también.

Básicamente, Tenemos tres tipos de modificadores de acceso, tenemos
privado, tenemos público. Y también tenemos protegido si no usa nada como modificador
de acceso. Es igual a cuando usas público. Por lo tanto, no hay diferencia entre el nombre
de cadena público o solo un nombre de cadena. Cuando usa public como modificador de acceso.
Por ejemplo, si uso público aquí, significa que este campo también será accesible
desde otras clases. Pero si uso privado aquí, digamos privado, si vuelvo a mi clase
principal, pueden ver que nos estamos poniendo una advertencia roja, significa que ya no podemos usar
esta propiedad.

Así que al establecer el acceso modificador de nuestro campo o método, ese campo o
método solo es accesible desde dentro de nuestro clase, además de públicos y privados también tenemos
proyectos de los que hemos estado hablando protegidos más adelante en el curso tanto privado como público son
los modificadores de mayor acceso que estamos va a usar en el curso para el modificador de
acceso de su clase.

También puedes tener grupo de administración privada dentro de allí. Pero por
lo general no harías eso en este momento, puedes ver que estamos recibiendo una advertencia roja aquí.
Y la advertencia dice que modificador privado no está permitido aquí. ¿Usas privado principalmente
cuando usas clases internas? Hablaremos de clases internas más adelante en futuros videos. Pero
básicamente, son algunas clases anidadas dentro otras clases. Cuando las define como clases privadas,
puede tener acceso a las anidadas clases de la clase padre. Hablaremos de eso
más adelante cuando hablemos de interior. clases Por ahora, cambiemos este a público.
Hay algunas razones para usar private como el modificador de acceso de sus campos
o métodos. La primera es que usted puede desea limitar el acceso de sus campos o métodos
a la clase en sí y no a otros clases Por ejemplo, imagina que estás escribiendo
un código que vas a publicar. para otros desarrolladores. En ese caso, es posible
que desee proteger sus clases contra cambios.

Por esa razón, es posible que desee cambiar los modificadores
de acceso de sus campos y también los métodos. a privado pero ahora que hemos definido el modificador
de acceso de este campo, como Privado, ¿Cómo podemos tener acceso a este nombre desde fuera
de esta clase? Hay una forma de hacerlo. hablar rápidamente de ello, podemos crear métodos
públicos. Por ejemplo, aquí abajo, puedo diga public como el tipo de devolución de este método,
voy a decir void. Por el nombre de este método, voy a decir establecer nombre. Como puede ver,
cuando uso el conjunto de palabras clave, estoy obteniendo algunas sugerencias de IntelliJ.

Básicamente, existe
una convención entre los programadores para establecer el nombre de los métodos setter como este, un inteligente
es lo suficientemente inteligente como para conocer el convención. Pero por supuesto, puedes nombrarlos
como quieras. En este caso, voy para seguir la convención. Así que voy a decir
ciertamente, dentro de los paréntesis como el entrada de este método, voy a decir, la cadena, digamos nombre.

Dentro de este método,
voy a cambiar el valor de este nombre a cualquiera que sea el nombre que voy a recibir a través
de este método. Por eso puedo decir este punto nombre es igual a nombre, la palabra clave, esto
se refiere al objeto actual que estamos in. Por ejemplo, en este momento estamos dentro de nuestro objeto
de teléfono, nuestra clase de teléfono. Así que al usar este punto nombre, estamos accediendo a la propiedad de
esta clase llamada nombre.

La segunda denominación aquí está la entrada de nuestro método. Así que estamos
estableciendo el valor de este nombre a lo que sea recibimos, somos la entrada de este método. Ahora
porque el modificador de acceso de este método es público, podemos usarlo dentro de otras clases. Por
ejemplo, desde dentro de la clase principal, si queremos establecer el nombre de nuestro iPhone,
podemos decir algo como esto antes de eso, vamos elimine esta línea de código. Podemos decir punto de iPhone,
digamos establecer nombre. Dentro de los paréntesis de este método, necesito pasar el nombre de mi
teléfono, digamos iPhone 11. De esta manera, No tengo acceso al campo directamente. Pero
usando el método, puedo cambiar el valor de ese campo. Pero, ¿y si queremos obtener
el valor de este campo? Bueno, podemos escribir otro método. Y así es como podemos crear
ese método. Podemos decir público como el tipo de retorno de este método, no voy
a decir nulo porque voy a devolver este nombre.

Así que voy a decir una cadena. Una vez más,
hay una convención aquí, podemos decir obtener nombre, no necesitamos nada como entrada.
Dentro de este método, vamos a volver alguna cosa. Y así es como puedes devolver algo
desde un método que escribes return. Después eso, lo que sea que vas a devolver. En este
caso, voy a devolver este nombre. Así que voy a decir este nombre de punto.

Una vez más,
esto se refiere al objeto actual, este punto nombres significa el nombre dentro de nuestro objeto teléfono.
Ahora que hemos creado este método, dentro nuestra clase principal, en lugar de decir el nombre del
punto del iPhone, puedo decir algo como esto, puedo digamos, iPhone dot get name. Si ejecutamos nuestra aplicación, una
vez más, deberíamos ver el nombre de nuestra forma. Ejecutemos la aplicación. Puede ver que
el iPhone 11 ha sido impreso. Además de crear este tipo de métodos nosotros mismos, tenemos
otra opción. Si bajamos aquí, nos Podemos usar la ayuda de nuestra ID, podemos hacer clic derecho
aquí, podemos ir a este método de generación.

Del mismo modo, podemos presionar ALT más insertar,
puede ver que aquí tenemos una lista de opciones. Tenemos getter, tenemos surfer, y también tenemos
getter y setter, si queremos crear getters y setters, podemos seleccionar eso. Después
de eso podemos crear el campo que queramos. para crear getters y setters, por ejemplo, si seleccionamos
una cámara y presionamos OK, puede ve que Id ha creado algunos códigos para nosotros,
puede ver que estos métodos son casi idénticos a los métodos que creamos anteriormente
aquí. Porque crear getters y setter Los métodos son muy habituales, Id puede ayudarnos con la
creación de los mismos. Pero ¿por qué estamos usando captadores y setters? Bueno, hay algunas razones
para eso.

La primera razón es la encapsulación. Hablemos rápidamente de eso un poco. Por ejemplo,
si no desea dar permiso a otros para cambiar el valor de nuestros campos, podemos
eliminar los setters. En ese caso, solo nos darles permiso para obtener el valor de los objetos
pero no establecer el valor de los objetos o viceversa, podemos crear métodos setter para nuestra
clase. En ese caso, podemos configurar el valor de nuestras propiedades de otras clases, pero
no podemos obtener el valor de estas propiedades. La primera razón es la encapsulación. La otra
razón es que a veces en tu colocador y getter métodos, es posible que desee realizar otras
operaciones también. Por ejemplo, si eres configurar un nombre para su teléfono, es posible que
desee validar ese nombre antes de configurarlo. En ese caso, puede tener alguna validación antes de
asignar el valor a su propiedad.

De acuerdo, eso es suficiente hablando de getters y setters. Eso ha
cambiado mucho los modificadores de acceso. de tener estos dos privados, y vamos a
crear getters y setters para los que no crear cualquiera. aquí abajo después de todo,
voy a presionar ALT más insertar, vamos a dicen getters y setters. Y seleccionemos
ambos, puedes ver que IntelliJ tiene creó estos códigos para nosotros. Pero debido a que
hemos cambiado el modificador de acceso de esta memoria ram a privado, ahora tenemos un error dentro de nuestra
clase principal aquí, en lugar de decir La memoria de puntos del iPhone es igual a ocho, puedo
decir algo como esto, puedo decir iPhone memoria de certificado de puntos. Y puedo pasar ocho.
Lo que hicimos aquí es una forma de instanciar objetos, hemos definido nuestro objeto. Después de eso,
hemos establecido diferentes valores para nuestro object, hay otra forma de instanciar sus objetos,
veamos eso también rápidamente.

Entonces, si vuelvo a mi clase de teléfono, arriba del
método de reproducción de música, puedo crear algo llamado constructor. Usemos la ayuda de ID
para crear ese constructor. Una vez más, Voy a ir a generar menú. El primer elemento
aquí es constructor aquí, voy para seleccionar todos los campos. Y voy a presionar
OK. Y como puedes ver, este código ha sido generado para nosotros, esto se llama constructor
en programación orientada a objetos. Nuestro constructor necesita tener público como modificador
de acceso, no puede ser privado. Después que el tipo de devolución de este constructor es un teléfono,
el elemento exacto que estamos en nuestro constructor no tiene ningún nombre. Y como
entrada de este constructor estamos recibiendo todos los campos de nuestra clase que estamos recibiendo nombre
un tamaño de pantalla, memoria y cámara dentro nuestro constructor estamos asignando diferentes
valores que hemos obtenido para su entrada a los campos de nuestra clase. Ahora que hemos creado
un constructor si volvemos a cambiar a nuestra clase principal, podemos ver que estamos recibiendo
una advertencia roja aquí.

La advertencia dice que cuatro argumentos esperados ambos encontraron cero,
significa que ahora que hemos creado el constructor, necesitamos pasar los valores directamente a los paréntesis
de esta nueva forma. y aquí está cómo puedes pasarlos. El primero era el nombre de
nuestro teléfono, digamos iPhone 11. No recuerdo el orden de
las cosas. Pero el siguiente era una pantalla. tamaño, digamos cinco, creo que el siguiente
era memoria RAM, digamos ocho, y el otro uno era cámara, digamos ocho también. Ahora que
hemos instanciado nuestro objeto como esto, no necesitamos configurar directamente los campos de nuestra
clase, también podemos eliminar esto de manera segura, vamos a borrar esto también.

En esta línea, estamos
imprimiendo el nombre de nuestro iPhone. Vamos ejecute la aplicación y vea si podemos imprimir el
nombre correctamente. Como puedes ver, iPhone 11 ha sido impreso. Entonces, cuando usa
constructores, debe pasar los valores de diferentes propiedades en el momento de instanciar sus
objetos, su clase puede tener múltiples constructores también. Por ejemplo, si bajo aquí, y
una vez más, hago clic con el botón derecho y vaya al menú Generar. Si selecciono konstruktor, esta vez
puedo seleccionar diferentes elementos. Para ejemplo, en este caso, voy a seleccionar solo
nombre y memoria. Ahora si presiono OK, usted Puede ver que tenemos otro constructor que solo recibirá
el nombre y la ejecución de la memoria. Pero si pasa el cursor sobre este teléfono, puede ver
que este constructor nunca se usa. Si nosotros volvamos a nuestra clase principal, podemos crear
otro teléfono y podemos usar el segundo constructor.

Hagamos eso rápidamente. Voy a hacer eso después
de estas dos líneas de código. digamos teléfono. Y esta es la belleza de la programación orientada
a objetos. Cuando creas una clase, Puedes reutilizar esa clase tantas veces como
quieras. Por ejemplo, aquí voy a definir una fuente completamente nueva. Llamemos a esta pizza,
digamos que es igual a un teléfono nuevo. Este vez que voy a usar el segundo constructor para
el nombre voy a guardar el píxel tres, y cuatro la memoria, voy a decir 16 se ve
que la ID esta contenta con esta forma de definir un nuevo teléfono. Ahora tenemos dos instancias
diferentes de nuestra clase de teléfono que tienen dos tipos de constructores para una clase se llama
polimorfismo en Java polimorfismo tiene otros tipos también. Hablaremos de ello más adelante. De
acuerdo, creo que es un buen punto para detenerse.

El video aquí. En el siguiente video vamos a continuar
nuestra charla sobre orientación a objetos. programación. Quedan muchas más cosas de las
que tenemos que hablar. nos vemos en el próximo vídeo En el video anterior, hemos hablado
brevemente sobre las clases, qué son, cómo podemos crearlos y también cuáles son los usos
más importantes de una clase en este video estamos Voy a hablar sobre algunos conceptos importantes con
respecto a la programación orientada a objetos. El primero de esos conceptos es la herencia.
Voy a hablar de la herencia con un ejemplo porque creo que eso haría todo más fácil
de entender Primero que nada, voy a para crear una clase llamada doc. Para esta clase
de documento, voy a definir algunas propiedades.

Por ejemplo, voy a definir un nombre, digamos un nombre
de cadena privada. Después de eso, me voy para definir un color, digamos color de cadena privada.
Definamos también el número de patas, digamos privado int, piernas. Y también voy
a definir un booleano que indique que si un perro tiene cola o no, digamos booleano
privado, llamémoslo cola. también cree un constructor para nuestra clase presionando
ALT más insertar, puede ver el diálogo en aquí. Seleccionemos todos los campos. También vamos
a crear algunos getters y setters para nuestro clase también, una vez más, presionando ALT más
insertar.

Al seleccionar este captador y setter, podemos crear getters y setters. También
definamos un método para nuestra clase como bien. voy a decir public void, vamos a nombrar
este metodo comer, voy a indicar el comportamiento alimentario de un perro. Como entrada
de este método, voy a recibir una comida. Así que digamos que bebamos comida. Y dentro
de este método, solo voy a imprimir algo, digamos comer clase nuestra comida.

Bien, no hay nada especial
en esta clase. En primer lugar, nosotros han creado estos cuatro campos. Después de
eso hemos creado el constructor, hemos creado nuestros getters y setters. Y hemos creado este
método de comer, o hemos hablado de por qué. Estoy haciendo todo esto, también creemos otra clase
llamada pájaro. digamos pájaro. Para esto clase de pájaro, también tengamos un nombre. Además,
tengamos un color. Definamos dos más campos, uno para el número de tramos, tramos
privados int, y también otro que indica que si nuestro pájaro tiene cola o no, digamos
booleano privado, digamos que tiene, para esta clase de aves, también
creemos un constructor y algunos captadores y setters. También voy a crear mi método de muerte
para esta clase de pájaro, digamos público vacío, comer.

Consigamos el nombre de nuestra comida. Y dentro
de este método, creemos algo. Vamos decir comer esa comida. Probablemente puedas
ver el patrón aquí, hay muchas similitudes. entre nuestra clase de aves y perros. Ambas clases
tienen cuatro campos, tienen un constructor, tienen todos estos getters y setters. Y ambos
tienen este método de comer. En programación, esto no es eficiente, básicamente
te estás copiando y pegando.

En cambio de definir nuestra clase pájaro y punto así,
vamos a usar otro concepto en objeto programación orientada llamada herencia. Para
eso, antes que nada, voy a crear un clase de animales Y después de eso, extenderé
la clase animal al espíritu y al perro. Vamos ver cómo podemos hacer eso dentro de mi paquete,
voy a crear mi clase animal, vamos decir animales. En primer lugar, agreguemos algunos campos,
voy a usar los cuatro campos anteriores. Copiémoslos también desde aquí. Y después de
eso, vamos a crear un constructor y captadores. y setters y nuestro método eat. No te preocupes,
reduciremos la cantidad de copiar y pegar. en un minuto, digamos público, sin comer comida de cadena
como entrada. Y vamos a imprimir el nombre de nuestro pie. Ahora que hemos creado esta clase de
animales, creamos clases de pájaros y puntos. va a ser mucho más sencillo. Por eso voy
a borrar todas las citas dentro de este clase de pájaro Borrémoslos todos.

Esta vez,
en lugar de definir todos los campos y constructores y métodos, voy a decir extends
animal. De esta manera estamos diciendo que nuestro pájaro es un animal, vamos ampliando
la clase animal y más adelante si queremos, también podemos personalizar nuestra clase de nacimiento.
Pero ahora mismo puedes ver que nos estamos poniendo una advertencia roja. Y la advertencia aquí dice
que no hay un constructor predeterminado disponible en este paquete. Básicamente, dice
que necesitas el constructor, presionemos ALT más insertar aquí. Y seleccionemos constructor.
Y como puede ver, la identificación tiene generó este constructor, también puede ver
que aunque no tenemos ningún campo en nuestra clase de nacimiento, estamos recibiendo
algunos argumentos en el constructor. Pero este constructor tiene una sintaxis bastante extraña. No hemos visto esta
súper palabra clave hasta ahora. Básicamente, esto super palabra clave significa que haga lo que esté
haciendo con estos parámetros en el padre clase. En este caso, nuestra clase principal es animal. Entonces
este súper está pasando todos estos argumentos al constructor de nuestra clase animal.

Significa
que está configurando todos los valores para los campos de nuestro animal. Ahora que he creado
mi clase de aves como esta, si quiero para instanciarlo, por ejemplo, dentro de la clase
principal, puedo hacer como antes, digamos pájaro. Llamémoslo Fénix, digamos que es igual
a pájaro nuevo. Y como puedes ver, el constructor está esperando nuestros argumentos. En
primer lugar, necesitamos un nombre. eso es pasado Nina, necesitamos el color, digamos dorado. Después
de eso, necesitamos el número de patas, que voy a pasar a, y un booleano indicando si nuestro
pájaro tiene cola o no, eso ha pasado mediante.

Una vez más, recuerde que en nuestra clase
de aves no teníamos ningún método adicional. Pero en mi clase principal, si quiero, puedo usar algunos
de los métodos getter de nuestra clase principal, en este caso, animales. Por ejemplo, si quiero obtener
el nombre de mi pájaro, puedo decir algo así, puedo decir Phoenix dot get name, puedes
ver que tenemos todos los getter métodos. Ejecutemos la aplicación. Y a ver si podemos
imprimir el nombre de nuestro nacimiento, puede ver que el nombre se ha impreso con éxito.
Además de los métodos getter y setter, también puede tener acceso a todos los otros
métodos que hemos creado. Por ejemplo, si recuerdas dentro de la clase animal, hemos
creado este cada método, veamos si podemos usarlo en nuestra instancia de pájaro.

Por ejemplo, aquí
dentro, si digo Phoenix, eso, no sé qué es Phoenix, su
nacimiento, solo pasemos carne. y vamos ejecutar nuestra aplicación. Y veamos si podemos
ejecutar con éxito el método eat. Y como Puedes ver aquí, Nina está comiendo carne.
Ahora que ha creado su clase de nacimiento, También puedes cambiar la clase de perro.
Por ejemplo, aquí, voy a eliminar todos estos códigos una vez más. En cambio,
voy a extender el animal más, una vez más, digamos que extiende el animal, puedes ver la advertencia
roja. Y eso es porque necesitamos la constructor, puede ver que la cantidad de códigos
similares que estaba copiando y pegando es mucho menos en este momento, la clase de aves y
perros son básicamente las mismas. pero sabemos seguro que un perro y un pájaro no son lo mismo,
pueden tener otros campos. Y también otros comportamientos también. Si lo desea, también
puede personalizar las clases de su hijo. Por ejemplo, dentro de mi clase de nacimiento,
quiero agregar otro campo, voy a decir privado, digamos que no son venas, sabemos que los perros
no tienen alas.

Aquí voy a borrar este constructor y voy a crearlo una
vez más, porque voy a usar la ayuda de mi ID, presionemos ALT más insertar.
Aquí, voy a seleccionar Winx. Y esta vez, como puede ver, el constructor ha cambiado un
poco, la super declaración es como la Lo mismo significa que haga lo que esté haciendo
con todos estos cuatro campos. Pero porque dentro de nuestra clase padre dentro de la clase
animal, no tenemos un campo de alas, estos alas no se ha pasado a esta super declaración. Así que estamos
estableciendo el valor de las alas directamente dentro del constructor de esta clase de aves. De esta manera
podemos personalizar nuestras clases secundarias. En este momento el pato no tiene ningún campo de alas,
pero nuestro pájaro hace lo que es ahora si vuelvo a mi clase principal, debería recibir
una advertencia.

Y la advertencia aquí dice que necesitas pasar un guiño que también es fascinante
aquí también. Por ejemplo, voy a decir También podemos crear métodos getter y setter
para estas alas. por ejemplo dentro nuestra clase de aves aquí abajo, presionemos hacia arriba
más insertar y agregar seleccionar getter y setters. Ahora que hemos creado los getters y setters, veamos
si podemos imprimir el número de alas. Por ejemplo, aquí abajo, voy a decir Phoenix
dot get wings. Ejecutemos la aplicación. Y puede ver que se ha impreso dos como el
número de medios al lado de getter y setter métodos. También puede tener otros métodos dentro
de su clase secundaria. Por ejemplo, dentro la clase de espíritu, si quiero, también puedo definir
un método de vuelo.

Veamos rápidamente que digamos vacío público volar. No voy a recibir nada como entrada, simplemente
imprimamos algo. digamos esto no obtener nombre. Además, si recuerdas del video
anterior, dije que esta palabra clave se refiere al objeto actual en el que se encuentra. En
este caso, dentro de la clase pájaro, no tener algún método getname. Pero debido a que estamos
extendiendo la clase animal, podemos usar el empezar a conseguir, digamos que está volando. Entonces, además
de usar campos, también puede personalizar su Clases secundarias con diferentes métodos. Veamos
si podemos llamar a este método desde adentro. nuestra clase principal, digamos Phoenix dot fly. Como
puedes ver, Nina está volando. también al lado la búsqueda de nuevos métodos dentro de su clase secundaria.
También puede cambiar el comportamiento de métodos de su clase padre. Por ejemplo, si fueras
Recuerda, dentro de la clase de animales, teníamos este método de comer, estoy hablando
de este, que dentro de este método estamos diciendo comer comida dentro de nuestra clase de aves.
Si queremos, podemos cambiar eso.

Por ejemplo aquí mismo, voy a presionar Ctrl más Oh,
pueden ver que estamos viendo una lista de diferentes métodos, voy a anular este método
de comer. Entonces, al anular, estás voy a decir que voy a cambiar el comportamiento
de este método de comer de lo que está sucediendo dentro de la clase padre. Una vez más, estamos viendo
esta súper palabra clave, significa que hacer lo que sea que esté haciendo con este parámetro
dentro de la clase principal. si quieres, tu puede eliminar esta súper declaración por completo,
pero déjalo por ahora, eliminaremos eso mas tarde. Después de esta súper palabra clave. Voy
a imprimir otra declaración aquí. Vamos solo di comer terminado. Así que de esta manera, hemos
cambiado el método de comer dentro de nuestra clase de niños de lo que estaba dentro de la clase
de animales. Ahora mismo dentro de nuestra principal class, hemos ejecutado esta línea de código
para Unix que come comentemos las líneas después de eso, para que podamos ver cuál va a ser el
comportamiento de este método de alimentación.

Vamos ejecute la aplicación, puede ver que estamos diciendo
comer carnes. Y después de comer terminado, si desea cambiar completamente el
comportamiento de su método dentro del niño class, simplemente puede eliminar este método super
that eat. Por ejemplo, aquí dentro, voy decir masticar comida en lugar de comer fruta. Entonces, tanto
en la clase de niños como en la de padres, tenemos este octavo método, pero su comportamiento es
diferente. Vamos a ejecutar la aplicación y ver si podemos ver la diferencia, podemos ver que estamos masticando
carne.

Entonces, lo que hicimos hasta ahora se llama herencia en la programación orientada a objetos.
Hemos heredado la clase de nacimiento de los clase de animales También puede continuar esta herencia
varias veces. Por ejemplo, si quieres, puedes heredar el objeto perro. Vamos a crear rápidamente
otra clase aquí. Por ejemplo, digamos Shephard. Ahora aquí, puedo decir que extiende
la clase de perro, puedes ver que una vez nuevamente, estamos recibiendo esta advertencia roja. Vamos
a crear nuestro constructor con el fin de superar ese problema, podemos ver que aunque dentro
del campo doc, no tenemos ningún campo. Pero dentro de nuestra clase Shephard en el constructor,
necesitamos todos esos argumentos, porque el padre de esta clase Shephard, que es perro,
es hijo de otra clase, que es animal.

Así que puedes hacer esta herencia tantas veces
como quieras, también puedes crear otra clase y extender la clase Shefford. Pero no creo
que eso signifique nada aquí, solo quería decir que usted tiene esa opción. Vale,
creo que ya basta de hablar de herencia. El otro concepto del que voy a hablar se llama
polimorfismo. hemos hablado un poco sobre el polimorfismo en el video anterior, pero
hablemos más sobre eso aquí. así que en video anterior, dije que un tipo de polimorfismo es
que una clase tenga múltiples constructores, por ejemplo, dentro de nuestra clase animal,
si tuviéramos otro constructor aquí, que aceptar diferente número de campos.

Por ejemplo, los
primeros tres ahora que tenemos dos constructores, este es un tipo de polimorfismo. Ahora podemos crear
esta clase de animal en dos diferentes maneras. Básicamente, polimorfismo significa tener
múltiples formas. Pero hay dos tipos más de polimorfismo. Pero antes de hablar de eso,
eliminemos este constructor, no estoy Seguro que si vas a necesitar el otro
tipo de polimorfismo que hemos usado hasta ahora se trata de este método de comer. Entonces, dentro
de esta clase de animales, teníamos este método ocho, pero también lo teníamos dentro de la clase niño,
que es nacimiento.

Pero estos dos ocho métodos tienen diferentes formas, significa que estamos haciendo
cosas diferentes dentro de cada uno de estos métodos. Este es otro tipo de polimorfismo dos métodos
dentro de una clase principal y secundaria que están haciendo el mismo trabajo de manera diferente.
También tenemos otro tipo de polimorfismo. Y eso es con los métodos mismos. No tenemos este
siguiente método dentro de nuestro animal. clase. Pero aquí, también podemos tener otro
método llamado volar, veamos rápidamente cómo podemos crear otro método llamado vuelo.
voy a decir vacio publico volar. Pero esto tiempo entre paréntesis, voy a recibir
algunos argumentos, por ejemplo, voy para recibir una velocidad como puede ver, el compilador
está contento con esta forma de definir dos diferentes métodos con el mismo nombre. Ahora, si vuelvo
a mi clase principal, puede ver que no están recibiendo un error, pero antes de eso, creo
que debería descomentar esta línea de código.

Aunque no recibimos una advertencia de error
aquí, significa que estamos usando el primer método de flujo Permítanme cerrar todas las
clases innecesarias. Dentro de la clase de aves estamos usando el primer método, pero si queremos
usar el segundo método, solo necesitamos pasar algunos argumentos aquí. Por ejemplo,
pasemos 100 podemos tener métodos con el mismo nombre cuando tenemos diferente número de argumentos,
o alternativamente, cuando tenemos diferentes tipos de argumentos, por ejemplo, en este
caso, estamos pasando un número entero. Pero si tuviéramos otro método, por ejemplo, en el
que pasamos una cadena, ese método puede tener el nombre de la mosca también. Veamos eso brevemente,
digamos mosca de vacío público. y dentro de la paréntesis, no sé, pasemos una cadena. Solo
digamos nombre, puedes ver que el El compilador está contento con esta forma de definir un
método con el mismo nombre. Así que además de la diferencia en el número de parámetros, el tipo
de parámetro también es importante.

Este aquí también se llama polimorfismo. usando métodos
con el mismo nombre de diferentes maneras, bien, eliminemos estos dos, no creo que
los vayamos a necesitar. y creo que es un buen punto para detener el video aquí. En
el siguiente video, lo primero que vamos a empezar a hablar de la composición en la programación
orientada a objetos. nos vemos en la próxima video. En el video anterior, hemos hablado sobre
la herencia y el polimorfismo. En esto video, vamos a hablar sobre la composición en la programación
orientada a objetos. En anteriores videos, dije que las clases son útiles para cuando
quieres definir tus datos personalizados escribe. Por ejemplo, imagina que vas a crear
un auto en ese auto tienes múltiples sistemas, por ejemplo, tiene un sistema para un estereotipo,
su automóvil también puede tener algunos motor, también puede tener un sistema de combustible.
Si quieres simular un coche. en programación, puede crear diferentes clases, por ejemplo, para el
motor de un sistema estéreo, y también para sistema de campo. Y después de eso dentro de su clase
de automóvil, puede componer todas esas clases para tener un auto, veamos cómo podemos usar la composición
en Java.

En mi paquete, voy a crear una clase llamada motor. Para este motor, voy
a tener dos campos. En primer lugar, estoy va a definir un modelo. Así que digamos modelo de
cadena privado. Y después de eso, hagamos una entero, int privado. Voy a nombrar este número
entero, rpm, rpm significa ronda por minuto, es solo una propiedad de diferentes motores.
Voy a mantenerlo muy simple. Por eso pienso estos dos serían suficientes.

Después de eso, vamos a crear
rápidamente nuestro constructor y captadores. y setters. Vamos a crear una clase de coche. Y veamos
cómo podemos usar este motor en el interior eso, digamos nueva clase de Java. Llamémoslo
coche. Para esta clase de autos, voy a definir cuatro campos. En primer lugar, pasemos un nombre, nombre de cadena privada. Después de eso, tengamos un número
entero para el número de puertas. Después eso, definamos el color de la cadena privada de nuestro
automóvil. Y después de eso, voy a incluir o componer un motor aquí. Para eso,
simplemente puedo decir motor privado con E mayúscula. Y aquí, puede ver que en mi paquete,
tengo una clase de motor, puedo importar eso en esta clase. Llamémoslo
motor. En aras de la simplicidad, he compuso solo una clase dentro de esta clase.
Pero si quieres, puedes crear otra clase.

Para un sistema estéreo y su sistema y todo lo demás
que desee. Pero creo que obtendrás mi punto. Si uso solo una clase después de la muerte
como otras clases, puedo crear mi constructor, puede ver que este motor se ha pasado a nuestro constructor
de la misma manera que lo hemos hecho pasado otros tipos de datos como enteros y cadenas,
también podemos tener getters y setters de la misma manera que lo hicimos para las clases anteriores.
Ahora que hemos creado este coche, podemos ejemplificarlo.

Por ejemplo, dentro de nuestra clase
principal. Por ejemplo, si quiero tener un coche objeto aquí, puedo decir coche, llamémoslo
Mercedes, es igual a coche nuevo. Como puedas mira, el constructor aquí requiere cuatro campos y
el color de las puertas de nombre, y también un motor por el nombre Voy a pasar Mercedes AMG por
la cantidad de puertas que ha pasado por el color, digamos plata. ¿Qué deberíamos pasar
como el motor aquí? Bueno, podemos pasar nuestro motor de dos maneras. En primer lugar, podemos
crear nuestro motor antes de esta clase de corte. Por ejemplo, aquí puedo decir motor, llamémoslo
motor es igual a motor nuevo. Y Puedo pasar un modelo y RPM para que este motor
sea instanciado, por ejemplo, voy a digamos tres notas para las RPM, digamos 8000. Después
de crear nuestros objetos de motor, podemos páselo al constructor de nuestro auto por ejemplo,
aquí puedo decir motor y me gusta que podemos crear nuestro auto pero la otra manera
es pasar su motor directamente al constructor de tu coche Por ejemplo, puedo ver un nuevo
motor aquí.

Y no puedo instanciar mi objetos del motor directamente dentro del constructor.
Digamos Renault Vamos rápido 1000. Ahora que lo hemos pasado directamente, no necesitamos la
primera línea. Por supuesto, sabemos que Mercedes, no usamos motor Renault, pero creo que
aquí no importa. Ahora que hemos instanciado nuestros objetos de automóvil, podemos tener acceso
a todos los campos como lo hicimos antes. Por ejemplo, si desea imprimir el nombre de nuestro coche,
podemos decir algo como esto, podemos decir Mercedes puntea el nombre, o que se le ponga nombre a las riberas.
Pero, ¿y si queremos obtener el modelo de la motor de este coche? Bueno, para eso, podemos
decir algo como esto, imprimamos el motor modelo.

Además, podemos decir Mercedes dot obtener motor, este método aquí. Después de eso, podemos
volver a decir dot get model. Así que esto obtener el método de motor devolverá un objeto de motor
en el que podemos realizar otro operador de punto en eso, ejecutemos la aplicación y veamos cuál
sería el resultado. En primer lugar, nosotros Puede ver el nombre de nuestro coche, y después de
eso, puede ver el modelo de motor, que se renombra. Además, en lugar de usar los métodos de su motor,
puede obtener el objeto del motor directamente. Por ejemplo, aquí antes de la declaración de la impresora,
voy a decir motor, llamémoslo motor es igual a, digamos, Mercedes dot get engine. Puede
ver el tipo de devolución aquí. pero cada vez que no está seguro del tipo de devolución, puede
presionar la tecla de control. Y por flotar en su método, puede ver el tipo de retorno,
puede ver la declaración de su método que dice motor público obtener motor,
significa que este método va a devolver un objeto de motor.

Ahora que ya tienes tu instancia
de motor, puedes realizar todo tipo de operaciones en eso, en lugar de presionar la tecla de control
y pasar el cursor sobre su método, hay otro opción para obtener el tipo de retorno y, de
hecho, la declaración de su método. Y así es como puede hacerlo, puede hacer clic
en el nombre de su método y puede presionar abajo la tecla de control. De esta forma, se puede ver
alguna información sobre la declaración de tu método Este tipo de documentación es
especialmente útil cuando se utiliza una biblioteca de terceros o algunos métodos integrados.

Por
ejemplo, si hacemos clic en esta línea de impresión y presiona Ctrl Q, puede ver que la documentación
nos está dando mucha más información. Por ejemplo, en este caso, dice que este método
está imprimiendo una cadena y luego termina la línea, puede ver información sobre el método
en sí. Además, si quieres, tú puede tener este tipo de información sobre los métodos
que usted mismo crea.

Por ejemplo, en este método de obtener motor. Si cambiamos a nuestra clase
de automóvil, podemos crear algún tipo de documentación. Busquemos ese método. Y así es como puede
hacerlo, debe agregar un comentario aquí. En videos anteriores, hemos visto cómo crear un nuevo
comentario usando dos barras que podríamos hemos creado nuestro comentario. Pero este tipo de
comentarios no son útiles aquí. En cambio, podemos usar una sola barra. Y tras ello, puede
que tengamos que empezar pulsando y enter. Puede ver que también tenemos este tipo de comentarios.
Este tipo de comentarios son útiles. para cuando tienes varias líneas.

Y aquí puedes
tener algún tipo de información en la que más adelante se mostrará cuando presione Ctrl
q en el nombre de su método. Por ejemplo, aquí, digamos que regresa el motor de nuestro auto.
Ahora que hemos proporcionado esta información aquí, si volvemos a nuestra clase principal en la
declaración de nuestro método en la principal, si presionamos Ctrl más Q, puedes ver que aquí
dentro podemos ver esa información. Algunas veces este tipo de comentarios también pueden ser
útiles. Pero hay más en este tipo de comentarios Por ejemplo, podemos proporcionar algunos enlaces,
pero hablaremos de eso más adelante en el futuro. vídeos Entonces, esta forma de usar diferentes clases
dentro de otras clases se llama composición.

En la programación orientada a objetos. Una vez
más, si ha creado algunas otras clases, por ejemplo, una clase de sistema estéreo y también una clase
de sistema de combustible, podría haberlos agregado uno por uno aquí también. Pero en aras de la
simplicidad, acabo de incluir este motor, de esta manera podemos componer diferentes objetos dentro
de una clase. Está bien, creo que es suficiente.

Hablando de composición. Hablemos de una palabra
clave en Java llamada nom. Antes de que, cerremos esta clase de autos. Y vamos a comentar
todas estas líneas de códigos. Hay algunos veces que no desea instanciar sus objetos inmediatamente.
Por ejemplo, abajo en aquí puedo decir que el automóvil Mercedes es igual
a No quiero instanciar mi objeto de automóvil en aquí como lo hicimos antes. En su lugar, quiero publicar
uno que tiene muy pocas líneas después de esto para que puede pasar valores nulos para sus objetos. Veamos
ahora aquí también. Esta palabra clave nula en Java no significa nada. Significa que este
coche Mercedes no es nada cuando el valor de un objeto es ahora No puede realizar ningún tipo
de operación en eso. Por ejemplo, aquí, No puedo decir Mercedes dot get name, por ejemplo, no obtenemos
un error de tiempo de compilación, es significa que nuestra aplicación se va
a crear.

Pero si echas un vistazo al resaltado aquí, dice que este método no producirá ninguna
excepción de puntero. Si tu recuerdas de videos anteriores, dije que cada vez que ocurre
una excepción nullpointer, su aplicación se va a estrellar. Entonces, el error aquí será un
error de tiempo de ejecución y no una compilación. error de tiempo Ejecutemos nuestra aplicación.
Y vamos a ver qué pasaría. Puedes ver eso aquí recibimos una advertencia roja en nuestra consola
que dice Java dot Lang dot nullpointerexception. En general, siempre debemos evitar las excepciones en
nuestra aplicación. Más adelante hablaremos sobre cómo podemos hacer eso, pero por ahora, supongamos
que sabemos cada vez que un objeto es que ahora no podemos realizar ninguna operación
sobre eso, por ejemplo, no podemos usar los métodos dentro de ese objeto. Entonces, cuando no esté seguro
acerca de los valores nulos, por ejemplo, siempre que está recuperando algunos datos de un servidor web o
de su base de datos local, en primer lugar, debe verificar si su objeto es nulo o no.
Y así es como puedes hacer eso.

Para ejemplo, puede crear una declaración if antes de que este
punto de Mercedes obtenga el nombre, puedo decir if let's di mercedes no es igual a Ahora, voy a poner una declaración
if aquí en caso de que nuestro objeto no sea ahora vamos a llamar a este método, pero en
el caso contrario, voy a imprimir algo. Digamos que el automóvil estaba ahora, ejecutemos la aplicación
una vez más, esta vez, puede ver que no están viendo la excepción, lo cual es bueno.
Pero en este momento, no estamos haciendo nada útil. Dado que nuestro valor es ahora, solo estamos imprimiendo
algo, a veces este es el comportamiento deseado. Pero a veces es posible que desee verificar cuál fue
la causa de que sus objetos sean no, por lo que no significa nada en Java? Bien, comentemos
todo esto. Y hablemos de otro palabra clave en Java llamada final. Entonces, hasta este punto,
cuando queremos crear una instancia de nuestro objeto o variable, porque he dicho algo como esto,
porque dije int a es igual a cinco.

Por ejemplo, más adelante, podríamos haber cambiado
esto a por ejemplo, porque he dicho, A es igual a cinco más cinco por un plus de diversión.
De esta forma, podríamos haber cambiado el valor. de nuestra variable. Pero hay algunas veces que
necesita estar seguro de que el valor de su variable no cambiaría. En esos casos, puede utilizar
la palabra clave final. y aquí está cómo puede hacer eso antes del tipo de su variable
puede decir final final int a es igual a cinco.

Ahora bien, si trato de cambiar
el valor de mi variable, por ejemplo, como antes, si digo que a es igual a más uno, puede ver
que recibimos una advertencia aquí la advertencia dice que no se puede asignar un valor a
una variable final. Así que siempre que estés declarando sus variables y clases como finales, no puede cambiar
el valor de esa variable o clase. Veamos también el caso cuando definimos nuestras
clases como finales, voy a comentar estas dos líneas de código. Y luego aquí, voy
a decir final, digamos motor, nombre su motor es igual a un motor nuevo. Pasemos un modelo
y rpm. Ahora bien, si trato de cambiar el valor de este motor, por ejemplo, si digo motor
es igual a motor nuevo, con otros parámetros, por ejemplo, cambiemos las RPM,
digamos 7000. Una vez más, puede ver el error, el error dice que no se puede asignar
un valor a la variable final. Pero hay un punto aquí.

Cuando declara sus objetos como finales,
no puede cambiar la instancia completa de ese objeto. Pero puedes cambiar las propiedades
de tu objeto. Por ejemplo, aquí, si Ud. recuerde, dentro de nuestra clase de motor, teníamos
dos métodos setter que con la ayuda de ellos, podríamos haber cambiado el valor de dos
propiedades. Por ejemplo, si quisiéramos cambiar las RPM, porque dije algo así como que el punto del motor
establezca las RPM en, digamos, 10,000. Puedes ver que a pesar de que declaramos nuestro motor como final,
podemos cambiar sus propiedades, simplemente no podemos cambiar toda la instancia, podemos cambiar sus
propiedades usando las palabras clave finales. útil de vez en cuando. Bien, creo que es suficiente
para este video. En el siguiente vídeo, vamos a tener un desafío rápido para asegurarnos
de que entendemos los conceptos de la programación orientada a objetos. Nos vemos en
el próximo vídeo. Este es nuestro desafío. Imaginar que eres médico y quieres controlar a tu
paciente.

En esta aplicación. Primero de todos, estás mostrando el nombre y la edad
del usuario al médico. y despues de eso tu puede ver una lista de diferentes órganos en los que Un
médico puede seleccionar el primer órgano, el izquierdo ojo. Seleccionemos eso. Aquí, puede ver que
estamos viendo algunos detalles sobre el órgano, por ejemplo, el nombre, la condición
médica y también el color del aceite. Después de eso, le dimos la opción al médico de
cerrar el aceite. Y también si el ojo está cerrado, vamos a abrir eso seleccionemos uno aquí
para cerrar los ojos, pueden ver que ojo izquierdo cerrado. Una vez más, estamos viendo lo
mínimo de nuestros órganos. Seleccionemos dos en este caso. Esta vez, si no quiero cerrar o
abrir el ojo, puedo poner cualquier número al lado de uno, por ejemplo, si pongo dos aquí,
pueden ver que una vez más, estamos viendo la lista de diferentes órganos. Seleccionemos tres
para ver el corazón. Una vez más, puedes ver que estamos viendo algunos detalles sobre el
corazón. Después de eso, tenemos la capacidad para cambiar la frecuencia cardíaca.

En una situación
normal de médico y paciente, este no sería el disponible opción. Pero aquí, solo queremos demostrar algún comportamiento
para nuestro órgano cardíaco. entonces si nosotros seleccione Vani, aquí, el escáner está pidiendo nuestra
nueva frecuencia cardíaca, que puedo poner 75. Y puede ver que la frecuencia cardíaca cambia a 75. Seleccionemos un estómago. Una vez más, puedes
ver los detalles del estómago, tenemos uno. comportamiento aquí, que es digerir. Si seleccionamos eso,
podemos ver que la digestión ha comenzado. Una vez más, esta es una situación hipotética.
Y en una situación normal, no se puede pedir el paciente para digerir la comida. Seleccionemos
también cinco aquí para ver el esquema. Este tiempo para la piel, puedes ver que no estamos viendo
ningún comportamiento en su lugar, solo estás viendo algunos detalles. Después de eso, una vez más,
tenemos nuestra lista, en la que si ponemos seis o para cualquier otro número, cerraremos
la aplicación.

Pongamos seis aquí. Y como puede ver, la aplicación se ha cerrado
con éxito. al resolver este desafío, yo quiero que practique los conceptos de programación orientada
a objetos de los que hemos hablado en el últimos tres videos. Así que asegúrate de usarlos.
De acuerdo, pausa el video aquí y ve a resolver el reto. Después de eso, vuelve al video.
Y veamos mi solución para el desafío. también. Aquí está mi solución para el desafío.
En primer lugar, voy a crear un paquete. dentro de mi carpeta fuente. Llamémoslo o dot
maker dot o p challenge. Dentro de este paquete, Voy a crear mi clase de órgano. Dentro de esta
clase de órgano, voy a tener dos campos, digamos cadena privada, nombre y también condición
médica de cadena privada. voy a mantener es sencillo Así que creo que estos dos estarían bien.
Después de eso, vamos a crear el constructor.

Y después de eso, vamos a crear todos los getters
y setters. no estoy seguro de que vayamos para usar todos estos getters y setters. mas tarde.
Si no los usáramos, simplemente borra los. Además de estos, voy a tener otro método
dentro de esta clase. obtener nombre detalles. Veamos eso también. Digamos vacío público,
obtener detalles. y vamos a imprimir algunos detalles sobre este Oregón. En primer lugar, digamos
el nombre. Además, estas cosas se nombran. Después de eso, imprimamos también una condición
médica de este órgano.

Condición médica más estos que obtienen condición médica. Eso es todo lo que
necesitamos dentro de esta clase de órgano. vamos rápido crear nuestros órganos uno por uno. En primer lugar,
voy a crear un órgano llamado I. Vamos a digamos que dentro de esta iclass voy a tener una
cadena llamada color. Y yo después de eso vamos tienen un booleano que indica si el ojo está abierto
o no. Así que digamos que se abre un booleano privado. Después de eso, es hora de extender la clase de Oregón,
digamos que extiende a Oregón. aquí nosotros están usando la herencia. Ahora es el momento de crear
nuestro constructor. Seleccionemos ambos de estos dos campos. Y después de eso, vamos
a crear todos los getters y setters. Una vez de nuevo, no estoy seguro de que vayamos a utilizar
todos estos getters y setters. mas tarde. Si no los usamos, simplemente los eliminamos. De
acuerdo, anulemos la obtención de detalles. método. Puedo hacerlo presionando Ctrl más o seleccionando
el método obtener detalles.

Ahora nosotros puede cambiar Utilice este método. Por ejemplo,
en este caso imprimamos también el color del ojo. digamos color. Además, este punto obtiene color.
Dentro de esta iclass, voy a tener dos otros métodos también, vamos a verlos, digamos
public void, open. Dentro de este método abierto, Voy a cambiar el valor de este valor booleano a verdadero. Así
que digamos que este conjunto de puntos se abrió. Y aceleremos. Después de eso, traigamos
algo que indique que la IA ha sido abrió. Digamos esto que obtiene el nombre, puede ver
que no tenemos ningún método para obtener el nombre. Dentro de esta clase, estamos usando el nombre
de la clase principal, que es Oregon, vamos a decir más abierto. Tengamos otro método llamado
close. Voy a salvar el vacío público, cerca. Una vez más, antes que nada, voy
a cambiar el valor del booleano a falso. Digamos que este conjunto de puntos se abrió y pasemos
falso. Después de eso, imprimamos algo.

Digamos que este punto recibe nombre, además de cerrar. Eso es todo lo que necesitamos dentro
de esta iclass. Vamos a crear rápidamente otra clase. para el corazón digamos corazón. Para esta clase
de corazón, voy a agregar otro campo llamado tasa, digamos tasa int privada. Es hora de extender
la clase de Oregón extiende a Oregón. Y después de eso, necesitamos crear nuestro constructor. Después
de eso, necesitamos crear nuestros captadores. y setters. Estoy presionando ALT más insertar para
obtener ese diálogo. En caso de que sea confuso para ti. Después de eso, es hora de anular el método
de obtención de detalles presionando Ctrl más Ah, y al seleccionar el método obtener detalles,
tenemos eso aquí, solo voy a imprimir la frecuencia cardíaca, digamos frecuencia cardíaca. Además, este
punto obtiene la frecuencia cardíaca o obtiene la frecuencia. Ese es todo lo que tenemos que hacer dentro de esta clase de corazón.
Vamos a crear rápidamente una clase de estómago.

Vamos decir estómago. Dentro de esta clase islámica,
voy a tener un booleano que es un booleano privado, estos vacíos indican si el islámico está vacío
o no. Después de eso, es hora de extender el La clase de Oregón se extiende a Oregón. Y después de
eso, necesitamos crear nuestro constructor. Vamos a crear nuestros getters y setters. Y después de eso, anulemos el
método de obtención de detalles. dentro de esto obtener método de detalles. En primer lugar, voy
a comprobar si el estómago está vacío o no. Así que digamos que si esto está vacío, usaré
el método aquí. Si el estómago está vacío, voy a imprimir algo que voy a decir necesita
ser gordo.

Pero en el caso contrario, imprimamos que el estómago está lleno. También
creemos otro método para esta clase. llamado digerir. Digamos resumen vacío público.
Solo imprimamos algo, digamos digerir empezar. Bien, hemos terminado con nuestra clase de estómago.
Vamos a crear rápidamente la clase de piel. también. Para esta clase de escaneo, voy a definir
dos campos más. En primer lugar, estoy va a definir una cadena para el color de
la piel. Después de eso, voy a definir un número entero para la suavidad de su piel,
digamos suavidad privada. este entero va a ser un número de cero a 100, que indica
la suavidad de la piel. Después que es hora de extender la clase orgánica. Después
de eso, necesitamos crear nuestro constructor. A continuación, necesitamos crear nuestros getters y setters.
Y después de eso, anulemos la obtención de detalles. método. Dentro de este método, imprimamos también un
color de piel.

Digamos el color de la piel. más esto no obtener color. Esos son todos nuestros órganos. Ahora
podemos crear nuestra clase de paciente. dentro de mi paquete. Vamos a crear una clase de paciente. Para
este paciente, en primer lugar, voy a tener una cadena para su nombre. Después de eso, vamos
a tener un número entero para la edad del paciente. Después de eso podemos crear nuestros órganos.
Por ejemplo, voy a salvar al detective privado, digamos ojo izquierdo. Hagamos lo mismo para el ojo
derecho. Tengamos también un corazón. Después que puede ser un estómago y una piel. Bien, esos son
todos nuestros campos para el paciente. Vamos a crear el constructor Y vamos a crear todos los getters y setters. No necesitamos
ningún método especial dentro de este clase paciente, dentro de nuestra clase principal,
que necesitamos crear, podemos instanciarla. Vamos a crear nuestra clase principal. En primer
lugar aquí, vamos a crear nuestro método principal. Después de eso, podemos crear nuestro objeto paciente.
Pero antes de eso, minimicemos este proyecto.

Principal. Digamos paciente, nombre el paciente es igual
a nuevo paciente. En primer lugar, nosotros necesita un nombre aquí, digamos Brad. Después de
eso, necesitamos la edad, digamos 28. Después eso, necesitamos el ojo izquierdo que puedo decir nuevo
yo. Para esto, primero que nada, necesitamos un nombre, digamos ojo izquierdo. Después de eso, necesitamos
la condición médica, que voy a decir miope. Para el color, digamos azul. Para
el booleano abierto, digamos verdadero, necesitamos lo mismo para la derecha. Sabía que
solo cambiemos el nombre a la derecha i. También, cambiemos la condición médica a la normalidad. Después
de eso, necesitamos el corazón, digamos nuevo corazón. Para la condición médica, digamos
normal. Y para el ritmo del corazón, vamos solo di 65. Creo que el siguiente órgano fue el estómago.
Así que digamos estómago nuevo, el principal sería islámico. La condición médica, solo voy
a ingresar el nombre de algún médico condición, te voy a decir p UD servicios públicos por
si te lo estás preguntando.

Y por la facilidad vacío, digamos falso. Después de eso, necesitamos una
piel, digamos una piel nueva para el color de su piel. O En primer lugar, necesitamos el nombre, digamos
una máscara para la condición médica, digamos quemado. Después de eso, qué necesitamos, necesitamos
el color y también la suavidad para el color, digamos ¿no? Para la suavidad, digamos
40 de 100. Bien, ese es nuestro objeto paciente. Ahora necesitamos crear la lógica
para nuestra aplicación. En primer lugar, estoy va a imprimir el nombre y la edad del paciente. Así que digamos
nombre en letra de imprenta. Además de los pacientes que me consigue después de que haga lo mismo para la
edad.

Vamos a recibir la entrada del usuario. Así que necesitamos un escáner. Digamos que un escáner
escáner es igual a un escáner nuevo. ayunemos sistema que. Además, ahora que conocemos la programación
orientada a objetos, sabemos cómo funciona esto. el escáner está funcionando. Esta es solo la clase con
esta nueva palabra clave que estamos instanciando dentro del constructor de este escáner, necesitamos
este sistema. Sea lo que sea. Asi que de esta manera hemos creado una instancia de este
escáner. Después de eso voy a definir un Booleano, digamos booleano. Llamémoslo final
corto. E inicialmente voy a establecer a falso. Más adelante, veremos que
cómo Este va a ser útil. Después Voy a crear un bucle while, digamos que while
debería terminar no es igual a verdadero, continuar en bucle. Dentro del ciclo while, voy a
mostrar una lista de diferentes órganos.

Por eso puedo decir elegir un órgano. Aquí tengo
dos opciones. Puedo usar este sistema punto fuera punto imprimir líneas línea tras línea.
O la mejor opción es usar la barra invertida n. Vamos ver eso también. En primer lugar, pasemos a la siguiente
línea para tener un código más limpio. Aquí puedo decir barra invertida n, esta barra invertida
n mueve el cursor a la siguiente línea. El otro uno que voy a usar aquí se llama barra invertida
t. Esta barra invertida T agregará una pestaña a nuestro texto. Más adelante veremos exactamente
qué están haciendo estos dos. Bien, el primero órgano es ojo izquierdo El siguiente es correcto.
Después de mostrar esta lista al usuario, voy para recibir la entrada del usuario. Así que voy a decir
que la opción int es igual a un punto de escáner siguiente ent.

Lo hemos visto en videos anteriores.
Así que no voy a explicar aquí, eres solo va a recibir la entrada del usuario. Después
de eso, dependiendo de esta elección, voy para crear una sentencia switch, digamos switch on
choice. Y vamos a crear nuestros diferentes casos. En caso de que la elección del usuario sea una,
en primer lugar, vamos a imprimir los detalles sobre el ojo izquierdo. Así que digamos que el paciente
que se queda no obtengo detalles.

A continuación, voy para dar al usuario la opción de abrir o cerrar
el ojo. Para eso, necesito comprobar que si el ojo está abierto o cerrado. Entonces, digamos
que si el paciente tiene el ojo izquierdo abierto, tenemos que cerrarlo, o por lo menos tenemos
que dar la opcion de cerrar, vamos a traer algo aquí Digamos barra invertida, D, barra invertida
D para tener dos pestañas. Después de eso, vamos decir cerrar o cerrar el siguiente, necesitamos obtener
la entrada del usuario en caso de que sea uno, estamos va a cerrar los ojos. Así que digamos que si un punto
de escáner siguiente int es igual a uno, entonces necesitamos decir el punto del paciente obtener el punto del ojo
izquierdo, cerrar los ojos o cerrar. Pero en el caso contrario, simplemente vamos a continuar con el siguiente
registro. En el caso else de la primera sentencia if, este hallazgo aquí en caso de que no se abra el ojo,
vamos a mostrar la opción de abrir el ojos.

Así que digamos más, necesitamos la misma lógica,
podemos imprimir algo con barra invertida t barra invertida t Vaughn lo abrió. A continuación, necesitamos
obtener la entrada del usuario. Digamos si el escáner dot next int es igual a uno, vamos a salvar a los
pacientes que tienen el ojo izquierdo dot abierto. En el caso else, simplemente vamos a continuar. Por
continuar quiero decir, una vez más, vamos para mostrar la lista de diferentes órganos. Bien, ese es
nuestro primer caso. También necesitamos un descanso. aquí Pero escribamos el segundo caso. El
segundo caso es el ojo derecho. básicamente Puede copiar y pegar toda esta lógica. Pero solo necesitamos
cambiar el ojo izquierdo por el derecho. Entonces, por ejemplo, aquí, digamos hacerlo bien. Bien,
hemos terminado con nuestro segundo caso.

Vamos también escribe el caso para el corazón. Digamos el caso
tres. En primer lugar, vamos a mostrar los detalles. del corazón, digamos paciente que recibe detalles
del corazón. Después de eso, vamos para dar al usuario para cambiar la frecuencia cardíaca.
para eso. Digamos barra invertida t barra invertida T uno, cambia el ritmo cardíaco. Una vez más, necesitamos
escuchar la entrada del usuario. Asi que digamos que si el siguiente punto del escáner es igual a uno,
necesitamos preguntar por la nueva frecuencia cardíaca. Entonces, digamos ingresar una nueva frecuencia cardíaca. Después
de eso, necesitamos guardar ese ritmo cardíaco. Asi que digamos que int es igual a un punto de escáner a continuación.
Después de eso, podemos decir pacientes que tienen corazón punto, digamos tasa fija. Y vamos a pasar nuestro nuevo
ritmo cardíaco. Pero en el caso else, como antes, vamos a continuar. También necesitamos
un descanso aquí. Agreguemos rápidamente eso y también después de cambiar la frecuencia cardíaca,
es mejor mostrar algún mensaje.

Digamos corazon cambio de frecuencia a más pacientes que obtienen frecuencia
cardiaca. Bien, ese es nuestro tercer caso. El cuarto era para el estómago. Así que digamos el
caso cuatro. En primer lugar, tenemos que imprimir los detalles de los pacientes estomacales que obtienen
el estómago que obtienen detalles. Para el estómago, teníamos la opción de resumen. Así que aquí, mostremos
esa opción. barra invertida D, barra invertida D. A ver digerir. Veamos si el siguiente int del punto
del escáner es igual a uno. Si ese es el caso, digamos que el paciente no obtiene el
resumen del punto del estómago. Pero en el caso contrario, sigamos. También necesitamos un descanso aquí.
Agreguemos rápidamente que el quinto El caso es para el esquema. Digamos el caso cinco
Para el esquema, no teníamos ninguna opción, solo necesitamos imprimir los detalles, digamos que el paciente
no obtiene el esquema, no obtiene los detalles. De Por supuesto, después de eso, debemos agregar un descanso.
Aquí, voy a agregar un caso predeterminado.

Y si el usuario ingresa cualquier otro número además
de estos cinco, vamos a crear la aplicación. Para eso vamos a cambiar el valor de este
short finish Boolean a true. Después eso, necesitamos un descanso. Bien, creo que nuestra aplicación
está lista para probar, veamos cómo lo hicimos. Aquí, podemos ver el nombre y la edad del paciente,
lo cual es bueno, también podemos ver el lista de nuestros órganos. Una vez más, es bueno. Seleccionemos
el ojo izquierdo, podemos ver los detalles del ojo izquierdo.

Y también tenemos esta opción
de cerrar los ojos. Pongamos otro número al lado este, digamos una vez más, podemos ver la lista
de nuestros órganos. vamos a ver si nosotros puede cerrar el ojo izquierdo. Pongamos uno aquí.
Y como puedes ver, el ojo izquierdo ha sido cerrado. Bien, vamos a revisar el ojo derecho. Está
funcionando igual. Introduzcamos dos aquí para mostrar la lista de órganos. Y seleccionemos nuestro
corazón, podemos ver los detalles de los corazones, lo que es bueno. Veamos si podemos cambiar la frecuencia
cardíaca. Seleccionemos uno aquí, la consola está esperando las nuevas frecuencias cardíacas,
digamos 75.

Y como puede ver, la frecuencia cardíaca ha sido cambiado a 75. Revisémoslo una vez
más, para asegurarnos de eso, vamos a decir tres. Y como puedes ver, la frecuencia cardíaca
es de 75. Vamos a para mostrar la lista. de organos Y seleccionemos cuatro para ver
su estómago, podemos ver todos los Detalles del estómago. Vamos a digerir algo de comida.
Y como pueden ver, la digestión ha comenzado. Comprobemos la piel que es cinco, pueden ver
que estamos obteniendo los detalles de la piel. Pero no tenemos ninguna opción. Eso parece
ser bueno. Y si ingresa cualquier otro número, entonces estos cinco debemos crear la aplicación.
Introduzcamos siete aquí, por ejemplo. Y como puede ver, la aplicación ha finalizado con
éxito. De acuerdo, parece que nuestra aplicación está funcionando bien Simplemente eliminemos los métodos
getter y setter que dijimos que haríamos eliminar si no los usamos. Revisemos las clases
una por una. En primer lugar dentro la iclase. Todo lo que está atenuado significa
que nunca usamos eso, por ejemplo, nunca usamos este método de color establecido.

Está bien,
parece estar bien. Dentro de la clase de corazón. Creo que los hemos usado todos. Está bien, está bien.
Dentro de la clase de órgano, no necesitábamos este método de condición médica establecida. Y tampoco
necesitábamos este método setname dentro la clase de pacientes. A ver, ¿qué tenemos
ahí? Y creo que no usamos ninguno de los setters de esta clase de pacientes. Simplemente eliminémoslos.
Está bien, eso parece ser bueno. Veamos, ¿qué tienes dentro de una clase de
esquema? Y aquí, nunca usamos estos setters y este método de obtención de suavidad. Eliminémoslos
dentro de la clase de estómago.

Vamos a borrar este método establecido vacío. Y para asegurarnos
de todo, ejecutemos nuestra aplicación Una vez más. De acuerdo, parece que no tenemos ningún
error de tiempo de compilación, lo que parece estar bien. Bien, ese fue nuestro desafío sobre los conceptos
de programación orientada a objetos. voy a cargue el código fuente en los enlaces que puede ver
en la pantalla, siéntase libre de verificar ellos y también, estoy más que feliz de ver sus
comentarios sobre el código.

En el proximo video, hablaremos sobre las colecciones en Java. Nos
vemos en el próximo vídeo. En videos anteriores, hemos visto arreglos simples en Java. Por ejemplo, si quisiéramos
almacenar una lista de diferentes nombres, podríamos haber dicho algo como esto porque
he establecido una cadena con un par de corchete. Después de eso, podríamos haber nombrado
nuestra matriz. Y después de eso podríamos tener inicializamos nuestra matriz de cadenas como esta dentro
de un corchete aquí, necesitábamos pasar el tamaño de nuestra matriz por ejemplo cinco. La
otra manera era pasar nuestros elementos en el momento de instanciar nuestra matriz, por ejemplo,
podríamos haber dicho un par de llaves y dentro de esas llaves porque he pasado nuestros
elementos. Pasemos algunos nombres aquí Después de eso, si queríamos tener acceso a
estos elementos, podríamos haber dicho algo así, podríamos haber dicho imprimir, digamos
nombres con un índice de digamos dos para el tercer elemento, que es Brad en este caso, si está
en nuestra aplicación en este momento, Debería ver a Brad.

Vamos a ejecutarlo. Puedes
ver que Brad ha sido impreso pero si recuerdas Dije que usar este tipo de arreglos simples en
Java tiene muchas limitaciones. Por ejemplo, la primera limitación es que su tamaño es
inmutable, es decir, su tamaño no puede ser cambiado. En este momento tenemos cinco elementos dentro
de nuestra matriz de nombres. Si queremos agregar otro elemento dentro de esta matriz, no podemos
hacer eso. Por ejemplo, no podemos decir algo. como nombres con un índice de cinco, que indica el
sexto elemento, no podemos asignar un valor a eso, puedes ver que aquí tenemos una advertencia
roja.

Y si intentamos ejecutar nuestra aplicación, obtenemos una excepción. Veamos la excepción. La excepción
aquí es el índice de matriz fuera de excepción de límites. Además, cuando se trabaja
con arreglos simples en Java, no tiene eso muchas opciones. Más adelante veremos que cuando
usamos diferentes tipos de colecciones, puede operar todo tipo de operaciones sobre nuestras
colecciones en las que no las tenemos en áreas simples. Si queremos agregar un sexto elemento a
nuestra matriz, podemos crear una nueva matriz y después de eso, podemos copiar todos los elementos desde
dentro de esta matriz. Ahora mismo para el situación que tenemos aquí. Si queremos agregar
otro elemento a nuestra matriz, podemos crear otra matriz con el tamaño de seis. Después de
eso, podemos copiar todos estos elementos a esa matriz. Y después de todo, podemos agregar este
nuevo elemento. Por ejemplo, aquí, puedo decir una matriz de cadenas.

Vamos a nombrarlo nuevos nombres,
es igual a la nueva matriz de cadenas con el tamaño de seis Después de eso, puedo crear un ciclo for,
digamos que para int i es igual a cero i menos que los nombres de longitud de punto, y i plus plus. Y
dentro de ese ciclo for, antes que nada, necesito para agregar todos los nombres a esta nueva matriz de
nombres, puedo decir nuevos nombres con un índice de i es igual a nombres con índice de aceite. De esta
manera, podemos copiar todos los elementos. desde dentro de esta matriz de nombres a esta nueva matriz de
nombres. Después de copiar todos los elementos. Después del bucle for, puedo decir que los nuevos nombres con
un índice de cinco son iguales a Jerry. De esta manera podemos solucionar este problema. Por ejemplo, si
comento esta línea y ejecuto mi aplicación, tal vez después de eso, imprima el elemento seis dentro de nuestros
nuevos nombres, tengamos una solución.

Pero como Como puede ver, esta solución no es tan efectiva.
Imprimamos esto rápidamente. Puedes ver Jerry ha sido impreso aquí. Pero como
puede ver, hay muchos códigos involucrados. Y además de eso, si su matriz tiene muchos elementos,
por ejemplo, un millón de elementos, este proceso puede llevar mucho tiempo. Además
de eso, puede consumir muchos recursos. si está descargando esta matriz de Internet.
Así que esta solución aquí no es eficaz. En lugar de copiar y pegar todo
el arreglo, vamos a usar colecciones. Eliminemos todos estos códigos. En Java, tenemos
múltiples tipos de colecciones. los El primero del que voy a hablar aquí
se llama ArrayList. Empecemos a ver así que escribimos array list con la cápsula a. Después
de eso, dentro de un par de soportes de anclaje, o como algunos podrían llamarlos diamantes, necesitamos
definir el tipo de nuestro objeto ArrayList por ejemplo, puedo decir es cadena.

Después de eso,
debemos nombrar nuestra ArrayList. Por ejemplo, Puedo decir nombres, es igual a new ArrayList.
Tan simple como eso tenemos un ArrayList Este es una forma de definir su ArrayList. También
hay otra forma, veamos rápidamente que entonces, en lugar de decir cadena ArrayList, podemos
decir lista, puede ver que el ícono en aquí es diferente. Es una interfaz. Hablaremos
de las interfaces más adelante en el curso. Pero por ahora solo sepa que hay dos formas
de definir su ArrayList. veamos como ¿Podemos usar esta lista para crear una ArrayList? Podemos
decir una lista de cadenas, por ejemplo. Una vez de nuevo, nombremos nuestra lista. Por ejemplo, veamos
que Students es igual a new ArrayList. Ahí hay una ligera diferencia aquí. Pero solo quería
mostrarte las dos formas de definir tu Lista de arreglo. Bien, eliminemos esta línea por ahora.
En este momento, nuestra ArrayList está vacía. Y si queremos agregar algunos elementos a este ArrayList, simplemente
podemos decir nombres.ad, podemos usar este método de agregar para agregar
elementos a nuestra ArrayList.

Por ejemplo, agreguemos uno. Puede utilizar este método de agregar
tantas veces como desee. si quiero agregar otro elemento, simplemente puedo hacer eso. Entonces,
el primer beneficio de usar la lista de matrices es claro. Ahora el tamaño de la lista de matrices es mutable, significa
que podemos cambiar el tamaño de la matriz lista. Después de agregar algunos elementos a su lista de
arreglos. Puedes obtener esos elementos usando el método obtener. Digamos rápidamente que, por
ejemplo, imprimamos el primer elemento que puedo ver los nombres que obtienen Puede ver que este método de
obtención requiere un índice. Una vez más, los índices en Java comienza desde cero, así que si paso
cero aquí, significa que voy a obtener el primer elemento En este momento, si ejecuto mi aplicación,
debería ver mi Sam impreso en la consola, puede ver que Mason ha sido impreso.

Además, al usar
listas de arreglos, también puede obtener el tamaño de su lista de arreglos. Por ejemplo, si
quiero imprimir el tamaño de mi ArrayList, puedo decir algo como esto, puedo decir nombres tamaño
de punto. Vamos a ejecutar la aplicación y ver cual seria el resultado, puedes ver que el tamaño
de nuestro ArrayList es dos, tienes todo tipo de opciones al usar listas de arreglos,
también puede borrar todos los elementos dentro su ArrayList. Por ejemplo, puedo decir nombres punteados
en claro. Este método claro elimina todos los los elementos dentro de su ArrayList. Después
de limpiar, si vuelvo a obtener el tamaño de mi ArrayList esta vez el tamaño debe ser
cero. Y como pueden ver aquí abajo, es cero. Si lo desea, también puede eliminar un
elemento de su ArrayList.

Vamos rápido mira que puedo decir nombres punto eliminar este método de eliminación
requiere un objeto, significa que nosotros necesita pasar todo el elemento. Así que digamos que
puede sonar por ejemplo. Pero antes de eso, deja comente rápidamente esta línea porque no queremos borrar
nuestra lista de matrices. Y después de quitar hijo mío, imprimamos el primer elemento dentro de nuestra
lista de arreglos. Digamos nombres que obtienen y pasemos cero como índice. Como puede ver, el primer
elemento en este momento es Sarah, significa que mi Sam ha sido eliminado con éxito.
Veamos qué otras opciones tenemos en nuestro ArrayList.

Vamos a dar me gusta a los nombres escribiendo
puntos, podemos ver la lista de opciones, podemos también verifique si existe una opción en nuestro
ArrayList. Por ejemplo, si uso esto contiene método, una vez más, requiere un objeto,
digamos Mesa, traigamos toda esta línea de código Este método contiene devuelve un valor booleano.
Así que ahora mismo si ejecuto mi aplicación, porque hemos eliminado mi muestra, deberíamos ver falso,
podemos ver que eso es bueno. Pero si cambiamos esto a Sarah, debemos ver a través. Y a través
de esto, también puedes comprobar que si tu ArrayList está vacío o no. Para eso puedes imprimir
algo por ejemplo, puedes decir nombres.es vacío, tenemos este método una vez más, está devolviendo
un valor booleano.

Ahora mismo tenemos cero en nuestro ArrayList. Así que no debería estar vacío.
Y como pueden ver estamos recibiendo false. Pero si eliminamos a Sara antes de esta línea de código
deberíamos ver a través, vamos rápidamente haz que los nombres no se eliminen. Y pasemos esta
vez se puede ver que a través se ha impreso, también puede obtener el índice de algún elemento
desde dentro de su ArrayList. Vamos rapido vean que antes de todo voy a comentar
todas estas lineas de codigo porque Quiero tener una consola clara.

Aquí abajo. Digamos que imprima los nombres de ese
índice y aquí puedo pasar mi objeto, por ejemplo, Puedo pasar Mesa. En este momento, Mason es el primer elemento,
por lo que deberíamos ver cero impreso, usted puede ver que es cero. Pero si no tenemos ese elemento
dentro de nuestro ArrayList. Por ejemplo, si pasamos a Brad aquí, deberíamos ver uno negativo.
Y como podéis ver negativo uno ha sido impreso. Cuando usa ArrayList, solo puede tener
objetos como el tipo de elementos dentro de su ArrayList. Por ejemplo, aquí, no
puedo decir enteros, no puedes usar primitivos tipos de datos cuando está creando una nueva ArrayList.
Como puede ver en el error aquí, el error dice que el argumento de tipo no puede ser de tipo
primitivo. Si desea tener una ArrayList de números diferentes, puede utilizar la clase Java de equivalencia.
Por ejemplo, aquí dentro puedo decir entero con I mayúscula. Y ahora tengo una ArrayList
de entero.

Ahora mismo estoy recibiendo un error porque estoy tratando de agregar algunas cadenas
a esta lista de matriz de enteros. Pero obtienes el idea de que podemos usar esta clase entera para tener una
ArrayList. Entonces en el equivalente de Java para cada tipo de datos primitivo, también tiene una
clase, hemos visto este número entero. Vamos también verifique otros, podemos decir Boolean similar
a eso podemos decir long, también podemos decir double. Y puedes comprobar los demás tú mismo. Pero
cambiemos este a una cadena ahora mismo. La otra opción que tiene cuando usa ArrayList
es ordenar diferentes elementos. Por ejemplo, si desea ordenar alfabéticamente diferentes
elementos dentro de su lista de arreglos, tienes esa opcion Y la forma de hacerlo es
así.

Vamos a ver eso aquí abajo podemos ver nombres que ordenan puede ver que este método
de ordenación requiere algo de comparación más adelante en el curso veremos este comparador. De hecho,
usaremos este método de clasificación para para obtener diferentes elementos en nuestra lista
de arreglos. Pero por ahora, no voy a hablar de esto solo quería decir que tienes esta
opción. Bien, eliminemos esto y pasar de esta parte. Similar a las matrices
simples en Java. si quieres comer Para leer todos los elementos en su lista de
arreglos, puede usar bucles for. vamos rápido ver eso también. Puede decir que int i es igual
a cero, i less than nombró ese tamaño, esta vez, yo más más. Dentro de este bucle for, podemos
decir, imprimir nombres que se consigan con el índice de IA. De esta manera, podemos imprimir todos los
elementos en nuestra lista de arreglos.

Pero antes eso, comentemos esta línea. Y ejecutemos nuestra
aplicación, puedes ver que podemos ver ambos de nuestros elementos impresos. Bien, basta
de hablar de listas de arreglos. también hablamos de otro tipo de colección en Java llamado
mapas. Los mapas son útiles para cuando tener algunos datos de pares de valores clave. Definamos
un mapa y hablaremos de lo que quiero decir con pares de valores clave. Puedes definir un mapa como
este, puedes decir mapa puedes ver ese mapa es una interfaz. Hablaremos de interfaces más
adelante en el curso Creo en el siguiente video. Pero por ahora, sigamos adelante. También puede
ver que dentro de estos soportes de anclaje dentro de estos diamantes, tenemos estos K y V estos
dos significa clave y valores.

Asi que aquí, si decimos soporte de anclaje, para el primer
elemento, necesitamos pasar el tipo de key el tipo de datos de nuestras claves. Por ejemplo, puedo
decir cadena. Y después de eso, necesitamos para proporcionar el tipo de datos de nuestros valores.
Por ejemplo, puedo decir una cadena una vez más, por el tipo de datos de mis valores. En este momento estoy
recibiendo una advertencia roja. Y eso es porque parece que la identificación no ha importado mapas
a mi clase, puedo presionar ALT más Enter. Y si echamos un vistazo arriba, aquí, parece
que hemos importado mapas a nuestro clase con éxito. Después de definir el tipo de
datos de sus claves y valores dentro de su mapa, necesitas nombrar tu mapa. Por ejemplo, puedo
decir contactos. Aquí, puedo decir nuevos mapas. Pero si hago eso, verás que hay muchos
métodos de los que debo preocuparme.

Sobre, hay una mejor manera de definir sus mapas,
presionemos Ctrl Z para deshacer el cambio, puedo decir nuevo hashmap. Esta vez,
puede ver que este mapa hash es una clase. Y si quieres podemos instanciar nuestro mapa
de esta manera, esta vez, no tenemos todos esos métodos adicionales. No pretendo hablar
de mapas hash aquí, el tema es un poco técnico, se trata de la forma en que vamos a iterar
a través de los elementos de nuestros mapas.

Está muy por encima de la conversación que tenemos aquí,
solo quería decir que puede crear instancias sus mapas como diferentes mapas hash. Bien, ahora
tiene un mapa vacío, cuyo tipo de datos de diferentes claves es una cadena. Y el tipo de datos
de diferentes valores también es una cadena. Si desea poner algunos elementos en este mapa,
puede decir algo como esto, puede decir contactos que ponen este es el método que
vamos a utilizar para añadir algunos elementos a nuestro mapa, puede ver que en este momento este método
de puerto está esperando una clave y también un valor para la clave. Por ejemplo, puedo pasar
un nombre, digamos yo, Sam, y para el valor, pasemos su correo electrónico, digamos yo sam@maker.org. De esta
manera podemos agregar elementos a nuestro mapa, yo creo que si cambio el nombre de mi mapa de contactos
a, digamos, lista de correo electrónico, eso sería Mucho mejor.

Para cambiar el nombre de alguna
variable o clase en Java, tienes una opción, puede seleccionar el nombre completo,
puede hacer clic derecho en el nombre de su variable, puede ir a este refactor aquí, y puede usar este
cambio de nombre o, alternativamente, puede puede usar el atajo, que es shift más
f6. Seleccionemos eso. Y aquí voy para eliminar este nombre completo, puede ver que una vez
que estoy eliminando esto, está eliminando el nombre en ambos lugares. Así que digamos lista de correo electrónico.
Y presionemos enter. Creo que este nombre es mucho más adecuado. Agreguemos otro elemento a nuestro mapa.
Digamos que la lista de correo electrónico se pone, digamos Brad. Y digamos brad@gmail.com. Ahora
que tengo algunos elementos en mi mapa, si Quiero tener acceso a esos elementos, puedo
decir algo como esto. Por ejemplo, imprimamos esta declaración. Digamos el punto de la lista
de correo electrónico. Y una vez más, puedes ver que tenemos este método get que requiere un objeto
para el objeto aquí que necesitamos pasar la clave. Por ejemplo, si paso Mesa, como resultado,
debería ver el valor de Mesa.

En este caso, debería ver el correo electrónico. Ejecutemos
la aplicación. Y a ver si podemos imprimir el correo de maysa. Puede ver que el correo electrónico
se imprimió correctamente, como una matriz liza. Cuando usa mapas, tiene todo tipo
de opciones. Por ejemplo, si quieres para obtener el tamaño de su mapa, puede decir algo como esto, puede decir
el tamaño de punto de la lista de correo electrónico. Ejecutemos la aplicación y veamos si podemos
llegar a dos impresos. Si usted desea eliminar un elemento de su mapa, puede decir lista
de correo electrónico que elimine una vez más esto eliminar requerido Como objeto, en este caso, necesitamos
pasar la clave. Pasemos a Brad. Y imprimamos el tamaño de nuestro mapa una vez más.
Esta vez después de quitar a Brad, puedes ver que el tamaño es uno.

También puede verificar si
existe alguna clave en su mapa o no. los forma de hacerlo es así. Traigamos eso en primer lugar,
podemos decir listas de correo electrónico que contienen llaves. Del mismo modo, tenemos contiene
valor, que puede adivinar que verificará que si existe algún valor en su mapa. Probemos que
el primero contiene clave. y vamos a pasar Brad aquí, porque nos hemos quitado el aliento,
deberíamos ver fallas. Y como puedes ver, falso ha sido impreso.

Pero si cambio esto
a Mesa, deberíamos terminar. Bien, eso parece funcionar bien. Podemos hacer lo mismo para
los valores. Digamos que el punto de la lista de correo electrónico contiene valor.
Pasemos el correo electrónico de May Sam may sam@miko.org. Debido a que existe en nuestro mapa, deberíamos
ver a través de él y puede verificarlo. otras opciones. tú mismo. Si tu quieres. Podemos decir el punto
de la lista de correo electrónico una vez más, puedes ver que tenemos esta opción clara, borrará todos
los elementos de su mapa, tiene esta es un método vacío, verificará si su mapa
está vacío o no.

La otra opción que tiene aquí estos valores, puede ver que este
método de valores devolverá la colección. Si desea copiar todos los valores de su mapa,
puede usar estos valores y puede guardarlo dentro de una colección. Pero no voy a hacer
eso aquí. Pero solo para mostrarte que soy voy a decir que hay una interfaz en Java llamada
colección esta mañana aquí en que es el tipo genérico de todas las colecciones disponibles
en Java. Pero más sobre eso más adelante. cuando obtenemos diferentes elementos dentro de nuestro
ArrayList como ArrayList, no puede tener un tipo de datos primitivo como el tipo de datos
de su clave o sus valores cuando está usando mapas Por ejemplo, aquí, no puedo decir
int si miras la advertencia, dice ese argumento de tipo no puede ser de tipo de datos
primitivo.

Del mismo modo para los valores, vamos a diga int, una vez más, puede usar la clase Java equivalente
para estos tipos de datos primitivos. Pero no puede simplemente usar tipos de datos primitivos.
Bien, vamos a retroceder todo. Además mapas y listas de matrices, también tiene otros
tipos de colecciones en Java, no quiero para hablar de ellos aquí, porque creo que
para el curso de Android, estos dos son suficiente y no necesita saber acerca de los demás. Pero
si tienes curiosidad, siempre puedes comprobar esta página web de Oracle, puede ver que tenemos conjuntos,
listas y otros tipos de colecciones. Pero, sinceramente, estos no van a ser útiles para nuestros
mapas de cursos de Android. Y listas de matrices están bien Como el tipo de datos de los valores clave dentro
de los mapas, y también los valores dentro de ArrayList. También puedes tener diferentes clases. Veamos
rápidamente eso también. En mi carpeta fuente dentro del paquete, voy a crear una nueva clase
llamada estudiante.

Veamos rápidamente que dentro de esta clase de estudiante, voy
a definir dos nuevos campos, digamos privado nombre de cadena y entero privado IDENTIFICACIÓN. Tengamos un constructor y algunos getters
y setters. Ahora que he creado esto clase, puedo pasarlo como el tipo de datos de mi
ArrayList. Vamos a crear rápidamente otra matriz lista abajo aquí. Puedo decir ArrayList de diferentes
estudiantes Esta vez, vamos a nombrar esto Estudiantes de ArrayList, digamos que es igual a la
nueva ArrayList. Ahora puedes poner tantos estudiantes como quieras dentro de este ArrayList. Por ejemplo, digamos
estudiantes que agregan digamos un nuevo estudiante, digamos que puede sonar con la idea de 15,
tal vez. Así que además de las cuerdas, otros El tipo de tipo de datos personalizado es compatible
con las colecciones en Java. Bien, justo antes Termino este video del que voy a hablar
para cada bucle aquí. Si tu recuerdas cuando hablamos de bucles en Java, dije
que hay otro tipo de bucles llamados para cada bucle, dije que vamos a hablar
de para cada bucle cuando sepamos sobre programación orientada a objetos y también colecciones en Java.
Así que creo que ahora es un buen momento para habla de que puedes crear un bucle para cada bucle
como este, puedes decir for en lugar de diciendo int i es igual a cero, voy a pasar
el tipo de datos de la lista que voy para iterar.

Por ejemplo, en este caso, voy a
decir un estudiante. Después de net necesito un nombre. Por ejemplo, voy a decir s y después
del nombre, necesito una columna. Después Necesito la lista o ArrayList que voy a iterar.
Por ejemplo, en este caso, estoy vamos a decir estudiantes, repasemos todo una
vez más. aquí En primer lugar tenemos pasado el tipo de datos del objeto que vamos
a buscar en el nombre de ese específico objeto es como puede nombrarlo, lo que sea que
desee después del nombre, debe tener un colon. Y después de eso, debes pasar la
colección que vas a investigar. dentro de este ciclo for, puede usar este s
para tener algún tipo de operación en su objeto.

Por ejemplo, si quiero imprimir el nombre
de mis alumnos, puedo decir, imprimir s, que me entiende en este momento nuestra ArrayList tiene solo
un estudiante, agreguemos rápidamente otro, vamos decir estudiantes que agregan un nuevo estudiante.
Digamos Sarah, con la idea de quizás 18. Vamos ejecute la aplicación y vea cuál sería el
resultado. Como puedes ver aquí abajo, Mason, y Sara ha sido adelantada. Así que esto está aquí es
como si estuviera en un bucle for. Pero en lugar de ser el índice del elemento, es el elemento en sí
mismo de vez en cuando para que cada ciclo pueda ser útiles y así es como puedes crearlos. De acuerdo,
creo que es un buen punto para detenerse.

El video aquí. En el siguiente vídeo vamos a
hablar de algunos pequeños conceptos. Para ejemplo, hablaremos de esta palabra clave estática
que hemos visto en la declaración de nuestro método principal. Además de eso, si tuviéramos
tiempo, hablaremos de clases internas, haremos hablar de interfaces y clases abstractas Nos vemos
en el próximo video. En este video, vamos a hablar de algunos pequeños conceptos
que debemos conocer. El primero de esos conceptos es esta palabra clave estática que hemos visto
hasta ahora en la declaración de nuestro principal método. Voy a hablar de eso en otra clase. Así
que vamos a crear otra clase en mi paquete. Llamemos a esta clase clase de prueba.
Has visto dentro de la clase principal que puede tener esta palabra clave estática para nuestros métodos.
Pero además de eso, también podemos declarar nuestra variables como un estático también.

Por ejemplo,
aquí, puedo decir público, digamos estático. Después de eso puedo decir una cadena. Digamos el nombre,
puedes ver que también funciona bien. No estoy seguro si te has dado cuenta o no. Pero tan
pronto como declaro esto como una cadena estática, el estilo de este nombre ha cambiado a cursiva.
Si lo quito se nota la diferencia. Pero, ¿qué significa tener una variable estática o
un método estático? Bueno, cuando defines sus variables y métodos como estáticos, esos
métodos y variables pertenecen al objeto mismo y no a las instancias de ese objeto,
ya veremos de lo que hablo. Pero antes eso, vamos a tener rápidamente otras variables aquí.
Por ejemplo, puedo decir público int, edad, tal vez otro público, digamos una
cuerda, un color de piel.

Estas variables no significa nada, solo quiero tener algunas variables.
Vamos a crear también un constructor. aquí Tenga en cuenta que cuando uso el generador
inteligente para crear mi constructor, no ver mi variable estática en esta lista. Una vez
más, eso se debe a que las variables estáticas no pertenecen a las instancias del objeto ID
pertenece al objeto en sí. seleccionemos estos dos. Y vamos a crear getters y setters. Pero
como puede ver, tenemos un getter y setter para esta variable estática. Bien, ahora
que tenemos esta clase, si queremos crear una instancia de esa clase, por ejemplo, desde dentro
de nuestra clase principal, si dice clase de prueba, llamémoslo clase de prueba es igual a nueva clase de
prueba. El constructor aquí está esperando. para una edad y también un color de piel, digamos 25.
¿No? De esta manera, podemos crear nuestra instancia. de la clase, pero ¿cómo asignamos un valor a la
variable nombre artistas del sitio de cultivo? ¿clase? Bueno, puedes usar los métodos setter.

Por ejemplo,
puede decir conjunto de puntos de clase de prueba nombre, este método y puede pasar un nombre,
por ejemplo, Mason, pero hay una advertencia aquí esta advertencia resaltada. ¿Qué significa
eso es que puede establecer un valor para esta variable de nombre incluso sin instanciar
su clase. Por ejemplo, aquí, puedo decir clase de prueba con un punto T mayúscula, digamos
nombre. O alternativamente, porque el colocador El método para este nombre también es estático,
puedo decir establecer nombre. Usemos el primero, Puedo decir que el nombre del punto de clase de prueba
es igual a, por ejemplo, Mesa, podemos ver que incluso sin instanciando este objeto, podemos asignar
un valor a esta variable. para asegurarse de eso vamos a mover estas dos líneas de código
después de asignar un valor a la variable de nombre. También puedo eliminar este método setname de forma
segura. Ahora, si quiero tener acceso al nombre variable de esta clase de prueba, puedo decir algo como
esto.

Puedo decir nombre más clase de prueba esta vez con coqueta. Eso digamos getname.
Ejecutemos la aplicación y veamos qué sería el resultado. Puede ver que el mensaje ha sido
impreso a pesar de que hemos configurado el valor de esta variable de nombre antes de crear una instancia de nuestro
objeto, por lo que siempre que use una variable estática esa variable será la misma en todas las instancias
de su clase. Por ejemplo, si tengo otro instancia de esta clase de prueba, por ejemplo, si
digo clase de prueba, la segunda clase de prueba es igual a la nueva clase de
prueba, tal vez otra edad y otro color de piel, digamos 30. Negro. Si imprimo la variable de nombre de la
segunda clase de prueba, el resultado sería ser el mismo. Digamos que la segunda clase de prueba no obtiene
el nombre, o para el caso, podemos decir el nombre. Ejecutemos nuestra aplicación, puedes ver que
mi Sam ha sido impreso. Además de variables, los métodos también pueden ser estáticos, definamos rápidamente
un método estático dentro de nuestra clase de prueba, digamos vacío estático público.

Vamos a nombrarlo
imprimir algo. Y dentro de este método, vamos solo imprime algo. Este método estático como una
variable estática pertenece al objeto mismo y no a las instancias de este objeto. Por ejemplo,
aquí dentro, una vez más, puedo decir prueba clase con un punto T mayúscula imprime algo,
puede ver que no necesitamos instanciar nuestro objeto Si está en nuestra aplicación, puede
ver que algo se está imprimiendo. De acuerdo, ahora sabemos que las variables estáticas y los
métodos pertenecen al objeto mismo y no al instancias de ese objeto. Pero, ¿por qué querríamos
usar variables y métodos estáticos? hay algunas razones para eso.

En primer lugar, es
posible que desee tener una variable constante en todas las instancias de su clase. Por ejemplo,
imagina que estás creando una clase para simulando diferentes empleados de una empresa dentro
de esa clase, puede tener alguna información sobre el empleado, por ejemplo, la edad, el nombre,
el correo electrónico y todo. Pero además todos esos, puede tener un campo llamado nombre
de la empresa, sabe que en todos los casos de su clase de empleado, el nombre de la empresa debe ser
el mismo para el caso, es posible que desee para declarar el campo del nombre de su empresa como estático
también, algunos dicen que usar variables estáticas y los métodos son muy amigables con la memoria, porque
solo puede haber una instancia de esa variable o método en toda su aplicación. Así que no
importa si tiene 1000 empleados en su aplicación, el campo de nombre de la empresa en
todos esos casos ocupará solo algunos espacios como una cadena, el uso de variables y métodos estáticos
es muy amigable con la memoria. Pero hay es un inconveniente cuando se trabaja con esta palabra
clave estática.

Veamos rápidamente eso por dentro. nuestra clase de prueba también. Vamos a crear rápidamente
otro método aquí, digamos vacío público. Llamémoslo imprimir, observe que este método de impresión
no es estático y debido a que esto es no estático ahora, no podemos tener acceso a ese
método desde dentro de esta impresión algo método por ejemplo, aquí no puedo decir imprimir, puede
ver que tenemos una advertencia roja aquí. Dice que no se puede hacer referencia a la impresión de método
no estático desde un contexto estático similar a métodos no estáticos, no puede tener acceso a campos
no estáticos dentro del método estático también. Por ejemplo, aquí si trato de imprimir
la edad de esta clase de prueba, puede vea que estamos recibiendo una advertencia roja aquí.
Una vez más, la advertencia dice que no estático No se puede hacer referencia al campo desde un contexto estático.
Por lo tanto, no puede usar campos y métodos no estáticos dentro de un método estático. Bien, creo que es suficiente
hablar de esta palabra clave estática.

Eliminemos rápidamente esta clase. Además, necesitamos
eliminar todas estas líneas de código. Bien, ahora sabemos todo sobre este método principal.
En primer lugar, su modificador de acceso. es público Es un método estático, su tipo de retorno
es nulo, su nombre es principal. Y también como la entrada de este método, estamos recibiendo una
matriz de cadenas llamada argumentos. Porque esto el método principal es estático, sabemos que solo
puede haber una instancia de este método principal en toda nuestra aplicación. No nos preocupa
la voz aquí, pero sabemos que para ejecutar aplicaciones Java, necesitamos un
método principal, que es estático con este sintaxis específica. Está bien, eso es suficiente.
Vamonos. El próximo tema que voy a tratar hablar aquí es de clase interna. Veamos rápidamente
eso en otra clase llamada clase de prueba.

Dentro de nuestras clases, además de variables
y métodos, también podemos tener otra clase y así es como podemos definir esa clase. Podemos
decir privado, digamos clase, voy a nombra esta clase clase interna de prueba. Y aquí
tenemos esta clase interna como antes, adentro esto en nuestra clase, podemos tener otros métodos
y variables. Por ejemplo, puedo decir privado nombre de la cadena aquí. También puedo tener un constructor
para esta clase. Veamos rápidamente que puede ver podemos crear el constructor podemos
crear todo tipo de getters y setters. Y podemos tratar esta clase como cualquier otra clase
en Java. Pero hay algunas diferencias entre una clase y una clase interna. Por ejemplo, si tenemos
algunos campos en nuestra clase principal, eso es Definamos algunos, digamos private int, age
y private string color. No importa qué el modificador de acceso de estos campos es, podemos
tener acceso a estos dentro de nuestras pruebas en nuestra clase.

Pero necesitamos hacer eso dentro
de otro método, digamos privado, vacío, imprimir la página. Dentro de este método, puedo decir imprimir,
digamos edad más edad, pueden ver que es funcionando bien. Aunque el modificador de acceso de
esta edad es privado, podemos tener acceso a eso desde dentro de nuestra clase interna. Lo mismo
es para diferentes métodos de tus padres. Además, no importa cuál sea el modificador de acceso
de esos métodos, puede tener acceso a desde dentro de su clase interna, hay algunas ocasiones
en las que es posible que desee utilizar clases por ejemplo, cuando usa clases internas, su código
puede ser mucho más fácil para nosotros seguir. La otra razón para usar clases internas
es que puede tener este privado modificador de acceso en la declaración de su
clase si recuerda, no podemos cambiar esto modificador de acceso público cuando creamos nuestra
clase principal, por ejemplo, aquí no puedo diga privado, puede ver un error aquí y si pasa
el mouse sobre eso, puede ver ese modificador privados no permitidos aquí al lado del modificador de
acceso privado También puede tener un estático clases Ese es otro beneficio de usar clases
internas que no tenía esta opción cuando creó su clase principal, veamos rápidamente
que si digo estático aquí una vez más modificador estático no permitido aquí.

Así que dentro de nuestras
clases, puedes tener clases privadas y estáticas. clases en este curso, no vamos a usar mucho
las clases internas. De hecho, el La primera vez que lo vamos a usar es cuando conocemos
las tareas asíncronas. En la mayoría de los casos, vamos a definir nuestras tareas asíncronas como
clases internas. Hablaremos de eso más tarde. en el curso. Bien, creo que es un buen punto
para detener el video aquí. Yo quería para hablar sobre interfaces y clases abstractas
en este video. Pero creo que es mejor tenga esa discusión en el próximo video. Así que nos
vemos en el próximo vídeo. Como dije al final del video anterior,
en este video vamos a hablar de Las interfaces en Java son como un contrato entre
dos partes de su aplicación. Vamos vea lo que quiero decir con que puede crear una
interfaz como si hubiera creado una clase Java, puede hacer clic derecho en su paquete seleccionando
nueva clase Java.

Y luego aquí, seleccionando interfaz, puede tener una interfaz Vamos a nombrar
esta interfaz de tarjeta de interfaz. Si usted eche un vistazo a su paquete, puede ver que
hemos creado esta interfaz. Y si tu mire más de cerca, puede ver que el icono
de esta interfaz es algo diferente de el icono de clases en Java. Este es el esquema
general de una interfaz en Java, como clases, interfaces, vive dentro del paquete, tienen este
modificador de acceso público, podemos nombrar nuestras interfaces, lo que queramos. Y también
tienen esta palabra clave de interfaz en su declaración. Dentro de las interfaces, podemos definir nuestros
métodos abstractos, veamos rápidamente un método abstracto. Puedo decir pública, digamos nula. Después
de eso, digamos nombre en letra de imprenta. Como la entrada de este método, solo recibamos un nombre,
digamos un nombre de cadena. Y eso es no puedes tener un cuerpo para tus métodos abstractos.
Por ejemplo, aquí dentro, si pongo un par de llaves, puedes ver que estoy recibiendo
una advertencia roja.

Y la advertencia dice que los métodos abstractos de interfaz no pueden tener
cuerpo. Entonces puedo borrar estas dos llaves y puedo terminar mi oración aquí. Al usar métodos
abstractos, está ocultando la funcionalidad. de tus métodos. Por ejemplo, en este caso, no sabemos
qué es este método de impresión de nombres. lo hace. En cambio, solo estamos definiendo algún
tipo de contrato. El contrato aquí es la firma. de nuestro método, sabemos que el nombre de este
método es print name, sabemos que estamos recibiendo una cadena llamada nombre. Y también sabemos
que el tipo de retorno de este método es vacío.

La firma de este método es un contrato en
el que ferrovie implementa esta interfaz, vamos a utilizar esta firma. Además, si echa
un vistazo a esta palabra clave pública, puede ver que de alguna manera está atenuado. Si pasa
el cursor sobre esa palabra clave, puede ver que modificador público es redundante para los métodos
de interfaz, significa que no es necesario aquí Y la razón de esto es que todos los
métodos abstractos son públicos dentro una interfaz Significa que no puede tener métodos
abstractos privados o protegidos.

En el interior tu interfaz Puede tener tantos métodos abstractos
como desee. Por ejemplo, si quiero para definir otro aquí, puedo decir vacío. Vamos
a nombrar este para empezar. Y no lo soy va a recibir cualquier cosa como entrada
de este método. Definamos otro. Vamos nombrar el movimiento de generación. Y también recibamos
una llamada entera.

Velocidad, creé la primera método para que pueda mostrarle cómo puede
crear métodos abstractos. Y yo voy a borra eso de aquí. Entonces, esta interfaz de automóvil tiene
dos métodos de inicio y movimiento. Pero como puede usamos esta interfaz? Veamos rápidamente eso
también. Dentro de mi paquete, voy a crear una clase de Java llamada coche eléctrico. Y dentro
de este auto eléctrico, voy a implementar esa interfaz que acabo de crear.

Para
implementar esa interfaz, voy a decir implementos en la declaración de mi clase. Y después
de eso, necesito proporcionar el nombre. de mi interfaz. En este caso, se llama interfaz.
Pero una vez que hacemos eso, puedes ver que estoy recibiendo una advertencia roja aquí. Y para
esta advertencia roja, necesitamos implementar los dos métodos que hemos creado dentro de
nuestra interfaz. Para implementar esos dos métodos, tenemos múltiples opciones.

En primer lugar,
podemos hacer clic en esta barra de luz roja. Al seleccionar métodos de implementación, podemos implementar
los métodos necesarios. O alternativamente, si no ve esta luz roja, bueno, puede hacer clic
en el error y presionando ALT más ingrese, puede ver el mismo diálogo o la otra
opción es entrar dentro de la declaración de tu clase Y al presionar Ctrl más i, puede
ver la lista de métodos necesarios. En este caso, tenemos métodos de inicio y movimiento.
Además, si presiona Ctrl más o puede ver la lista de todos los métodos que puede
anular. Aquí, tienes que ser un poco un poco de cuidado porque todos estos métodos no
son necesarios. Los métodos que son necesarios son estos dos métodos. Si observa más de
cerca el ícono de estos dos métodos, puede ver que el ícono de alguna manera no está completo.
Estos son los dos métodos que necesitamos para implementar o anular.

Vamos a seleccionarlos.
Y aquí tenemos un cuerpo para este comienzo y mover método, significa que podemos definir
la funcionalidad de estos dos métodos en aquí. Por ejemplo, en el caso de inicio,
solo voy a imprimir algo. Porque es un coche eléctrico, voy a decir que empezó el flujo de
electricidad. Definamos también un campo para esta clase. Voy a guardar el nombre de la cadena privada.
También podemos tener un constructor presionando ALT más insertar, vamos a crear ese constructor. Y
también vamos a crear getters y setters. aquí abajo, definamos también alguna funcionalidad para
este método de movimiento. Una vez más, voy para imprimir algo, digamos que getname plus se mueve
a cierta velocidad.

Bien, ahora que hemos creado esta clase en la que
implementa nuestra interfaz, ¿cómo podemos creamos una instancia de nuestra interfaz para que podamos
cambiar a nuestra clase principal. y dentro de esto clase principal, podemos decir interfaz de coche. Llamémoslo:
la interfaz del automóvil es igual a aquí tengo dos opciones En primer lugar, puedo decir una nueva
interfaz de automóvil como esta para las clases de Java. Pero si hago eso, puede ver que estamos anulando
estos dos métodos. A veces esto podría ser nuestro comportamiento deseado. Pero aquí,
no voy a usar de esta manera. En cambio, estoy va a decir es igual a nuevo coche eléctrico.
Este, pasemos también un nombre, digamos Tesla, puede ver que estamos asignando una clase
a una interfaz.

Pero, ¿cómo está funcionando? Bueno, porque cuando hemos creado nuestra clase, implementamos
esta interfaz. Ahora compilador de Java está contento con la asignación de una clase a esta interfaz.
Ahora que hemos instanciado esta interfaz, podemos usar sus métodos. Por ejemplo, puedo decir puntos
de interfaz de automóvil, digamos comenzar. Y también digamos movimiento de punto de interfaz de automóvil,
también necesitamos pasar una velocidad, pasemos 60. Ejecutemos la aplicación, puede ver que el flujo de
electricidad comenzó y Tesla se está moviendo a 60 millas por hora. Puedes ver que aunque
dentro de nuestra interfaz, no teníamos cualquiera. Pero estamos imprimiendo alguna funcionalidad.

Cuando
llamamos al método de inicio en nuestra interfaz. Si desea asegurarse de que este método de inicio esté
ocurriendo dentro de su clase. Tú también puedes imprima algo más aquí, por ejemplo, dentro
de este método de inicio, imprimamos el nombre de esta clase. les paso esto si se
acuerdan dije que esto se refiere a el objeto actual. En este caso, se refiere a esta
clase y ahora mismo si imprimo esto, imprimirá la dirección de nuestra clase.

Ejecutemos
la aplicación. Puedes ver la dirección de nuestra clase de coches eléctricos. Significa que este método
de inicio está ocurriendo dentro de nuestro sistema eléctrico. clase de automóvil y no dentro de la interfaz.
Si recuerdas cuando hemos hablado de colecciones, hemos definido listas de arreglos de dos maneras. Una de
esas formas era definir nuestra lista de arreglos como lista por ejemplo, porque he dicho lista
que una vez más pueden ver que es una interfaz. Por ejemplo, el material de una cadena, llamémoslo
nombres es igual a new ArrayList Probablemente ahora entiendes esta sintaxis aquí, significa
que tenemos esta clase ArrayList en que implementa esta interfaz de lista. Si quieres
asegurarte de eso y verlo por ti mismo, puede presionar la tecla CTRL en Windows, creo
que es la tecla Comando en Mac. Y por Al hacer clic en este ArrayList, puede ver la
documentación de su clase ArrayList.

Vamos desplácese un poco más arriba aquí dentro de la declaración
de nuestra clase ArrayList, puede ver que están implementando esta lista. No te preocupes
por esto aquí, significa que vamos a aceptar cualquier tipo de objeto, pero como puede ver
si está implementando esto De acuerdo, avancemos desde aquí. Ahora que tenemos nuestra interfaz, también
podemos tener otra clase en la que implementa esta interfaz. Vamos a crear rápidamente otra clase,
digamos una nueva clase de Java. vamos a nombrar este teléfono coche de combustible fósil. Una vez
más, aquí dentro, voy a decir implementos. Digamos interfaz de automóvil, necesitamos implementar dos métodos.
Presionemos Ctrl I, y seleccionemos nuestros dos métodos. Una vez más, definamos algunas funcionalidades para
estos dos métodos. Por ejemplo, vamos trae algo aquí. Digamos que una explosión en
el cilindro hace que el motor arranque. Antes Defino alguna funcionalidad para este método de movimiento,
agreguemos rápidamente un campo arriba en aquí como antes, voy a decir privado, el nombre
de la cadena.

Creamos el constructor y también getters y setters. Después de esa idea, el
método de movimiento, voy a decir este auto se mueve a cierta velocidad. Ahora que hemos creado
esta clase, podemos instanciar nuestra interfaz dentro de nuestra clase principal, así,
eliminemos esta línea de código. aquí yo puede decir interfaz de coche. Una vez más, llamemos a
esta interfaz de automóvil fósil. Como antes, puedo decir nuevo coche de combustible
fósil. Pasemos a Mercedes aquí, por ejemplo. Una vez más, puede ver que el compilador de Java está
contento con esta forma de instanciar nuestro interfaz porque hemos implementado esta interfaz de automóvil
dentro de la clase de automóvil eléctrico y también la clase de automóvil de combustible fósil, podemos instanciar
nuestra interfaz de automóvil de ambas maneras. Y después de eso, puedo decir fosu car interface dot
start. Y veamos la interfaz del coche fósil. movimiento de punto Pasemos también un poco de velocidad
aquí y ejecutemos nuestra aplicación. Puedes ver que ambos métodos han sido llamados aquí,
tengo razón al definir dos clases e implementar la misma interfaz en ambas
clases.

Mi punto es que cuando creas una interfaz, esa interfaz es un contrato entre
diferentes partes de su aplicación. Por ejemplo, en este caso, estoy definiendo múltiples
puntos de autos. No importa qué tipo de coche Es decir, el contrato dice que el discurso debe tener un comienzo
y también un método de movimiento. Así que probablemente ahora puede ver el uso de las interfaces. Pero
hay muchas más dos interfaces. Para ejemplo, podemos usar algo llamado interfaces de devolución de llamada.
Las interfaces de devolución de llamada son extremadamente útil para cuando crea detectores de eventos
como detectores de clics. y tambien son utiles para cuando quieras crear algún tipo de conexión
entre dos hilos diferentes. Hablaremos sobre hilos en el proximo video, no te preocupes
por eso, veremos el uso de interfaces cuando queremos crear una comunicación entre dos
hilos diferentes. Además, vale la pena notar que puede implementar múltiples interfaces
en la declaración de su clase.

Por ejemplo, vamos a crear rápidamente otra interfaz aquí,
voy a llamar a esta una interfaz de prueba. Para esto, solo tengamos un método aquí.
Digamos perdón, por privado, el resumen los métodos no pueden ser privados, digamos void
print name. Y vamos a recibir un nombre. Después de haber creado esta interfaz dentro, por ejemplo,
de mi coche de combustible fósil, después de implementar la primera interfaz, puedo agregar una coma. Y después
de eso puedo proporcionar el nombre de mi segundo interfaz. En este caso, es la interfaz de prueba. Pero
una vez más, pueden ver que estamos recibiendo el error en algún lugar dentro de la declaración
de nuestra clase, puedo presionar Control más i y Puedo implementar mi método.

Entonces puede tener
múltiples interfaces implementadas en la declaración de tu clase Bien, creo que es suficiente
hablar de interfaces. Más tarde en el Por supuesto, vamos a usar mucho las interfaces y los
usuarios de Dave serán mucho más claros. Asi que Aguanta ahí si algo es vago. Bien, eliminemos
todas estas clases adicionales y interfaces adicionales. También eliminemos estas
líneas de códigos. Ahora hablemos de abstracto. métodos. Para eso voy a crear una nueva clase
dentro de mi paquete. Digamos nuevo Java clase, voy a llamar a esta divertida prueba clase abstracta.
Si quieres que tu clase sea abstracta, necesita agregar otro teclado entre el modificador
de acceso y la clase de palabra clave.

Vamos agregue resumen aquí puede ver la clase abstracta pública.
E inmediatamente después de haber agregado esto palabra clave abstracta, si echa un vistazo a su
paquete, puede ver que el ícono para este la clase ha sido cambiada. Esto significa que esta es
una clase abstracta. dentro de una clase abstracta como interfaces. Puedes tener métodos abstractos,
veámoslos rápidamente. Por ejemplo, puedo digamos public abstract, digamos void, y nombremos
esta fuente print name. vamos a recibir un nombre cadena nombre. Una vez más, como interfaces.
Cuando crea métodos abstractos, no puede tener un cuerpo Por ejemplo, si pongo un par
de llaves una vez más, puedo ver el advertencia aquí como antes de que pueda terminar
mi oración con el punto y coma. El uso de abstracto Las clases se parecen mucho a las interfaces. Pero
hay algunas pequeñas diferencias. Por ejemplo, veamos la primera diferencia aquí dentro de
mi paquete, voy a definir una nueva clase, vamos a nombrar esta una clase de prueba.

Cuando queríamos
implementar alguna interfaz, podíamos tener dichos implementos. Y después de eso el nombre de
nuestra interfaz. Pero cuando queremos usar resumen clases, podemos decir extiende, digamos extiende la clase
abstracta de prueba. Ahora mismo estamos recibiendo la advertencia nuevamente presionando Ctrl más si
puede ver los métodos necesarios. Entonces el La primera diferencia es entre esta palabra clave
extends e implement. La otra diferencia es que cuando quiere usar clases abstractas, no
puede extender múltiples clases abstractas. Por ejemplo, aquí, no puedo agregar una coma
y agregar otra clase abstracta en otro Las clases abstractas de palabras no admiten la herencia
múltiple. Esa es la segunda diferencia. entre una interfaz y una clase abstracta. La
otra diferencia es que dentro de tu resumen clase, también puede tener métodos no abstractos.
Por ejemplo, aquí, puedo decir público, vamos decir vacío. Llamemos a este método print.
Recibamos algo aquí. Por ejemplo, vamos decir un texto de cadena. Y debido a que este no es
un método abstracto, podemos tener un cuerpo para este método.

No teníamos esta opción dentro de una
interfaz, podemos tener público no abstracto métodos dentro de una clase abstracta. Como cualquier
otra clase, también podemos tener campos y tal vez un constructor también. Por ejemplo, digamos
nombre de cadena privado. Vamos a crear un constructor para esta clase, puede ver que todo funciona bien.
Así que la otra diferencia es que tú puede tener constructores de campos y campos no
abstractos. Si quieres ver el uso de resumen clases como antes podemos cambiar a nuestra clase principal.
Y aquí, puedo decir resumen de prueba clase. Llamémoslo, la clase abstracta de prueba es igual
a la nueva clase de prueba, la clase que se extiende clase abstracta de artista. Después de eso, podemos
usar los métodos, por ejemplo, puedo decir esto punto de clase abstracto, digamos nombre impreso. Aquí,
necesitamos proporcionar un nombre, vamos a digamos Mesa, pero no teníamos ninguna funcionalidad dentro
de la clase de artistas, definamos rápidamente alguna funcionalidad aquí. También sepa que
he cambiado a esta clase de prueba. Porque hemos creado un constructor dentro de nuestra clase
abstracta de prueba, necesitamos crear el constructor aquí también.

Pero por el bien de la simplicidad,
voy a eliminar los tres, porque Solo quería mostrar que estas tres opciones están
disponibles dentro de una clase abstracta. Vamos traiga algo dentro de nuestra clase de prueba dentro de
este método de impresión. Solo imprimamos el nombre. Ejecutemos la aplicación y veamos si podemos
ver Mason impreso en nuestra consola. Puedes ver mi Sam ha sido impreso. Entonces, una vez más,
puedes ver que el artista interior es abstracto. clase, tenemos este método abstracto que no tiene
a nadie en su lugar, tenemos un método extendido esta clase dentro de nuestra clase de prueba. Y hemos
declarado la funcionalidad dentro de esta prueba. clase, puede ver que hay muchas similitudes
entre las interfaces y el resumen clases A veces, la decisión de usar una clase
abstracta o una interfaz puede ser difícil para eso déjame mostrarte una página web de Oracle
en la que te puede ayudar a decidir mejor puede ver la dirección aquí.

Creo que si revisas
esta página web, podría ser útil. Ellos decir que usa clases abstractas cuando sus clases están
relacionadas entre sí. O el otro caso es que cuando piensas que la clase que va
a extender la clase abstracta puede use algunos métodos o campos comunes o también puede
requerir algunos modificadores de acceso otros que público como privado y protegido
o el otro caso es que cuando quieres declarar algunos campos que no son estáticos y no
definitivos, esta opción tampoco está disponible en interfaces, pero dicen que Use interfaces cuando
sus clases no estén relacionadas entre sí otro, o en los casos que se quiera usar herencia múltiple
podemos ver que cuando usamos interfaces, podemos implementar múltiples interfaces.

Una vez
más, le sugiero que eche un vistazo a esta página web, podría ser útil. Bien, creo que es suficiente
para este video. En el siguiente video vamos para hablar de concurrencia y subprocesamiento en Java
Nos vemos en el siguiente video. En este video, vamos a hablar sobre la concurrencia.
En Java. simultaneidad significa hacer cosas simultáneamente y al mismo tiempo. Por
ejemplo, imagina que estás trabajando con su teléfono y está leyendo un libro al mismo tiempo,
es posible que desee escuchar algunos música simultáneamente, es posible que esté descargando
algunos archivos de Internet. Esto se denomina simultaneidad. o hacer cosas al mismo tiempo en la programación. En
Java. La primera opción que tenemos en para crear una programación concurrente es
crear un hilo un hilo es una unidad de ejecución en la unidad central de procesamiento o CPU de su
dispositivo.

Básicamente, diferentes hilos se unen dentro de algo llamado proceso. Todos estos
procesos serán manejados por su dispositivo UPC. De forma predeterminada, cuando ejecuta su aplicación
Java o, para el caso, su aplicación Android, se creará un hilo llamado hilo principal. Además, algunos
podrían llamar a este hilo principal el Subproceso de interfaz de usuario o subproceso de interfaz
de usuario también. Más tarde, si quieres hacer algo de fondo tarea, por ejemplo, descargar un archivo, creará
un subproceso de trabajo dentro de su principal hilo. La primera opción en Java que
tienes para crear un hilo es así.

Puede decir subproceso, nombremos este subproceso es igual
a nueva amenaza. Al igual que el hallazgo de cualquier otra clase Java. Terminemos nuestra oración
aquí. El constructor de esta amenaza requiere una interfaz y esa interfaz es la interfaz
ejecutable, podemos pasar eso así, puede decir nuevo ejecutable, puede ver que este
ejecutable es una interfaz. Cuando pasas esto interfaz ejecutable, se creará este método de ejecución.
Básicamente, este método de ejecución es el coloque el código que desea que se maneje
dentro del subproceso de trabajo. Para ejemplo, vamos a imprimir algo aquí. Y veamos
si podemos tener una aplicación completa. Por ejemplo, digamos hola desde otro hilo.
Para comenzar este hilo, nosotros necesitamos bajar después de la declaración de nuestro
subproceso y decir inicio de punto de subproceso, vamos ejecutar nuestra aplicación.

Y a ver si podemos ver
algún resultado, puedes ver que nuestro mensaje ha sido impreso en la consola. Pero, ¿cómo
vemos la diferencia entre los principales hilo y este hilo de trabajo para eso voy a
escribir un poco de lógica aquí. Para ejemplo, dentro de este método de ejecución, voy
a crear un bucle for. digamos para int i es igual a cero, i menos que, digamos cinco, e i
plus plus. Dentro de este bucle for, estoy voy a imprimir el valor de este yo y despues
de eso me voy a dormir el hilo lo haremos ver cómo podemos dormir el hilo actual. En primer
lugar, digamos impresión impresa, digamos digamos plus I plus, digamos en un subproceso de
trabajo. Para dormir tu hilo, tienes múltiples opciones La primera y creo que la más fácil
es decir algo como esto, puedes decir hilo con T mayúscula punto dormir.

Dentro de los
paréntesis de este método de sueño necesitas para pasar algunos números en milisegundos. Por
ejemplo, si quiero dormir mi pisada por una segundo, necesito pasar 1000 milisegundos, este
método dormido hará que nuestro ciclo espere un segundo para el próximo registro, por ejemplo,
aquí vamos a imprimir cero después de eso vamos a esperar un segundo. Y después de
eso vamos a imprimir uno pero ahora mismo como puede ver, recibimos una advertencia aquí
y la advertencia dice que la excepción no controlada Java dot Lang dot interrumpió la excepción. En
los videos anteriores brevemente, hemos hablado sobre excepciones. Hablaremos de ellos en este
video más adelante. Pero por ahora, solo necesita saber que siempre que ocurra una excepción,
su aplicación fallará. Entonces debido a eso, tenemos que hacer algo para este error aquí.
La forma más fácil de superar esto El error aquí es hacer clic en el error y presionar
ALT más insertar.

Después de eso, seleccione este entorno con try catch, puede ver que
este código se ha agregado y nuestro hilo El método dot sleep se ha movido a este bloque de
prueba más adelante. Hablaremos de esto. Pero por ahora vamos a pasar de esta parte. Y escribamos
la misma lógica dentro de nuestro main subproceso para que podamos ver que el código dentro del subproceso
de trabajo y el subproceso principal pueden ejecutarse al mismo tiempo. Entonces, básicamente,
voy a copiar esto para el bucle. vamos a copiar desde aquí y dentro del hilo principal fuera de este método
de ejecución. Vamos a basar el botón aquí. Voy a cambiar este mensaje al hilo
principal. Ejecutemos la aplicación y vamos a ver si este código va a funcionar, como
pueden ver, estamos imprimiendo el valor de aceite dos veces. Una vez en un subproceso de trabajo
y una vez en el subproceso principal, significa que el código dentro del subproceso de trabajo y el código
dentro del subproceso principal están sucediendo al mismo tiempo.

En esta situación, decimos
que nuestra aplicación es asíncrona, o es concurrente. Entonces, una vez más, cuando
ejecuta su aplicación Java o Android, un hilo se creará de forma predeterminada, en el que llamamos a ese
hilo el hilo principal o el hilo de la interfaz de usuario. Después de eso, dentro de ese subproceso principal, puede
crear tantos subprocesos de trabajo como desee. La forma más sencilla de crear un hilo es
decir hilo hilo es igual a hilo nuevo. Y después de eso, podemos pasar un nuevo ejecutable
al constructor de su hilo en el que crearemos este método de ejecución que se ejecutará
en un subproceso en segundo plano.

Pero por esto forma de definir su hilo, hay muchas consideraciones
de las que debe preocuparse sobre. Por ejemplo, debe preocuparse por
cancelar su hilo cuando el trabajo está hecho. Además, hay todo tipo de conceptos nuevos,
por ejemplo, grupos de subprocesos, interbloqueos e interrumpiendo tu hilo. No tengo la intención
de hablar de todos esos conceptos aquí, porque en Android tenemos todo tipo de opciones disponibles
para manejar tareas en segundo plano.

En De hecho, más adelante en el curso, tenemos una sección completa
dedicada al manejo de tareas en segundo plano. En Android, tenemos opciones como asíncrono, servicios de tareas,
programador de trabajos y administrador de trabajo, vamos a hablar de todos ellos. Pero más sobre
eso en futuros videos. Bien, ahora vamos hablar de esta excepción interrumpida que está
sucediendo aquí. Básicamente, siempre que se produce una excepción, su aplicación
fallará y se cerrará por el sistema operativo. Hay todo tipo de excepciones
que pueden ocurrir. Por ejemplo, las que hemos visto anteriormente, fueron excepción
aritmética, excepción de puntero nulo, y el que podemos ver aquí es excepción interrumpida.
Entonces, para evitar choques, usted hay que hacer algo con la excepción.
Comentemos todo esto y veamos que podemos hacer con las excepciones.

Creemos una aplicación en la que crearemos
una excepción aritmética. aquí estoy vamos a definir dos nuevos enteros. Por ejemplo,
digamos int, a es igual a dos, e int b es igual a cero. Traigamos algo aquí.
Digamos imprimir a dividido por b. Si ejecutamos nuestra aplicación, bien, ahora, deberíamos
ver una excepción aritmética. Puedes ver eso aquí abajo. Lo que podemos hacer con esta
excepción es atraparla cada vez que sucede, y podemos hacerlo usando un bloque
try catch. Veamos rápidamente que para ejemplo, puedo decir probar. Muevamos esta línea de código
dentro de nuestro bloque de prueba. Podemos decir intente esto en caso de que ocurra alguna excepción, capture
esa excepción. El tipo de excepción era excepción aritmética. Así que digamos una excepción
aritmética, llamemos a esta excepción E. Y dentro del bloque catch, podemos hacer algo más con
nuestro código.

Por ejemplo, podemos imprimir alguna cosa. En este caso, digamos que B era cero.
Ahora, si ejecutamos nuestra aplicación, no obtener una excepción. En su lugar, estamos imprimiendo
este mensaje. A veces este mensaje puede para no ser útil. Y de hecho, en la mayoría de los
casos, este mensaje será útil para depurar propósitos, pero es mucho mejor que un choque. El
tipo de excepción que estamos detectando aquí hay una excepción aritmética. Si no
sabemos el tipo de excepción, podemos pasar el término genérico excepción.

Si pasa
esta excepción, aceptará todas las excepciones Si ejecutamos nuestra aplicación, una vez
más, deberíamos ver el mismo resultado. Y aquí está el mismo resultado. El otro tipo de
excepción que hemos visto hasta ahora era nulo excepción de puntero que ocurriría cuando hacemos
alguna operación en una referencia de objeto nulo. Por ejemplo, si tuviéramos una cadena aquí, digamos que el
nombre de una cadena es igual a Ahora, si lo hacemos alguna operación sobre nuestro nombre dentro del bloque
try, por ejemplo, si decimos nombre, punto igual, Digamos, Mesa, si hacemos eso, obtendremos una excepción
de puntero nulo.

Porque nosotros He hecho este método de punto igual en un objeto
nulo dentro del bloque catch esta vez, en lugar de decir que B era cero, digamos que el nombre
era no. Si ejecuta la aplicación, va a funciona bien porque estamos pasando la excepción del término
genérico, pero podemos pasar con seguridad nulo excepción de puntero. Ejecutemos la aplicación. Puedes
ver que ese nombre no era del otro tipo de excepción que acabamos de ver fue esta excepción
interrumpida. Va a suceder cada vez que interrumpir el hilo actual. Por ejemplo, imagine
que dentro de un subproceso de trabajo, está descargando algún archivo al mismo tiempo, puede
recibir una llamada telefónica. si no atrapas la excepción interrumpida, es posible que se bloquee.
Tenemos todo tipo de excepciones. Por ejemplo, tenemos una excepción de audio, que significa excepción
de salida de entrada Tenemos una transmisión de clase excepción, tenemos todo tipo de otras excepciones
en las que vamos a hablar de ellas siempre que los enfrentamos.

También en nuestra excepción, tenemos
un método útil para fines de depuración. Y ese método se llama seguimiento de pila de impresión, podemos
ver el nombre de nuestra impresión de punto de excepción un seguimiento de pila, hablaremos de esta pila
en videos futuros cuando hablemos de actividades y fragmentos en Android. Pero por ahora, solo
sepa que esta línea de código aquí va para imprimir algo en nuestra consola que podría
ser útil cuando esté depurando su aplicación.

Ejecutemos la aplicación aquí. Puede ver el
seguimiento de la pila de su excepción aquí dice que la excepción ocurrió en la línea 34,
que es esta línea, y también está viendo el nombre de su excepción, esta no es una excepción
real, solo está viendo algunos información sobre su excepción, esto aquí
puede ser útil para cuando esté depurando su aplicación. Bien, creo que es suficiente
hablar de concurrencia y excepciones en Java. En el siguiente video, vamos a hablar sobre
el patrón Singleton en Java. Te veo en el siguiente vídeo En este video, vamos a hablar
sobre el patrón Singleton. Básicamente, usamos el patrón Singleton cuando queremos asegurarnos
de que solo tenemos una instancia de algún class en toda nuestra aplicación.

En algunos casos, es posible
que deseemos tal cosa. Y aquí está cómo podemos implementar ese patrón. Por ejemplo, un
caso de uso del patrón Singleton es cuando está utilizando una base de datos en su aplicación. No
te preocupes por las bases de datos, tenemos una completa sección dedicada a ellos. Pero
aquí, solo vamos a crear un simple Base de datos con nombre de clase Java. Vamos a crearlo rápidamente
dentro de nuestra carpeta de origen dentro de nuestro paquete. Y veremos cómo podemos implementar ese patrón.
Vamos a nombrar esta base de datos de clase. Para esta clase de base de datos, voy a definir un campo,
digamos un nombre de cadena privada. También, vamos a crear un constructor y también getters
y setters. En este momento, debido a que tenemos este constructor público,
podemos crear tantas instancias como queramos. de esta clase de base de datos. Pero si quiere
asegurarse de tener solo una instancia de esta clase en toda su aplicación,
puede crear otro campo aquí, para ejemplo, voy a decir privado, estático como
el tipo de datos de este campo, voy a para especificar la clase en la que estamos por ejemplo,
en este caso voy a decir base de datos.

Asi que digamos base de datos estática privada, asegúrese
de importar la que viene de nuestro paquete o patrón Singleton de puntos del fabricante de puntos.
Para el nombre de este campo, es convencional nombrar instancia. Y eso es. Ahora podemos crear un método
getter para este campo. y aquí está cómo podemos crear ese campo, podemos decir público,
porque vamos a usar esta instancia dentro de este campo, voy a decir estático,
el tipo de retorno de este método getter va ser la clase misma. Así que voy a decir base de datos.
Vamos a nombrar este método.

Obtener Instancia, como puede ver la sugerencia aquí y tengamos
un cuerpo para este método. aquí, en lugar de simplemente pasar esta instancia,
voy a crear una declaración if, voy a decir si digamos ahora, es igual a nuestra instancia,
si ese es el caso, voy a crear un nueva instancia, voy a decir instancia, es igual a
nueva base de datos. Fíjate que necesitamos un nombre para el constructor de esta base de datos. Así
que voy a recibir ese nombre a través de la entrada de este método aquí, digamos el nombre
de la cadena.

Y más adelante, primero esto nombrando aquí. Entonces, si nuestra instancia es
ahora, vamos a crear una nueva instancia, y después creando que lo vamos a devolver, podemos decir
devolver instancia. Pero en el otro caso, en caso de que nuestra instancia no esté
en el caso else, simplemente voy a regresar instancia, en este momento, si usamos este método de obtención
de instancia, en lugar de este constructor, estamos Asegúrese de que solo tenemos una instancia de nuestra
clase de base de datos en toda nuestra aplicación. Por ejemplo, si vamos a la clase principal y tratamos
de instanciar nuestra base de datos, puede tener solo una instancia, podemos decir base de datos,
nombremos la base de datos es igual a la base de datos con D mayúscula punto obtener instancia, por supuesto,
necesitamos el nombre aquí. Pasemos un nombre.

Por ejemplo, digamos música DB. Tenga en cuenta que
debido a que hemos declarado esta instancia get como un método estático, ahora podemos usar esta clase de
base de datos con esta D mayúscula, significa que no confían en la instancia de esta clase de base de
datos. En cambio, estamos usando el objeto mismo. Pero ahora mismo alguien puede declarar la clase de la base de
datos como lo hicimos para cualquier otra clase. Por ejemplo, aquí, alguien puede decir base de datos. Llamemos a esta
base de datos de prueba es igual a nueva base de datos porque en nuestra clase de base
de datos, tenemos el constructor, podemos pasar un nombre aquí y si hacemos eso, tenemos otra
instancia de esta clase de base de datos.

Para ejemplo, digamos películas DB. Para restringir
a los usuarios el uso del constructor, Voy a cambiar el modificador de acceso de este constructor
dentro de mi clase de base de datos, Voy a cambiar esto de público a privado, para
que este constructor esté disponible. solo desde dentro de esta clase y no desde dentro de ninguna
otra clase como esta clase principal. Derecha ahora tenemos un error aquí y el error dice
que el constructor es privado. Entonces por cambiando el modificador de acceso de público a
privado, ahora, estamos restringiendo a otros de creando múltiples instancias de nuestra clase de base de
datos. Pero debido a que nuestro constructor dentro nuestra base de datos es privada, podemos usar este constructor dentro
de este método de instancia de obtención, como puede ver en la línea 10, aquí, ahora mismo, debido
a esta palabra clave estática. Y también por esto, si la declaración que hemos puesto aquí, estamos
seguros de que tenemos solo una instancia de nuestra clase de base de datos.

Pero también
hay otro punto que nos debe preocupar. Y ahí es cuando alguien intenta crear múltiples instancias
de nuestra base de datos a partir de múltiples hilos. En algunos casos, si alguien intenta crear varias
instancias de nuestra clase de forma asíncrona, podrían tener éxito en hacer tal cosa. Para hacer que nuestro
subproceso de método de obtención de instancia seguro, tenemos una opción aquí después de esta palabra
clave estática, podemos agregar otra palabra clave en el que no hemos visto hasta ahora, podemos decir
sincronizado, esta palabra clave sincronizada hacer que nuestro método de obtención de instancias sea seguro
para subprocesos, significa que no más de un subproceso puede llame a esta instancia get al mismo tiempo.

Así que
este es todo el patrón Singleton. Primero de todos, declaras un campo estático del
tipo de tu clase por ejemplo, en este caso base de datos, después de eso, crea un método de instancia
de obtención en el que es estático una vez más y también sincronizado. Dentro de ese método de obtención
de instancia, está comprobando que si la instancia de su base de datos es ahora o no, si no lo
es, significa que es la primera vez que están llamando a este método de instancia de obtención. Entonces
necesitas crear una nueva instancia como nosotros haciendo en la línea 10. Después de eso, devolvemos
la instancia, pero en el caso else, estamos no vamos a crear una nueva instancia, solo
vamos a devolver la instancia existente junto a este método de obtención de instancia.
Para restringir que otros usen el constructor, necesita cambiar el modificador de acceso
de su constructor a privado para que ser utilizable solo dentro de su clase de base de datos.
También podemos hacer estas sentencias if más cortas por ejemplo, aquí, puedo eliminar todo este caso.
Y puedo eliminar esta instancia de retorno desde la línea 11 aquí, y después de la instrucción if, puedo
devolver esa instancia.

Así que por el momento llegamos a esta línea 13 en la que estamos devolviendo la instancia,
estamos seguros de que nuestra instancia no lo es y estamos devolviendo una nueva instancia
o la instancia existente. Esta bien yo creo que es suficiente hablar sobre el patrón
singleton más adelante en el curso, verá que este patrón puede ser útil de vez en cuando.
Antes de terminar este video, estoy Voy a hablar de uno más métodos disponibles
en cada clase en Java.

Y ese método es llamado a string en este momento, no tenemos ningún método
to string dentro de nuestra clase de base de datos. Pero si volvemos a la clase principal y decimos
print database.to string, puede ver que tenemos tal método. Y si ejecutamos nuestra
aplicación, deberíamos ver alguna información sobre nuestra clase de base de datos. Ejecutémoslo rápidamente
y veamos si podemos ver algún resultado. Puede ver que estamos obteniendo la dirección de nuestra
clase de base de datos. Si tu quieres tu puedes cambie esto, por ejemplo, dentro de su clase de base
de datos, puede anular los dos métodos de cadena aquí dentro del alcance de nuestra clase, podemos
presionar Ctrl más o y desde aquí Puede seleccionar este método de dos cadenas.

En estos momentos
estamos devolviendo el súper comunicado. Si usted queremos cambiar que podemos eliminar toda esta declaración.
Y podemos preparar una cadena en aquí. Por ejemplo, podemos decir que un texto de cadena es
igual a, digamos, una clase de base de datos. Después eso, agreguemos una línea. Y después de eso, imprimamos
el nombre de nuestra base de datos. Digamos nombre más el nombre de inicio. Después
de crear este texto, podemos volver, por ejemplo, podemos decir devolver texto. Ahora que hemos anulado este método
de dos cadenas, si ejecutamos nuestra aplicación, deberíamos ver algunos otros resultados impresos en
nuestra consola. De vez en cuando estas dos cuerdas El método también puede ser útil.

Está disponible en
todas las clases de Java y básicamente lo hará imprimir algún detalle sobre esa clase. Bien,
creo que es suficiente para este video. Y para ese método. Creo que es suficiente hablar de Java.
Nuestra sección de Java está lista y con suerte hemos aprendido mucho en el próximo video,
vamos a tener un desafío rápido para para asegurarnos de que hemos aprendido todo lo que
hemos hablado hasta ahora.

Pero antes de terminar de este video, voy a decir que con Java,
puedes hacer muchas cosas, por ejemplo, además de escribir aplicaciones de Android,
puede usar Java para crear aplicaciones de escritorio para sistemas operativos Windows, Linux y Mac OS. Y
también con la ayuda de Spring Framework, puede usar Java para crear aplicaciones web
empresariales. Hay mucho más en Java idioma. Por ejemplo, puede usar Java para
crear aplicaciones para computadoras cuánticas. También puede usarlo para fines de análisis de datos
y, literalmente, todo lo demás que desee. En este curso hemos tocado la superficie del
lenguaje Java. pero si quieres saber más, actualmente estoy grabando un nuevo curso para
el lenguaje Java. Y estoy seguro de que lo harás encuentro útil ese curso además del curso de Java
Planeo grabar un curso completo para una primavera Framework para la creación de aplicaciones
web.

Para cuando vea este video, esos Es posible que se publiquen cursos, así que asegúrese de
verificarlos. Vale, creo que es suficiente. En el próximo video, como dije, vamos a tener un desafío
rápido Nos vemos en el próximo video. Aquí está nuestro desafío final para la sección de Java,
quiero que simules los contactos de tu teléfono y aplicaciones de mensajes. Así es como nuestra
aplicación va a funcionar. Ante todo, vamos a saludar al usuario con algún mensaje. Después
de eso, vamos a mostrar tres opciones. al usuario, uno para gestionar los contactos,
otro para gestionar los mensajes, y otro para crear la aplicación. En caso de
que el usuario seleccione la primera opción, que es administrar los contactos, vamos a mostrar
estas opciones, una para mostrar todo de los contactos otra para añadir un nuevo
contacto.

Otro para buscar un determinado contacto. Uno más por borrar un contacto.
Y la última es volver a la anterior. menú, que eran estas tres opciones. Pero en caso
de que el usuario seleccione la segunda opción, que es el manejo de mensajes, vamos a mostrar
estas tres opciones. El primero es para ver una lista de todos los mensajes.
La otra es enviar un nuevo mensaje y una último para volver al menú anterior en el que
se encuentra nuestro menú inicial, que tiene tres opciones En caso de que el usuario seleccione
esta tercera opción, vamos a crear la aplicación. No hemos hablado de bases de datos y almacenamiento
permanente de datos. Pero como una pista, si desea almacenar contactos y mensajes, puede
usar variables estáticas. Bien, pausa el video aquí y ve a resolver el desafío. Después
de eso, vuelve. Y veamos mi solución. para esta aplicación. Bien, vamos a ver cómo
podemos crear esta sencilla aplicación. En primer lugar, he creado mi proyecto y he creado
este paquete dentro de mi código fuente.

Carpeta. Dentro de este paquete he creado esta clase
principal en la que contiene este principal método. Sigamos desde aquí. En primer lugar,
voy a crear una nueva clase de Java llamado mensaje. Dentro de esta clase de mensaje,
voy a tener tres campos, digamos texto de cadena privada. Otro, digamos destinatario
de cadena privada. Este destinatario en aquí va a ser el nombre de nuestro contacto. También
aquí, voy a definir un número entero llamado ID, digamos ID privado int. Esta identificación
no es necesaria para esta aplicación en aquí. Pero como en la mayoría de los casos, cuando
trabaja con bases de datos, tiene una columna llamado ID para identificar cada mensaje único.
Quiero estar lo más cerca posible de una aplicación del mundo real. Solo quería que vieras
este campo de ID dentro de un modelo en el que es un mensaje Bien, ahora que tenemos estos
tres campos, creemos rápidamente un constructor.

Y aceptemos todos estos tres campos. Después
de eso, vamos a crear getters y setters. No estoy seguro de que vayamos a necesitar todos
estos getters y setters más adelante. Si no los usamos, los eliminaremos. También dentro de
esta clase de mensaje, vamos a crear rápidamente otro método llamado obtener detalles. Básicamente,
vamos a imprimir los detalles de cada mensaje. Así que digamos vacío público. Vamos a nombrarlo
obtener detalles. digamos imprimir. En primer lugar, digamos el nombre del contacto.
Y vamos a imprimir el destinatario. Después eso, imprimamos el texto mismo. Digamos mensaje
más el texto. También tenemos que agregar una ventaja aquí. Lo lamento. Y creo que si agregamos
una barra invertida n aquí, sería ser mucho mejor Después del texto. También imprimamos
la ID Digamos barra invertida n, Id más nuestra identificación.

Eso es todo para nuestra clase de mensaje,
vamos a crear también rápidamente la clase de contacto. Nueva clase de Java, nombremos este contacto telefónico.
Dentro de esta clase de contacto, voy a tener cuatro campos, digamos cadena privada, nombre,
cadena privada. Número, puedes pensar que este número debería ser un número entero, o tal vez un número
largo, pero debido a que diferentes números pueden tienen diferentes formatos. Por ejemplo, pueden
tener algunos paréntesis o tal vez algunos guiones.

Estoy guardando este número como una cadena. Pero si
quieres, siempre puedes usar números enteros o largos. Después del nombre y el número, voy a guardar otro campo aquí,
digamos una cadena de correo electrónico privada. Después de todo esto, voy a tener otro campo
aquí, digamos ArrayList privado de diferentes mensajes. Llamemos a esto mensajes
telefónicos. Básicamente, voy a ahorrar mensajes diferentes para cada contacto dentro de una
ArrayList. Bien, ahora que tenemos nuestros cuatro campos, vamos a crear rápidamente nuestro constructor.
Pero aquí, voy a crear dos constructores, porque al momento de crear un nuevo contacto, ese
contacto no tiene ningún mensaje.

Para eso, voy a crear otro constructor aquí,
que no aceptará un ArrayList de diferentes mensajes. Esta vez, seleccionemos los tres
primeros elementos. Pero porque si no lo hago hacer nada con estos mensajes, este ArrayList ahora
estará dentro de este constructor, voy a ver estos mensajes de puntos es igual a la nueva
ArrayList. Así que a la hora de crear un nuevo contacto, estoy guardando la lista de matriz de mensajes como
una lista de matriz vacía. Bien, ahora que nosotros tenemos dos constructores aquí, vamos a crear rápidamente
getters y setters. y tambien despues eso, vamos a crear un método para obtener detalles. Digamos
vacío público, obtener detalles. También podemos use dos métodos de cadena. Pero aquí, me siento más
cómodo con este método de obtención de detalles. imprimamos toda la información de cada contacto.
Digamos el nombre más el nombre del personal. Después de eso, imprimamos el número y el correo electrónico.
Bien, eso es todo para nuestra clase de contacto.

Vamos cambiar a la clase principal. Y escribamos la lógica
para nuestra aplicación. en primer lugar en aquí, voy a crear una ArrayList de diferentes
contactos. pero no voy a hacer que dentro de este método principal porque vamos
a tener múltiples métodos y necesitamos para tener acceso a nuestros contactos se liberan
en diferentes métodos para eso voy a defina mi ArrayList arriba aquí en los campos de esta
clase principal. Puedo decir privado, estático, porque los métodos que voy a usar más adelante
son métodos estáticos, necesito crear esta ArrayList como estática, así que digamos una lista de
matriz estática privada de diferentes contactos. Vamos nombrarlo contactos. Pero este no es un buen lugar para
inicializar nuestros contactos ArrayList porque este no es el lugar donde se iniciará nuestro código.
Podemos inicializar nuestros contactos ArrayList por ejemplo, dentro de este método principal.

Pero
antes de hacer eso, también voy a definir un escáner aquí porque vamos a necesitar el
escáner en múltiples métodos. Entonces vamos digamos escáner estático privado, llamémoslo escáner.
Después de eso dentro del método principal, vamos a inicializar nuestros contactos ArrayList. Digamos
que contact es igual a new ArrayList. Como puede ver aquí, voy a saludar al usuario
con un mensaje, imprimamos algo. Después de eso, mostraré estas tres opciones
diferentes al usuario. Porque quiero tener un código limpio. Voy a mostrar estas tres
opciones dentro de otro método. Vamos el nombre de ese método muestra las opciones iniciales. Pero
como puedes ver, ahora mismo me estoy poniendo rojo. advertencia y eso es porque necesito crear este
método aquí.

Así que digamos privado, vacío estático, mostrar opciones iniciales. Traigamos
las opciones aquí. Después de eso, tenemos que obtener la entrada del usuario. Y para eso podemos usar
el escáner. Así que vamos a inicializar nuestro escáner. En este momento hemos declarado nuestro escáner
arriba aquí, pero nunca lo inicializamos. Es un buen lugar para inicializar nuestro escáner aquí.
Podemos decir que un escáner es igual a nuevo escáner. Pasemos el sistema que después de eso,
podemos decir que su elección es igual a un escáner punto siguiente int. Vamos a crear un interruptor
sobre esta elección. Digamos que encienda la elección. En caso de que la elección sea una, vamos a gestionar
los contactos.

Una vez más, hagamos que en otro método, digamos administrar contactos. No se preocupe
por esta advertencia de lectura, lo haremos crear este método más adelante. Agreguemos también
un descanso aquí. Pero en el caso y la elección es a, vamos a manejar los mensajes. Así que digamos
administrar mensajes. en caso de que el la elección es tres, o para el caso, cualquier
otro número, vamos a crear la aplicación. Así que aquí, puedo decir por defecto. En el
caso predeterminado, solo saldré de la aplicación. Minimicemos este proyecto principal por ahora.
Y luego aquí, vamos a crear nuestros dos métodos. En primer lugar, gestionemos nuestros contactos. Digamos
privado, vacío estático, administrar contactos. Una vez más, aquí, voy a mostrar una lista de opciones.
Así que imprimamos esas opciones. Uno, una vez más, necesitamos obtener la entrada del
usuario para que podamos usar el escáner, vamos digamos que int choice es igual a un punto de escáner al lado de
int.

Tenga en cuenta que no estamos inicializando nuestro escáner aquí. Y eso es porque lo hemos hecho
dentro de estas breves opciones iniciales. método. Entonces, en este momento, tenemos una instancia de
nuestro escáner. Después de eso, una vez más, nos necesitamos crear un interruptor en nuestra elección.
En caso de que sea uno, vamos a mostrar todos los contactos, vamos a crear ese método, mostrar todos
los contactos. Y también tenemos que romper. Vamos escribe también el resto de los casos. En el caso
predeterminado, voy a volver a la anterior menú. Así que voy a ejecutar una vez más este método
de mostrar opciones iniciales, para que podamos ver todas estas opciones una vez más.

Entonces, en
el caso predeterminado, voy a decir mostrar inicial opciones Después de eso aquí, también necesitamos un valor predeterminado.
Estoy diciendo predeterminado aquí, porque Voy a volver al menú anterior en caso de
que el usuario ingrese algún otro número. Bien, vamos a crear estos métodos uno por uno. En primer
lugar, vamos a mostrar una lista de todos los contactos Voy a hacer eso aquí abajo.
Además, en lugar de escribir la declaración de su método, puede utilizar la ayuda de su identificación.
Para eso, puedes hacer clic en la flecha roja aquí y presionando ALT más insertar, la primera
opción es crear este método, usted puede ver que hemos creado este método con éxito, el vacío
está bien para el tipo de retorno. Y aquí abajo, no puedo crear la lógica para este
método. Para mostrar una lista de todos de los contactos, simplemente voy a crear uno
para cada ciclo.

Digamos por contacto, vamos nómbralo ver dentro de nuestros contactos, o al menos,
digamos C punto obtener detalles el método que hemos creado dentro de nuestra clase de contacto.
Después del ciclo for una vez más, voy a mostrar las opciones iniciales. Para eso voy a
guardar mostrar opciones iniciales. Vamos para salir de la aplicación cuando el usuario nos dice que
eso es todo lo que tenemos que hacer dentro de este método. Vamos a minimizarlo por ahora. Y vamos a crear
el segundo método que es agregar nuevo contactos. Una vez más, podemos usar la ayuda de nuestra identificación.
Dentro de este agregar nuevo método de contacto vamos a recibir algunos aportes de los usuarios.
Pero antes de eso, imprimamos algo que Digamos agregar un nuevo contacto. Después de eso,
digamos que ingrese el nombre de los contactos. Una vez más, vamos a usar nuestro escáner, digamos
que un nombre de cadena es igual a un escáner punto siguiente, después de obtener el nombre de los contactos,
vamos a obtener el número de contacto. Asi que una vez más, traigamos algo aquí.

Digamos que
por favor ingrese el número de contacto. Vamos vea que el número de cadena es igual a un punto de escáner a continuación,
obtengamos también la cadena de correo electrónico de contactos hizo es igual a un punto de escáner siguiente. Después
de eso, debemos asegurarnos de que el usuario ingrese algo como el número de nombre y correo electrónico
de nuestro contacto. Y no solo presione enter y déjanos con cuerdas vacías. Para eso, voy
a crear una declaración if aquí, vamos a di si nombre punto es igual a una cadena vacía. Digamos
o si el número es igual a una cadena vacía. O si el correo electrónico es igual a una cadena vacía.
Si cada uno de estos es cierto, vamos a muestre algún mensaje al usuario que le pediremos
que ingrese toda la información requerida. Digamos que por favor ingrese toda la información. Después
de imprimir esta línea de código, voy para recordar todo este método voy a empezar desde
el principio de este método.

Para eso Voy a decir añadir nuevo contacto. Estoy llamando a
este método desde dentro del método. Esto es llamada llamada recursiva, puede ver el ícono en el lado
izquierdo aquí. Si pasas el cursor por encima que puede ver la llamada recursiva llamando a un método
desde dentro de ese método. Así que por esto forma de llamar a nuestro método, estamos comenzando
una vez más desde el principio de este método, pero en el caso else, vamos a crear nuestro
objeto de contacto, voy a decir contacto, llamémoslo contacto es igual a nuevo contacto.
Y después de eso, voy a pasar nombre, número y correo electrónico. Si recuerda dentro de nuestra clase
de contacto, teníamos dos constructores. y aquí estamos usando el segundo constructor, no pasamos
ningún mensaje ArrayList a este constructor aquí Después de crear nuestro objeto de contacto, podemos
decir contacte con nuestro ArrayList dot add. Pasemos nuestro contacto. Tan simple como eso. Ahora
hemos añadido un nuevo contacto después de este si declaración.

Una vez más, voy a mostrar las opciones
iniciales. Así que digamos mostrar inicial opciones Porque una vez más, no vamos a crear
la aplicación a menos que el usuario nos dice Ok, hemos terminado con nuestro segundo método.
A ver qué más tenemos aquí. Vamos crear esta búsqueda de método de contacto. El Vacío
está bien para el tipo de retorno. dentro de esto método en primer lugar vamos a pedir el
nombre del contacto. Así que traigamos algo digamos por favor ingrese el nombre de contacto. Digamos que
el nombre de la cadena es igual al punto del escáner Siguiente. Después de eso, debemos asegurarnos de haber
recibido alguno, así que digamos si el nombre punto es igual a una cadena vacía. Vamos a
imprimir algún mensaje que vamos a pedir el nombre del contacto una vez más.

Digamos que
ingrese el nombre y luego, una vez más, van a utilizar una llamada recursiva. Vamos
a decir buscar contactos una vez más. Pero en el caso contrario, vamos a buscar este contacto
dentro de nuestra ArrayList de contactos. Para eso, una vez más, voy a crear un para
cada bucle. Digamos por contacto. Vamos nombrarlo ver dentro de nuestros contactos son una
lista.

Digamos que si c dot get name es igual al nombre que acabamos de recibir. Si ese es el caso,
imprimamos c punto obtener detalles. Vamos también defina un valor booleano antes de este bucle for.
Veremos por qué estoy definiendo este booleano. Digamos booleano. Vamos a nombrar que existe. Vamos
a inicializarlo a falso en este estado if Dondequiera que haya encontrado el contacto,
en primer lugar voy a cambiar el valor de este existe a verdadero, digamos que existe es igual
a verdadero. Y después del bucle for, Voy a crear una sentencia if, voy a decir
si existe no es igual a verdadero. Entonces vamos a imprimir algo que voy a guardar
no hay tal contacto.

Después de todas estas lógicas, vamos a mostrar
la lista de opciones una vez más. Entonces vamos decir mostrar opciones iniciales. Bien, eso es todo para
nuestra búsqueda de método de contacto. también cree este método de eliminación de contacto. Una vez
más, aquí dentro, vamos a pedir los contactos. nombre. Así que digamos que por favor ingrese el nombre.
Como antes, digamos que el nombre de una cadena es igual a un punto de escáner a continuación, a continuación, necesitamos crear
nuestra instrucción if.

Si se nombra, eso equivale a un cadena vacía, vamos a pedir el nombre
una vez más. y vamos a empezar desde el comienzo de este método. En el caso
contrario, vamos a buscar en nuestros contactos. Lista de arreglo. Así que digamos que para ver el contacto dentro
de nuestra lista de contactos. Antes de escribir la lógica, también definamos un booleano arriba aquí como
lo hicimos para el método de búsqueda de contactos. Digamos que Boolean existe. Vamos a inicializarlo
a falso. Así que aquí, digamos si no lo hago sé por qué dije como aquí, cambiemos rápidamente
este para ver. Así que digamos si ves, que recibe nombre es igual al nombre que hemos
recibido.

Si ese es el caso, en primer lugar todo, vamos a cambiar el valor de esto si
existe. Digamos que si existe es igual a la verdad Después de eso, vamos a eliminar este
contacto de nuestra ArrayList de contactos. puede guardar el punto de contacto eliminar. Este método de
eliminación requiere un objeto que voy a pasar ver el objeto que estamos buscando actualmente en esta
iteración. Después del ciclo for, estoy vamos a decir si existe no es igual a verdadero
entonces vamos a decir que no hay tal contacto. Y después de todas estas lógicas,
vamos a mostrar la lista de todos los opciones iniciales. Bien, eso es todo por este método.
Minimicemos este. hasta ahora, nosotros hemos creado la lógica para la primera opción en
nuestras opciones iniciales, hemos creado la toda la lógica para esta gestión de contactos. Pero
ahora mismo en la lógica de esto administrar contactos opción, tenemos uno o dos puntos posibles para
múltiples errores, vamos a arreglar esos dos y también vamos a escribir el resto de la
lógica para esta aplicación en el próximo video.

Nos vemos en el próximo vídeo. En el video anterior, hemos creado la lógica para esta
opción de administración de contactos. Pero si recuerdas, dije que tenemos algunos problemas en este momento
con esta lógica de administración de contactos. Y en este video, en primer lugar, vamos a solucionar
esos problemas. El primer problema está dentro. esto agrega un nuevo método de contacto. Aquí estamos
agregando el contacto a nuestra matriz de contactos. lista. Pero antes de eso, debemos asegurarnos de
que no tenemos un contacto con este nombre. guardado en nuestro dispositivo para eso antes de agregar
este contacto a mi lista de matriz de contactos.

Estoy voy a comprobar que si tengo un contacto de este tipo en mi
dispositivo. Así que antes que nada, vamos a crear un booleano aquí. Digamos que Boolean existe.
Vamos a inicializarlo a falso. Después eso, voy a crear un para cada ciclo. Digamos
que para contacto ver dentro de mis contactos tengo una lista Veamos si c dot get name es
igual al nombre que acabamos de recibir. Dentro de esta declaración if, voy a cambiar el valor
de this does exist a true, así que vamos a decir que existe es igual a verdadero.

Después del
bucle for voy a comprobar que si esto funciona exist es igual a verdadero o no. Digamos que
si existe es igual a verdadero. entonces vamos para imprimir algo vamos a decir que tenemos
un contacto con este nombre. Después vamos a empezar desde el principio de este método.
Así que voy a llamar a este complemento nuevo método de contacto una vez más. Pero
en el otro caso, voy a agregar el contacto a mi cuenta. ArrayList de Tech, así que llamaré
a esta línea de código desde aquí. Y yo soy voy a pegarlos dentro de este otro caso. Además,
después de agregar el contacto a nuestros contactos lista de matrices, voy a mostrar un mensaje al
usuario. Así que digamos nombre, agregado con éxito. Bien, esa es la solución que necesitábamos dentro de nuestro
nuevo método de agregar contacto. cambiemos tambien el método de mostrar todos los contactos también un
poco. Así que dentro de esto para cada bucle, después imprimiendo los detalles de un contacto, voy
a imprimir otra línea. Y esta línea va ser solo un separador que indicará la diferencia
entre diferentes contactos.

Nada especial aquí. Está bien, sigamos adelante.
Y vamos a crear el método que no hemos creado aquí, este método de administración de mensajes,
al presionar ALT más insertar, podemos crear ese método En primer lugar, vamos a mostrar
una lista de opciones. Así que imprimamos algo. Después de eso, necesitamos recibir la entrada del usuario,
puedo decir que la opción int es la llamada a un punto de escáner siguiente int. Y vamos a crear nuestra declaración
de cambio en esta elección. en caso de que sea Vaughn, vamos a mostrar una lista de todos los mensajes.
Así que digamos mostrar todos los mensajes, crearemos ese método en un minuto. Pero aquí,
agreguemos un descanso. y escribamos los otros casos. En caso de que sea cierto, vamos
a enviar un nuevo mensaje. entonces digamos enviar un nuevo mensaje. Y agreguemos un descanso.
En el caso predeterminado, solo voy a mostrar las opciones iniciales. Después de eso, aquí dentro,
también necesitamos un descanso. Bien, vamos a crear este método muestra todos los mensajes. Aquí, antes
que nada, voy a guardar todos los mensajes.

De todos los contactos en una lista de matriz. Así que
digamos una lista de matriz de diferentes mensajes. Vamos a nombrarlo todos los mensajes es igual a
nueva ArrayList. Después de eso, voy a crear a para cada bucle. Para contacto, vea dentro de mis
contactos o en esto. Veamos todos los mensajes eso en absoluto, no hemos usado este método
de agregar todo, pero aquí, lo haremos. Voy a decir C punto recibir mensajes. Entonces, al usar
este método de agregar todos, estamos agregando todos de los mensajes de un contacto a todos nuestros mensajes
ArrayList. Después del ciclo for, estoy Voy a comprobar si el tamaño de todos estos mensajes
es cero o no. Así que digamos si todo mensajes cuyo tamaño es mayor que cero, voy
a mostrar los detalles de cada mensaje. Entonces, para eso, voy a crear otro para cada
ciclo aquí.

Digamos por mensaje, llamémoslo al revés en todos los mensajes, al menos.
vamos a imprimir m punto obtener detalles. Y después de eso, imprimamos también algún separador.
Pero en el caso contrario, voy a decir que no tienes ningún mensaje. Después de todo después
de la instrucción if, voy a mostrar las opciones iniciales. Bien, eso es todo por este método
de mostrar todos los mensajes. también vamos a crear el otro método, que es enviar un nuevo mensaje.
Aquí, en primer lugar, voy a conseguir el contacto o nombre de los destinatarios. Así que preguntemos
al usuario que, digamos ¿A quién vas a enviar un mensaje. Después de eso, necesitamos obtener
el nombre de nuestro contacto. Entonces puedo decir cuerda el nombre es igual al siguiente punto del escáner. Después de
eso, debemos verificar que si este nombre está vacío o no por eso, puedo decir si el nombre es igual a una
cadena vacía.

Vamos a preguntar al usuario para ingresar un nombre. Entonces, digamos que ingrese
el nombre del contacto. Después de eso estamos va a tener una llamada recursiva. Así que aquí,
voy a decir enviar un nuevo mensaje. Pero en En el caso contrario, voy a verificar si tenemos un
contacto de este tipo en nuestra ArrayList de contactos. Para eso voy a definir un Boolean aquí
Boolean si existe, es igual a false. Después de eso, voy a crear un para cada ciclo.
Digamos que para contacto ver dentro de nuestro contactos o al menos si vemos que recibe el nombre, el
punto es igual al nombre que acabamos de recibir. Digamos que existe es igual a verdadero. Después
del bucle for, voy a comprobar que si existe es igual a verdadero o no. En primer
lugar, escribamos el caso else. En el caso contrario, voy a decir que no hay tal contacto.
Pero dentro del bloque if, si lo hacemos tener tal contacto, vamos a pedir el mensaje
en sí.

Así que digamos cuáles son vas a decir? Digamos que un texto de cadena es igual
a un punto de escáner a continuación. Después, debemos asegurarnos de que este texto esté vacío
o no. Digamos que si el texto es igual a un vacío cuerda. Si ese es el caso, digamos que ingrese
algún mensaje. Y después de eso, vamos a empezar desde el principio
de este método. entonces digamos envíame un mensaje, que una vez más es una llamada
recursiva. Pero en el caso else, vamos a crear nuestro objeto de mensaje. Y después
de eso, lo vamos a agregar al contacto que existe en nuestros contactos ArrayList. Pero si recuerdas,
dentro de nuestra clase de mensaje, teníamos un campo llamado ID.

Básicamente, cada vez que
recibe estos mensajes de una base de datos, o tal vez un servidor web, esta identificación es única
para cada mensaje. Aquí, estoy tratando de ser como lo más cerca que puedo, y a una aplicación del mundo real. Así que
voy a hacer que esta identificación sea única. En orden para tener una identificación única para cada mensaje,
voy a definir un campo arriba aquí dentro mi clase principal de la que estoy hablando aquí.
Y después de eso, incrementaremos el número de este ID por uno cada vez que creamos un nuevo
mensaje. Por eso voy a decir privado, entero estático. Vamos a nombrar este ID de teléfono.
Y también vamos a inicializarlo a cero. Después que aquí abajo, cuando creamos nuestro objeto de mensaje
dentro de este otro caso, aquí abajo, Puedo decir identificación más más. Entonces, debido a que esta
ID es un número entero estático, cada vez que incrementamos su valor, va a ser único para cada mensaje.

Así
que ahora mismo tenemos el nombre de nuestro destinatario, que hemos recibido arriba aquí.
Y también tenemos el cuerpo del mensaje, que es este texto. Y también hemos generado esta identificación
que es única. Estos son los tres cosas que necesitamos para crear nuestro objeto
de mensaje, puedo decir mensaje, vamos a nombrar Si el mensaje nuevo es igual al mensaje nuevo, necesitamos
el texto. Después de eso necesitamos el destinatario, cual es el nombre Y después de eso, necesitamos la identificación.
A continuación, necesito encontrar el contacto adecuado. para agregar este mensaje a su lista de matriz
de diferentes mensajes. para eso voy para crear un bucle for. Digamos que para el contacto vea
dentro de nuestra lista de matriz de contactos. Vamos diga si ve que obtener el nombre es igual al nombre
que recibimos. Si ese es el caso, primero de todos, necesitamos obtener la lista de matriz de diferentes
mensajes de este contacto.

Por eso puedo decir lista de matriz de mensajes. Llamemos a este ArrayList nuevos
mensajes es igual a c punto obtener mensajes. Después de eso, necesitamos agregar este nuevo mensaje
a este nuevo ArrayList de mensajes, así que digamos mensajes nuevos que agregan mensaje nuevo Lo siento, he
usado este agregar todos los métodos fueron a eliminar todo esto. Después de eso, vamos a guardar
el contacto actual que estamos investigando. porque más adelante vamos a eliminar este contacto
de nuestra lista de matriz de contactos. Y vamos a actualizar su lista de matriz de
mensajes. Y después de eso, vamos para agregarlo una vez más a nuestros contactos ArrayList. Así
que para eso puedo decir contacto. vamos a nombrar su contacto actual es igual a ver.

A continuación, debemos decir
los mensajes de conjunto de puntos de contacto actuales. Y tenemos que pasar nuestros nuevos mensajes se liberan.
Después de eso, es hora de quitar la C de nuestros contactos o al menos podemos decir contactos
que eliminar y podemos pasar el objeto C. Ahora que hemos eliminado el contacto anterior, podemos
agregar el nuevo diciendo contactos punto agregar. Digamos contacto actual. Así que
hemos añadido este nuevo mensaje a nuestro contacto específico y hemos actualizado nuestros contactos
ArrayList Bien, esa es toda la lógica que necesitamos para agregar un nuevo mensaje justo
después de que hayamos terminado con esto método.

Necesitamos mostrar las opciones iniciales
una vez más. Minimicemos este método. Y a ver que mas tenemos? Creo que hemos
cubierto todo. y estamos listos para probar nuestra aplicación. Así que vamos a ejecutar
la aplicación. Aquí estamos viendo el mensaje de saludo, que
está bien. Después de eso estamos viendo el lista inicial de opciones. Si seleccionamos uno,
podemos ver las opciones para gestionar diferentes contactos. En este momento no tenemos ningún contacto en nuestro
ArrayList. Así que si seleccionamos uno, usted puede ver que no estamos viendo nada, es mejor
imprimir algún mensaje aquí en caso si no tenemos ningún contacto en nuestro teléfono,
por ejemplo, que diga, no tienes ningún contacto en su dispositivo, pero lo escribiremos
más adelante. Por ahora solo veamos el otras opciones. Una vez más, seleccionemos Administrar
contacto. Esta vez, intentemos agregar una nueva contact, puede ver que la consola está esperando
un nombre, digamos may Sam, la consola está esperando un número. Agreguemos algún número. Después de
eso, necesitamos proporcionar algún correo electrónico, digamos mayo sam@gmail.com. Y como puede ver,
Mason agregó con éxito.

Si tu quieres para asegurarse de eso, una vez más, puede consultar
la lista de todos sus contactos haciendo clic en diciendo mostrar todos los contactos. Y aquí puedes
ver los detalles de Mason. agreguemos tambien otro contacto. Digamos Sarah, esta cosa. Sumemos un número
aleatorio. Después de eso, un correo electrónico. Esta vez intentemos buscar un nuevo contacto. Así
que aquí, si digo tres, puedes ver que la consola está esperando el nombre de nuestro
contacto.

Escribamos Brad aquí, puedes vea que estamos viendo este mensaje, no hay
tal contacto en su teléfono. Una vez más, intentemos buscar contacto esta vez. Probemos
Sara. Puedes ver que estamos viendo los detalles sobre Sarah. Intentemos también eliminar
uno de los contactos. digamos por orden para eliminar un contacto, digamos yo Sam. Aquí
no estamos viendo ningún mensaje que indique si hemos eliminado a Maxim con éxito o no.
Pero si revisamos la lista de nuestros contactos, deberíamos ver sólo a Sarah.

Y como puede ver, solo
tenemos a Sarah en nuestra lista de contactos. Vamos también intente esto volver también. Así que digamos
administrar contactos una vez más. Esta vez si yo pon cualquier número al lado del uno al cuatro,
por ejemplo, si digo seis, puedes ver que están volviendo al menú principal. Además, intentemos
agregar un nuevo contacto con valores vacíos. Lo siento, necesito regresar y seleccionar uno.
Digamos que para agregar un nuevo contacto. No proporcionemos nada para el nombre.

Puede
ver que el escáner está esperando alguna entrada. Pero incluso si el escáner se mueve a
la siguiente línea, tenemos que escribir la lógica para evitar agregar un contacto vacío. Vale eso
está bien. Agreguemos muchas muestras otra vez. Agreguemos algún número. Y algunos te
refieres. Veamos qué tenemos dentro de los mensajes. opción. Para ver una lista de todos los mensajes.
Presionemos uno, puedes ver esto mensaje usted no tiene ningún mensaje. Una vez más,
vamos a la opción de mensajes. he entrado dos aquí e intentemos enviar un nuevo mensaje. ¿A
quién le vas a enviar un mensaje? Vamos di Sara, ¿qué vas a decir? Vamos a decir
hola. Parece que estamos recibiendo un bloqueo y el bloqueo ocurrió debido a esta excepción.
Excepción de modificación concurrente.

Bien, echemos un vistazo más profundo a nuestro código.
Y vamos a depurar nuestra aplicación por primera vez. tiempo. Parece que la excepción ocurrió cuando intentamos
agregar el nuevo mensaje. También, puede ver la línea 99 aquí, si hace clic
en eso, se le dirigirá a esa línea. Sí, tenemos esta excepción dentro de agregar nuevo
mensaje o enviar un nuevo mensaje dentro de este en bucle. Creo que el error aquí está sucediendo porque,
en primer lugar, estamos usando esta C para asignar un nuevo valor a este contacto actual. E inmediatamente
después de eso estamos tratando de eliminar este contacto de nuestra ArrayList de contactos. Entonces
esto causa la modificación concurrente. excepción. Si desea superar esa excepción, puede
simplificar esta instrucción if. Por ejemplo aquí voy a borrar estas tres líneas de código.
Entonces, en este punto, tenemos esto se publican nuevos mensajes. Hemos agregado nuestro
nuevo mensaje a este ArrayList y después de eso, para actualizar la lista de matrices dentro de este contacto,
puedo decir ver mensajes de conjunto de puntos.

Y Puedo pasar mis nuevos mensajes ArrayList. Por lo tanto,
no es necesario eliminar y agregar un nuevo contacto en nuestra ArrayList. al mismo tiempo Ejecutemos
la aplicación una vez más. y veamos si estamos viendo la excepción una vez más. En primer
lugar, necesitamos agregar un contacto. Asi que digamos administrar contacto, agregar un nuevo contacto. Proporcionemos
un nombre y un número después de eso algún correo electrónico. Y ahora podemos enviar un nuevo mensaje,
digamos mensajes. Enviar un nuevo mensaje. Quién vas a enviar un mensaje? digamos mesa
que vas a decir despues de esto línea de código, obtuvimos la excepción. Vamos
a decir hola. Y esta vez, parece que nosotros hemos añadido o hemos enviado un nuevo mensaje.
Si quieres asegurarte de eso, puedes ve a la opción de mensajes. Y puede mostrar
la lista de todos sus mensajes, puede vea que tenemos un mensaje en el que lo hemos enviado
a Mesa.

Está bien, eso parece mejor. Una vez más, vayamos a esta opción de mensajes.
E intentemos volver al menú principal. Entonces, si escribo tres o cualquier otro número además
de este uno y dos, deberíamos volver al menú principal. Por ejemplo, digamos para y
como puede ver, estamos viendo la inicial opciones Por último, intentemos crear nuestra
aplicación. Y como puedes ver, tenemos creó la aplicación con éxito, solo corrijamos
los pocos errores que tuvimos. En el Mostrar todos los métodos de contactos. Si recuerdas
dije que vamos a mostrar algún mensaje en caso de que no tengamos ningún contacto en nuestro ArrayList.
Así que para eso, en primer lugar, estoy Voy a comprobar que si tenemos algún contacto.
Para eso voy a decir si contacta eso el tamaño es mayor que cero.

En primer lugar, escribamos
el caso else. En el caso contrario, estoy solo va a imprimir no tienes ningun contacto. Pero
en la vista de bloque si vamos a hacer el lo mismo que estábamos haciendo anteriormente.
Ejecutemos la aplicación una vez más en para ver si estos cambios son efectivos
o no. Entonces, en este momento, no tenemos ningún contacto en
nuestra lista de contactos. Además, te estarás preguntando por qué estamos perdiendo los contactos que seguimos
agregando a nuestra aplicación. Eso es porque no estamos usando ningún almacenamiento de datos permanente
como una base de datos, estamos usando una matriz estática list y que ArrayList se borrará cuando cerremos
nuestra aplicación. Por esta razón todos los contactos se eliminan cada vez que detenemos
la aplicación. Así que digamos administrar contactos. Y digamos mostrar todos los contactos,
puede ver el mensaje aquí, no tener algún contacto. Pero es mejor mostrar la lista
de opciones iniciales una vez más después imprimimos esta línea de código.

Así que aquí abajo después
de esta declaración impresa, digamos mostrar opciones iniciales. Bien, este fue el último video
de esta sección. Y esta fue mi solucion para este reto. Su solución es probablemente diferente
a la mía. Y eso está bien, porque hay varias formas de crear la misma aplicación.
Espero que hayas practicado y aprendido todo lo que hemos hablado en
esta sección. En la siguiente sección por supuesto, vamos a volver a Android
Studio y vamos a hablar sobre la interfaz de usuario y cómo podemos diseñar
un hermoso diseño para nuestra aplicación. Ver usted en la siguiente sección. Que tal a todos, espero
que se diviertan. Antes que empecemos nuestra charla sobre la interfaz de usuario, solo
quería recordarles que hay una versión extendida de las partituras que puedes ver. al inscribirte
en el curso extendido tendrás de por vida accede a más de 60 horas de videos, puedes
hacer tus preguntas directamente conmigo y Te responderé en unas horas, tendrás
acceso a todos los códigos fuente.

Que escribo en los videos. Y también puedes tener
acceso a todos los nuevos videos que yo subo Simplemente visite miko.org para obtener
más detalles sobre el curso. y no olvides para usar Free Code Camp como código de cupón para obtener
un 20 % de descuento. Si quieres ponerte serio en el desarrollo de aplicaciones Android. Tomar el curso
extendido es casi una necesidad. Bien, todos, Solo quería recordarte que hay una versión
extendida de este curso que puede tomar sin más preámbulos, comencemos nuestra conversación
sobre la interfaz de usuario. Diviértete aprendiendo. Hola a todos y bienvenidos de nuevo. Esta es la sección
de interfaz de usuario de nuestro curso y vamos a hablar de muchos conceptos y herramientas
que tenemos relacionados con la interfaz de usuario.

Vamos a hablar sobre muchos elementos de la interfaz
de usuario y son atributos. Vamos a hablar sobre diferentes tipos de detectores de eventos,
por ejemplo, detectores de clics en diferentes elementos de la interfaz de usuario. Hablaremos sobre cómo
podemos crear aplicaciones que sean compatibles con diferentes tamaños de pantalla, y también diferentes
idiomas. Además de eso, también hablaremos. sobre diseño de materiales y todo tipo de cosas
en esta sección del curso. Sin ir más allá ado, saltemos a nuestro proyecto. Y vamos a implementar algunos
elementos de la interfaz de usuario. Como puedes ver, Ya no uso IntelliJ ID y cambié a Android
Studio. Necesitábamos IntelliJ ID para la sección de Java del curso. Pero
aquí, podemos volver a Android Studio, en caso de que olvide cómo crear un nuevo
proyecto en Android Studio, voy a empezar desde el principio. Comencemos un nuevo proyecto
de Android Studio. Aquí, necesitábamos seleccionar una plantilla. Si recuerdas, te dije que estas plantillas
son algunas aplicaciones para volver a algún nivel. Más adelante en el curso, específicamente, después
de que hablemos sobre las actividades, vamos a vea cómo podemos crear todo esto desde cero,
pero por ahora, seleccionemos esto actividad vacía.

Después de eso aquí, necesitábamos
nombrar nuestro proyecto. Por ejemplo, para esto aplicación, voy a decir conceptos básicos de la interfaz de
usuario. Me voy a quedar con este nombre de paquete, creo está bien. Necesitábamos una ubicación para guardar. Una
vez más, el valor predeterminado está bien. Por el idioma, Voy a decir Java para el nivel mínimo de
API. Como dije en videos anteriores, en el la mayoría de los videos de este curso, los guardaré
con el nivel de API 19. Después de seleccionar todos de estos, vamos a crear nuestro proyecto haciendo
clic en este botón Finalizar aquí. Parece que nuestro proyecto se ha creado
con éxito. Ahora que conocemos Java, echemos otro vistazo a esta clase que hemos
creado aquí. Pero antes de eso, minimicemos este panel de Ron.

Como puede ver, esta es una clase de Java en nuestro
paquete, puede ver que es una clase llamada actividad principal. Esta clase está extendiendo la actividad
de compatibilidad de aplicaciones, sea lo que sea. En el interior esta clase, tenemos este método onCreate que
anula, puede adivinarlo probablemente porque de esta actividad de compatibilidad de aplicaciones. Y también arriba
aquí tenemos algunas importaciones. Ahora mismo nosotros están importando esta actividad de compatibilidad de aplicaciones
y también este vínculo.

No te preocupes por esto, nosotros hablará de ellos más adelante en el curso. Pero
por ahora puedes ver la sintaxis general de una clase Java simple aquí también. Si
recuerdas que dije que cuando creas un actividad, se creará una clase Java y también un
archivo XML. La parte de Java es responsable de el comportamiento de su aplicación. Por ejemplo, en
su archivo de diseño, puede recibir el usuario entrada en el archivo Java, puede decidir qué
hacer con la entrada del usuario. Ojalá, Ahora que conocemos Java, podemos entender todo
esto mucho mejor. Este método onCreate es parte de algo llamado el ciclo de vida de
la actividad.

Hablaremos de eso en el futuro. vídeos Pero por ahora, solo sepa que este método onCreate
es de alguna manera como el método principal dentro una sencilla aplicación Java. Este es el punto de
partida de cada actividad. Y ahora mismo, porque nuestra aplicación tiene solo una actividad, este
es el punto de inicio de toda nuestra aplicación. Así que esta línea 13 aquí sería el punto de inicio
de nuestro código. Puedes ver este súper declaración aquí. Una vez más, significa que
haga lo que esté haciendo dentro del padre clase.

En este caso, la clase principal es esta actividad de
compatibilidad de aplicaciones. por el momento nosotros no se preocupan por eso. Pero como puede ver, estamos
pasando este estado de guardar instancia que es un enlace a la declaración super. Más
adelante, hablaremos de eso. Además, es importante tener en cuenta que dentro de las actividades,
tienes algunos métodos internos, no teníamos esta opción en Java. Por ejemplo, puede ver este
método de vista de contenido establecido, no vea la declaración de este método en cualquier lugar
dentro de esta clase. Pero puedes ver eso por usándolo, no recibe ninguna advertencia roja. Similar
a este setcontentview. Si usted tiene muchos otros métodos internos dentro de una actividad,
hablaremos de ellos más adelante en el curso. Bien, pasemos de esta parte. Y comencemos a trabajar
en nuestra interfaz de usuario. Yo solo quería echar otro vistazo a Nuestra aplicación y específicamente
a este archivo jar.

Ahora que nosotros saber sobre Java, bien, cerremos este archivo
java. Y comencemos hablando de esta actividad. archivo XML de punto principal. Si recuerdan en
los primeros videos de este curso, dije que XML es un lenguaje de marcas. Una vez más, si eres
desarrollador web, conoces el concepto de marcado idiomas Esos solo son útiles para definir
algunos elementos que se mostrarán a el usuario. Antes de todo. Hagamos un script para ubicar
este archivo en nuestro proyecto. En este momento estamos dentro de la vista de Android. Y si desea encontrar
el archivo XML del punto principal de esta actividad, puede venir a esta carpeta de Recursos. aquí
dentro de la carpeta de diseño, puede ver el archivo.

Y si cambia a la vista de proyectos,
puede ir a la carpeta de su aplicación, dentro de la carpeta de la aplicación. Dentro de la carpeta
de origen, tiene esta carpeta principal. y aqui tu tener la carpeta Recursos. Una vez más, dentro del archivo
de diseño, tiene esta actividad principal archivo XML de puntos. Bien, volvamos a la vista de Android.
Y minimicemos este panel de proyecto por ahora, si recuerdan de los videos anteriores
de este curso, dije que siempre que desea definir un archivo de diseño, tiene dos
opciones. En primer lugar, puede utilizar este vista de diseño, por ejemplo, arrastrando algunos
elementos a su vista de diseño. Puede tener diferentes elementos y más adelante,
puede definir algunos atributos para su elementos. Esta es una forma, pero la otra es cambiar
a la vista de texto y escribir manualmente todo lo que necesitas En mi opinión, cuando eres un
desarrollador de Android, la mayoría de los veces que va a trabajar con TextView.

Así
que aquí, vamos a empezar desde este Vista de texto. En primer lugar, si no ve esta
vista previa aquí, siempre puede habilitar y desactívelo desde esta opción de vista previa
aquí. Si tiene poca memoria RAM, mi sugerencia es deshabilitar esta revisión, porque
va a representar el archivo de diseño en real tiempo. Y eso va a cargar muchas presiones en la memoria
RAM y también en la CPU de su dispositivo. Por eso, si tiene poca memoria RAM, deshabilite
esta vista previa, acelerará todo. En este momento, dentro de este archivo de diseño
simple, tenemos este TextView, puede ver que cuando Hago clic en este TextView, este TextView dentro de nuestro
archivo XML se ha resaltado, lo que significa que estos son los mismos. Voy a eliminar esta vista
de texto por ahora. Seleccionemos todos eso. Y presionemos Eliminar. Lo siguiente
que voy a hacer es que voy a cambiar este diseño de restricción.

En futuros videos,
hablaremos sobre el diseño de restricciones es. Pero por ahora, para empezar, creo que es mejor
comenzar con un diseño relativo. Vamos seleccione eso. Además, si te has dado cuenta,
puedes ver que cuando hemos cambiado la apertura etiqueta aquí al diseño relativo, la etiqueta de
cierre se ha cambiado al diseño relativo como bien. Dentro de estas etiquetas de apertura y cierre, puedo tener
diferentes elementos de la interfaz de usuario. Por ejemplo, si quiero definir un TextView, puedo abrir un
corchete de anclaje y escribir TextView. En T mayúscula, tenemos una lista de opciones. Seleccionemos
el primero TextView. Inmediatamente después de presionar Enter, obtenemos algunos atributos.
Entonces, para cada elemento de la interfaz de usuario, necesita al menos dos atributos un ancho y también
una altura.

Los valores de estos dos atributos pueden ser algunos números. Pero alternativamente,
puede ver que tenemos otras opciones aquí. también. Hablaremos sobre este padre de coincidencia y envolveremos
el contenido en un minuto. Pero por ahora, solo seleccionemos contenido de ajuste. Básicamente,
va a envolver el contenido de este texto vista para la altura. Seleccionemos también el contenido
de ajuste. Si quieres puedes terminar de crear su vista de texto agregando una barra aquí. Y
eso si puedes tener una vista de texto. Pero si quieres tener más atributos, tienes muchas
opciones. Por ejemplo, antes de esto barra voy a decir digamos texto, puedes ver
que estamos recibiendo una sugerencia y recuerda ese texto vamos a seleccionar eso. Y aquí
dentro puedo pasar un texto por ejemplo, vamos decir hola mundo. Tan pronto como escribo esto, también puedes ver ese texto
en la vista previa. Así que el texto es uno de los atributos de esta vista de texto. Hablemos de
los otros atributos encontrados por Vaughn.

Por ejemplo, ahora mismo este texto está en la esquina
de mi pantalla. No me gusta esto, estoy va a cambiar la posición de este TextView a
la mitad de esta línea. para eso tengo múltiples opciones En primer lugar, puedo agregar un
margen en el que se agregará un espacio entre este TextView en el borde de la pantalla. Por ejemplo, puedo
decir margen y puedo pasar 50 por ejemplo 50 dP dp es la unidad cuando trabaja con sus archivos
de diseño, podemos ver que tenemos algún margen, pero podemos ser más específicos, por ejemplo,
podemos decir margen superior margen izquierdo margen derecho y también margen inferior. Por ejemplo, puedo
decir margen izquierdo, digamos 100 Db esto tiempo, los márgenes son extremadamente útiles
pero aquí no nos van a ayudar porque esto no es exacto, queremos que nuestro TextView esté
exactamente en el centro de nuestra línea.

Para que, en lugar de usar un margen, tengo una mejor
opción, puedo decir, centro horizontal para centrar mi vista de texto horizontalmente.
Como puedes ver, puedo pasar o falso aquí, pasemos. Y esta vez, TextView
se ha centrado horizontalmente. Si lo desea, también puede centrarlo verticalmente
diciendo centro vertical y pasando un valor de verdad, se puede ver que se ha centrado tanto en
horizontal como en vertical. Además de estos dos, también tienes otra opción. Por ejemplo,
en este caso, voy a eliminar ambos estos atributos. En su lugar, voy a decir centro
en padre, este de aquí abajo. Vamos pasar como el valor de este atributo. Este
padre central va a centrar nuestra elementos dentro de su elemento padre.

Un archivo XML
es como un árbol, tenemos estos elementos secundarios. Y encima de ellos, tenemos los elementos padres.
Por ejemplo, en este caso, el elemento padre es un diseño relativo. Si queremos, podemos tener
otro diseño relativo aquí o tal vez algunos otros elementos de la interfaz de usuario. Y dentro de ese elemento,
podemos tener este TextView podemos hacer esto tipo de herencia tantas veces como queramos. Entonces,
en este caso, TextView es nuestro hijo elemento. Y este diseño relativo es nuestro elemento
principal. Y cuando usamos este implante central atributo, va a centrar nuestro TextView en su elemento
principal. Bien, sigamos adelante de esta parte Si quieres, también puedes
aumentar el tamaño de tu texto para que puede decir el tamaño del texto, este atributo aquí,
y puede pasar un número, por ejemplo, usted puede decir 20 SB.

Cuando trabaja con el tamaño
de sus fuentes, la unidad es SP, podemos ver que es más grande ahora. Además, si lo desea,
también puede tener algunos estilos en este texto. Para eso podemos decir estilo de texto. Este atributo
puede ver tres estilos en negrita, cursiva y normal. Por ejemplo, pongamos negrita rápida. Si desea
que su atributo sea tanto en negrita como en cursiva, puede agregar una canalización aquí. Y después
de eso puedes ver cursiva. Esta vez puedes ver ambos atributos en el mismo elemento. Si quieres,
también puedes cambiar el color. de su texto para eso podemos decir color de texto.
Y podemos pasar un color lo que ese color debería definirse dentro de otro archivo XML llamado
color.

Ahora mismo tenemos tres colores, este color, acento, color, primario y color primario oscuro.
Básicamente, estos son los nombres de algunos esquinas Seleccionemos el primero. Y como
puede ver, el color se ha cambiado con éxito. Pero, ¿dónde se ubica este archivo XML de puntos de color
en nuestro proyecto? Bueno, si quieres tomar eche un vistazo a eso, puede abrir el panel del proyecto.
Dentro de la carpeta Recursos, dentro de los valores carpeta, tenemos este XML de puntos de colores, puede
ver que tenemos algunos colores aquí con el nombre exacto que acabamos de ver. No te preocupes
por esto, vamos a hablar de diferentes tipos de archivos XML en futuros videos. Pero por
ahora, solo quería que vieras este archivo XML.

Entonces, en lugar de pasar un color desde el interior del
archivo XML de puntos de color, también puede pasar el valor hexadecimal de ese color. Para
eso puedes buscar algo en internet como selector de color HTML. Busquemos eso. Por ejemplo. Seleccionemos
el color verde aquí. Este tal vez, y aquí, puedes ver el valor hexadecimal. Copiemos
eso. Y en lugar de enfrentar un color desde dentro de nuestro archivo XML de puntos de color,
voy a pegar el valor de ese color, puede vea que el color de TextView se ha cambiado
al color que acabamos de seleccionar. Si recuerdas los videos anteriores de este
curso, hemos visto que cuando queríamos para tener acceso a todos estos elementos de la interfaz de usuario dentro
de nuestro archivo Java, necesitábamos una identificación. Vamos agregue un atributo ID para este TextView también,
digamos ID, la convención es decir agregar más barra diagonal de identificación. Seleccionemos eso. Y
vamos a definir alguna ID. Digamos txt de bienvenida. los El atributo ID debe ser único dentro de cada archivo
XML. Significa que dos elementos diferentes dentro del mismo archivo XML no puede tener el mismo ID.
Más adelante usaremos este ID en nuestro Java archivo para tener acceso a este TextView hay muchos más
atributos para enviarnos un mensaje de texto pero creo que si continuamos nos enteraremos
de eso.

Voy a pasar de esta vista de texto. Y voy a definir un botón después
de este TextView. Por eso, una vez más, Puedo abrir un soporte de anclaje. Y aquí puedo
decir botón. Con esta B mayúscula, vamos seleccione la primera opción. Una vez más, tenemos
estos dos atributos obligatorios. Y aquí, hablemos de la diferencia entre este contenido envolvente
y la banda de coincidencia. Ahora mismo, si Selecciono emparejar padre, seleccionemos también emparejar
padre para esta altura, puede ver que esto El botón está cubriendo toda esta pantalla. Y eso
es porque hemos establecido el ancho y la altura. para que coincida con el padre. Si lo desea, puede cambiar
esta altura, por ejemplo, para ajustar el contenido. Y aquí puede ver la diferencia: el ancho coincide
con el padre pero la altura se envuelve el contenido de los botones. También cambiemos el ancho para
ajustar el contenido. Además de envoltura deseada y coincide con el padre, siempre puede pasar los
valores manualmente, por ejemplo, puedo decir 150 DPI, puede ver que el ancho ha cambiado.

Pero esto
es muy desaconsejable porque nuestro La aplicación se va a instalar en dispositivos con
diferentes tamaños de pantalla. A veces si ponemos algunos números para estos, si pasamos los
valores manualmente, es posible que no sepamos el exacto posición de cada elemento. Y también a veces nuestros
elementos pueden no caber en la pantalla en algunos dispositivos. Entonces, para el caso, voy a cambiar
esta fuente para envolver el contenido aquí. Además, ahora que he hablado sobre diferentes
tamaños de pantalla, voy a decir que aquí dentro de esta vista previa, tiene esta opción llamada
dispositivos para vista previa.

Si hace clic en eso, puedes ver un menú desplegable. Y desde aquí, puede
seleccionar diferentes tamaños de pantalla. Para ejemplo, seleccionemos esta fuente, y puede verificar
el aspecto de su aplicación en diferentes tamaños de pantalla Por ejemplo, tomemos una tableta,
pueden ver que es algo diferente. No Preocúpate por esto. Más adelante en el
curso vamos a cubrir cómo podemos tener un busca nuestra aplicación en diferentes tamaños de
pantalla. Solo quería mencionar estas opciones. arriba aquí. Al igual que para la vista de texto, también
tenemos una opción de texto para el botón. digamos texto. Y digamos Saluda. De igual forma, tenemos
la opción de agregar algunos márgenes. Pero No voy a hacer eso ahora. En su lugar, voy
a mover este botón debajo de este Vista de texto. Para eso, tenemos un atributo llamado debajo
de este aquí, diseños a continuación.

Y nosotros necesita pasar la ID del otro elemento. Por
ejemplo, en este caso, tenemos que pasar la ID de este TextView que puedo decir en barra oblicua
de ID más. Y puedo decir txt bienvenido, puedes vea que el botón se ha movido debajo de este
TextView. Pero esto no es del todo sino queremos, también necesitamos centrarlo horizontalmente.
O que una vez más, podemos ver el centro horizontal y podemos pasar. Agreguemos también un margen
superior. Digamos margen superior. Y pasemos por ejemplo
15 dP, eso es mucho mejor. Para estos dos textos aquí y botón tiene otro atributo llamado
fondo. Veamos también que tú puede decir antecedentes. Y por ejemplo, podemos
pasar un color, pasemos el primer color, puede ver que el color de fondo de este botón
ha cambiado de alguna manera, tiene la misma opción para TextView. Si quieres puedes
aplicar eso. creo que esto es feo color.

Así que voy a cambiar eso. Veamos
los otros colores. Seleccionemos este primario oscuro. No, este no es mi color. Bien, esto es
mejor, siempre puedes agregar el hexadecimal valor del color que desea aquí también. Para diferentes
elementos de la interfaz de usuario, también tenemos otro atributo llamado clic hemos visto el uso
de este atleta. Cuando nosotros tenemos creamos nuestra primera aplicación para Android,
puedes adivinarlo, vamos a establecer un evento oyente de este botón y vamos a ver qué
sucede cuando hacemos clic en este botón. Así que digamos al hacer clic y pasemos el
nombre de algún método. Por ejemplo, estoy va a ver en Hola btn hizo clic. En este momento puede
ver que estamos recibiendo esta advertencia roja y eso es porque necesitamos crear este método
dentro de nuestro archivo Java.

Terminemos creando nuestro botón usando esta barra. Y creemos
este método dentro de nuestra actividad principal. archivo punto java. Así que vamos a abrir ese archivo.
Para abrir algunos archivos, siempre puedo cambiar a esta cosa del proyecto. O, alternativamente, puedo
presionar la tecla Shift dos veces. Puedes mira que cuando hago eso tengo un menú de búsqueda.
Por ejemplo, aquí, puedo buscar principal actividad. Y si presiono Enter en la primera opción, podemos
abrir nuestro punto de actividad principal archivo java. Este es solo un atajo útil que
podemos usar de vez en cuando. Bien, nosotros necesita crear el método onClick dentro del alcance
de nuestra clase y fuera del alcance de este método onCreate. Si recuerdas
la firma de ese método, era algo así, necesitábamos establecer el modificador de acceso en
público, el tipo de devolución era nulo, el nombre del método va a ser exactamente el nombre que hemos
pasado en nuestro archivo XML, vamos decir en Hola btn hizo clic.

Para las entradas de
este método, si recuerdas, teníamos una vista objeto con V mayúscula. Este objeto de vista no es
importante en este momento, solo necesitamos saber que necesitamos recibirlo como entrada de este
método. Veamos rápidamente como el nombre de esta entrada. Y aquí, podemos tener la lógica para
manejar el detector de clics en nuestro botón. Además, si lo ha notado, cuando agregué esta
vista, y su importación se agregó arriba aquí, minimicemos también estas importaciones por
ahora. Esta es una forma de crear un evento.

Oyentes para botones. Y también para el caso de diferentes
elementos de la interfaz de usuario. Tenemos otras opciones en el que puede ser más útil de vez en cuando. Les
echaremos un vistazo en un minuto. Pero aquí, escribamos rápidamente algo de lógica.
Por ejemplo, aquí, voy a cambiar el texto de mi vista de texto. Para eso, antes que nada,
necesito tener acceso a mi vista de texto. puedo decir vista de texto, si echa un vistazo a
sus entradas, verá que este TextView de el paquete de widgets se ha agregado a nuestra clase.
Si recuerdas, dije eso equivalente a cada elemento de la interfaz de usuario. Tienes una clase en Java.
Bien, vamos a nombrar este TextView. txt de bienvenida. Y vamos a inicializarlo, podemos inicializarlo
así, podemos decir buscar vista por Id como este método de vista de contenido establecido, esta vista de búsqueda
por ID también es otro método interno dentro cada actividad En este momento, esta vista de búsqueda por
método de ID está esperando algún número entero, y el entero va a ser el ID de nuestros elementos.

Y así es como
podemos pasar nuestra identificación, por ejemplo, podemos decir our.id. Una vez más, si recuerdan,
dije que aquí están los recursos. Es una clase especial en Java, y nos dará
acceso a todos los contenidos estáticos. en nuestro proyecto. Así que aquí, puedo decir nuestro
punto .id, pasemos el ID de nuestro texto aquí, que era txt. Bienvenido, creo que ahora que tenemos acceso
a este txt, bienvenido. podemos hacer algo operación en eso. Por ejemplo, puedo decir txt.
Bienvenidos. Eso es todo. TXT. Hemos visto este método previamente. Y dentro de este método,
puedo pasar un texto. Saludemos de nuevo. Ejecutemos la aplicación. Y veamos si podemos
cambiar el texto de este TextView. estoy va a ejecutar la aplicación en el píxel tres API
nivel 29, puede seleccionar cualquier dispositivo eso que quieres. Bien, ahora podemos ver el
diseño que hemos creado hasta ahora, que Honestamente, es extraño, pero no se preocupe,
vamos a trabajar en nuestro poder de diseño.

Si hago clic en este botón, puede esperar
lo que sucederá, vamos a cambiar el texto de hola a hola de nuevo. Está bien, no
había nada especial. En este video, solo Quería que echaras otro vistazo a lo que hemos
hecho en la primera sección de este curso. que fue crear tu primera aplicación para Android,
solo quería que entendieras mejor sobre lo que has hecho en ese video. Además, hemos
aprendido acerca de algunos otros atributos. aquí también. Bien, en el próximo video, vamos
a continuar nuestra charla sobre diferentes elementos de la interfaz de usuario. Por ejemplo, hablaremos
de editar textos. Y también hablaremos de diferentes formas en que podemos implementar un onclicklistener para
nuestro botón. bueno nos vemos en la proxima video. En el video anterior, hemos visto una
forma de crear un onclicklistener para nuestro botón. Hay dos formas más y
aquí las vamos a ver.

Por ejemplo, en nuestro archivo de diseño, vamos a crear rápidamente
un botón. Pero antes de eso, voy a cambiar este diseño de restricción a un diseño relativo.
Borremos este texto y creemos un botón. Eso es un contenido envolvente y un contenido envolvente
para los bits de Android. Vamos a darle un texto. Por ejemplo, digamos Di hola una vez más.
Digamos centro y padre. y vamos a pasar a través, hemos visto estos en el video anterior,
por lo que no voy a discutirlos. También, si vas a necesitar una identificación, digamos btn.
Hola, puedes pasar lo que quieras. Asi que en el video anterior, cuando queríamos crear un onclicklistener,
tendríamos que agregar esto atributo onClick. Aquí, necesitamos pasar el nombre
del método equivalente dentro de nuestro archivo Java. Pero en este caso, voy
a usar otro enfoque. y por eso me voy para eliminar este atributo. Bien, volvamos
a nuestro archivo Java. Y definamos esto botón. Dentro de mi método onCreate, voy
a decir botón.

Llamémoslo btn. Hola es igual a encontrar vista por ID dot btn. Hola. Para
configurar un onclicklistener para su botón, puede usar el método equivalente, puede decir
btn Hola, dot set onclicklistener. Tú Puede ver que tenemos este método dentro de los paréntesis
que necesitamos para pasar una interfaz. En este caso puede ser new view dot onclicklistener.
Si miras más de cerca, puedes ver que esta es una interfaz. Bien, ahora que he pasado
esta nueva interfaz aquí, esto onClick el método ha sido anulado. Y dentro de este método
onClick, puedo escribir mi código. Por ejemplo, si quiero imprimir algo en mi consola, puedo
decir imprimir. digamos hola, vamos ejecutar la aplicación. Y vamos a ver si podemos
ver algún resultado. He abierto este panel de Ron aquí y si hago clic en este botón decir hola,
puede ver que Hola se está imprimiendo en aquí.

Entonces, de esta manera, al usar este método set onclicklistener
en nuestro botón, podemos definir onClick oyente. Dentro de los paréntesis de este método, hemos
pasado este nuevo punto de vista onclicklistener método. Pero también hay otra forma, veamos rápidamente
eso. Así que en lugar de pasar un nueva interfaz aquí, voy a implementar esta
interfaz exacta en la declaración de mi clase.

Si recuerdas de la sesión de Java, podemos
implementar interfaces como esta, puede decir implementar, digamos onClick listener.
Hay dos opciones aquí. El primero viene de Android dot view ese paquete
de vista y el siguiente es de otro, necesitamos el primero. Cuando implementamos interfaces, también
necesitamos implementar los métodos, puede hacer eso presionando Ctrl más por necesitamos
implementar este método onClick. como la entrada de este método onClick, estamos obteniendo un objeto de
vista. Y ahora podemos usar esta vista para crear diferentes
casos. Por ejemplo, podemos decir cambiar a la vista, o V en este caso, es su nombre.
Digamos que obtener ID, vamos a crear nuestro interruptor dependiendo de la ID de este objeto
de vista. Y después de eso puedo decir caso, en caso es nuestro.id dot btn. Hola, la identificación
exacta que hemos pasado aquí.

En caso de que esto es el ID vamos a escribir algo de código. Por ejemplo,
voy a copiar esta línea de código desde aquí. Agreguemos también un descanso y también un caso predeterminado.
Ahora que he implementado este método en la declaración de clase de punto, y también
he implementado este método onClick, puedo elimine este conjunto de puntos huecos btn en el método
clicklistener. Escribámoslo una vez más, digamos btn Hello dot set onclicklistener. Esta vez en
lugar de decir new view dot onclicklistener Puedo decir esto. Si recuerda de la sesión de
Java, esto se refiere al objeto actual. En este momento estamos dentro de esta clase que implementa
esta interfaz. Así que este método aquí abajo está contento con aceptar esto como entrada.

Entonces, ¿cómo
es el seguimiento de las cosas aquí? Primero de todos, estamos configurando el onclicklistener
y estamos pasando la clase en sí como el interfaz. Cada vez que el usuario haga clic en
este botón, se activará este método onClick se pasará una vista a este método en este
caso es un botón más adelante hablaremos por eso una vista y un botón son equivalentes.
Estamos captando la idea de esta vista y están creando una declaración de cambio. En caso de que
el ID de esta vista sea our.id dot btn Hello the ID de nuestro botón. Estamos imprimiendo este Hola
aquí. Si tuviéramos otros botones o para eso Independientemente de otros puntos de vista, también podemos
crear diferentes casos para ellos aquí. Corramos la aplicación una vez más y veamos si podemos
ver el mismo resultado.

Una vez más si Hago clic en este say hola bata y podemos
ver que Hello ha sido impreso en el Consejo. Además, no me gusta venir aquí dentro de esta
ronda para probar mi aplicación. significa que voy a mostrar algo al usuario
en nuestra aplicación. Por eso, en cambio de usar este sistema dot out dot print line,
voy a usar otra opción llamada brindis mensajes Busquemos esos mensajes. Y vamos
a ver cómo son esos. Así que básicamente, un mensaje de brindis es algo como esto. Este
no es un mensaje permanente, y será desaparecer después de un período de tiempo. Veamos rápidamente
cómo podemos definir esto en nuestro código. Así que aquí, voy a borrar esta línea de código.
En su lugar, voy a decir tostadas, Puedes ver que tengo dos opciones aquí. La primera
es una clase de Java, pero la segunda uno es una plantilla.

Básicamente, las plantillas
las proporciona el ID que estamos usando. Para ejemplo, aquí, si selecciono esta plantilla, puede
ver que toda esta línea de código tiene sido creado Entonces estamos usando esta clase de prueba en
la que tiene este método estático. dentro de esto método estático, estamos pasando un contexto sea lo que
sea, hablaremos sobre el contexto más adelante en el curso. Pero por ahora, estamos usando esta clase
de brindis. El inglés tiene este método estático. llamado make text, tenemos tres entradas para este
método make text. El primero es un contexto, no te preocupes por el contexto todavía. Hablaremos
de eso más adelante en el curso. Pero por ahora, solo sepa que cada actividad en Android
es un contexto.

Y porque ahora mismo estamos dentro de una actividad, podemos pasar esto como
nuestro contexto. La siguiente entrada es un texto. Básicamente, este va a ser el texto que
vamos a mostrar por ejemplo, digamos botón de hola pulsado. Después de eso, tenemos esta constante aquí, que
es longitud de punto tostada corta, básicamente, esto es solo una constante para determinar cuánto tiempo
queremos nuestro mensaje de brindis. Por ejemplo, si quieres ver los otros periodos de tiempo,
puedes ver que tenemos largo largo y largo corto. Seleccionemos largo corto. Y después de hacer
métodos de texto, tenemos este show de puntos método, que puede adivinar va a mostrar nuestro mensaje
de brindis.

Así que antes de esto, tenemos creó nuestro mensaje de brindis. Y después de eso,
con la ayuda de este método show, estamos mostrándoselo al usuario. Aquí hemos utilizado
la plantilla. Pero si no quieres usar la plantilla, siempre puede crear su propio mensaje
de brindis. Puedes decir tostadas Esta vez, seleccionemos el primero. Digamos que hacemos texto para
la lista de contexto más allá de estos, necesitamos el texto aquí, digamos segundo texto. Y después
de eso, necesitamos la constante, digamos brindis por ese último espectáculo de puntos largos. Básicamente,
estas dos líneas de código son iguales. Nosotros solo no puede crearlos con la ayuda de la ID. Bien,
esta vez, ejecutemos la aplicación. Y vamos a ver cuál sería el resultado. Así que
esta vez, si hacemos clic en esto, saluda mantequilla, puede ver que se muestra un mensaje
de brindis en nuestra pantalla. Y después de eso será desaparecido. Creo que esos mensajes es mucho
mejor.

Para nuestros propósitos de prueba. Es mucho mejor que este dolor redondo aquí
abajo. Bien, cerremos la aplicación. aquí Y hablemos de esta vista que estamos
recibiendo aquí de una manera lógica. En lugar de esta vista, necesitamos recibir un botón
porque estamos creando nuestro interruptor declaración basada en el ID de nuestro botón. Pero
hay un punto aquí, si presionas hacia abajo la tecla de control Y si hace clic en esta clase
de botón, una vez más, si presiona hacia abajo la tecla CTRL y si hace clic en la clase que
este botón está extendiendo, en este caso, esta vista de texto, puede ver que esta clase de vista
de texto está extendiendo la clase de vista. Eso significa que después de dos tiempos de herencia, nuestro botón
es de alguna manera una vista vista simplemente extendida la vista de clase dos veces. Entonces, al final,
un botón es una vista. Si recuerdas de la Sesión Java cuando hemos hablado de herencia.

Por
ejemplo, cuando extendimos la clase animal y creamos nuestra clase de perros, dijimos que un
perro es un animal. En este caso, un botón también es una vista. Para esa materia. Cada elemento de la interfaz
de usuario es una vista, como vistas de texto, editar texto, y también otros elementos de la interfaz de usuario de los que
hablaremos más adelante en el curso. Así que esto aquí demuestra que podemos crear un onclicklistener para nuestro TextView
y otros elementos de la interfaz de usuario como bien. Entonces, este método onClick no se limita a
nuestro botón. También vale la pena mencionar que cuando crea su propio oyente de esta manera,
implementando la interfaz en su declaración de clase, solo necesita crear un método
onClick para todos sus elementos de interfaz de usuario. Por ejemplo, si tuviera otro método aquí,
podría haber pasado la ID de ese botón a otro caso.

Y dentro de ese caso, podría haber
escrito mi lógica. Entonces puedo tener tantos métodos y, para el caso, tantos oyentes
onClick para mis elementos de vista, también, este oyente onClick es uno de los eventos disponibles,
oyentes, también tenemos otros, si quieres, puedes echarles un vistazo diciendo
btn Hello dot set, digamos set listener. Y puede ver muchas de estas opciones que tenemos
en el oyente de clic que tenemos en el oyente directo, puedes adivinar el significado de cada uno de estos,
hemos puesto en hover listener en caso de que pase el cursor sobre nuestro botón, también tenemos
otro útil. en el oyente de clic largo, significa que si nos gusta apretar un botón, genial.
Veamos este. Esta vez, en cambio de implementar el oyente de clic largo en
mi declaración de clase, voy a usar la forma más fácil diciendo new view dot online
click listener.

Este, puede ver que aquí tenemos un booleano
como el tipo de retorno de este en línea método de clic. Este booleano es solo la devolución de llamada que
indica si hemos presionado prolongadamente nuestro botón. Si desea que su código dentro de este método
funcione bien, debe pasar. Vamos escribir algo de lógica. aquí Por ejemplo, voy
a decir tostadas. Una vez más, podemos ver este contexto aquí. Pero el formato es de alguna manera
diferente. Porque ahora mismo estamos dentro una interfaz, estamos dentro de esta interfaz de escucha
de clics en línea. Si pasamos esto, esto se referirá al objeto actual, que en este caso
es una interfaz. Pero las interfaces no son contexto. Y tenemos que pasar nuestra actividad.

Para
el caso, podemos decir actividad principal punto esto, no te preocupes por esta actividad principal
que esto si no entendiste que hablaré sobre eso más adelante en el curso cuando hayamos
hablado de actividades. Pero por ahora, solo pasemos esto como nuestro contexto. Y vamos a
crear un texto. También cambiemos la hora Período aquí a Lance largo. Creo que también necesito
borrar este caso de aquí. De acuerdo, vamos a ejecutar la aplicación. Entonces, como antes,
si hago clic en este botón, pueden ver que estamos viendo este mensaje Hello button clicked, que
es un simple onclicklistener para nuestro botón.

Pero si presiono mi botón y mantengo presionada
la tecla, pueden ver que estamos viendo esto mensaje de pulsación larga. Entonces, esta vez, en lugar
de este onClick, hemos ejecutado este conjunto Método de escucha de clics en línea. También puede
verificar los otros oyentes de eventos para su vista elementos. Más adelante en el curso revisaremos
algunos más. Pero en general, puede say btn Hello dot set oyente. Y puedes usar cada
uno de estos que quieras. De acuerdo, Pasemos de los detectores de eventos. Y definamos
otro elemento de UI en nuestro diseño expediente. Antes de este botón, voy a definir un texto
de edición. Digamos Editar texto. Para el ancho, esa es una buena coincidencia esta vez. Y para
la altura, eso es un contenido envolvente, tú puede ver que es algo como esto, si hace clic
en eso, este es nuestro texto de edición. Vamos también agregue un texto aquí. Digamos que se ha agregado
el nombre y el nombre. Eso parece hacerlo mejor.

Centremos también nuestro texto de edición,
voy a decir centrar padre, y voy a pasar por. Pero ahora mismo tenemos un conflicto entre
este texto de edición y nuestro botón. Para que voy a mover este botón debajo de este texto
de edición. Pero antes de eso, necesito dar una ID a este texto de edición. digamos DNI.
Vamos a nombrarlo editar nombre de texto. Terminemos creando este texto de edición. Y luego aquí dentro de
nuestro elemento de botón, puedo decir a continuación o para ser un diseño específico a continuación. Y puedo
pasar la ID de mi texto de edición antes de eso. necesita este anuncio más una barra de identificación. Ese es el nombre
de Editar texto. Entonces de esta manera, hemos movido esto botón debajo de nuestro texto de edición. Creo que
es mejor tener algunos márgenes. eso es un margen parte superior. Y pasemos 20 dP, eso parece mejor.
Bien, volvamos a nuestro texto de edición.

No me gusta el texto dentro de mi texto de edición.
Porque si ejecuto la aplicación, y si intente escribir algo aquí, antes que nada,
necesito eliminar este texto para eso de este atributo de texto. Voy a usar otro atributo llamado
sugerencia. creo que tenemos una pista en los primeros videos de este curso. Solo
pasemos el nombre. Esta vez es mucho mejor. Entonces, cada vez que hago clic en este texto de edición, y
si intento escribir algo, esta sugerencia de nombre aparecerá ser desaparecido. Además, si queremos disminuir el ancho
de nuestro texto de edición, podemos pasar un número aquí, por ejemplo, podemos decir 250
dP, que es mejor en este caso.

Pero si tu recuerda que dije que nunca es una buena idea
pasar tu ancho y alto manualmente, porque en diferentes tamaños de pantalla, no puede predecir
el tamaño de sus diferentes elementos. Para eso, una vez más, voy a cambiar esta fuente para que
coincida con la que creo que era. Y después eso está hecho aquí, voy a agregar dos márgenes,
digamos un margen izquierdo de 250 dP, para ejemplo, creo que es mejor cambiarlo a 100.
Y también, agreguemos un margen derecho de 100 Agregar diferentes márgenes es una forma, pero
también tenemos otra forma, veamos que también. Así que voy a eliminar ambos márgenes.
En cambio, en la declaración de mi diseño relativo dentro de la etiqueta de apertura.

Como
puede ver, esta es nuestra etiqueta de cierre, y esta es nuestra etiqueta de apertura. Dentro de la etiqueta
de apertura, puedo definir un atributo llamado relleno, una vez más, como márgenes, y tenemos múltiples rellenos.
Nos queda el relleno de la parte inferior del relleno, arriba a la derecha, usemos relleno aquí. Y pasemos
los 100 dP. Entonces, como puedes ver, el tamaño de nuestro texto de edición ha cambiado,
el relleno y el margen son muy parecidos El uno al otro. Solo hay una diferencia.

Cuando
estás agregando un margen. Por ejemplo, en el caso anterior, para nuestro texto de edición, el
margen se agregaría desde el final de nuestro elemento, por ejemplo, desde aquí hasta el final de
nuestra pantalla. Pero cuando estás agregando un relleno, relleno de profundidad, agregaremos algo de espacio desde el
interior de su elemento. Por ejemplo, en este caso, el El elemento es este diseño relativo en sí mismo. Y
hemos agregado el relleno desde el interior del Disposición relativa. Entonces, una vez más, margin agrega
el espacio desde el exterior de los elementos, pero el relleno agregará el espacio desde el
interior del elemento, puede usar ambos ellos dependiendo de su necesidad. Veamos qué otros
atributos tenemos para nuestro texto de edición, como TextView, también podemos cambiar el color de
este texto de edición.

Por ejemplo, puedo decir el color del texto. Y pasemos este color que
tenemos en nuestros recursos de color. Derecha ahora no tenemos ningún texto dentro de nuestro texto
de edición. Pero tan pronto como escribimos algo, el el color se cambiará a este color que podemos ver
aquí. También podemos diseñar el texto. al decir estilo de texto este, podemos decir
cursiva negrita normal. O si queremos usar dos lados al mismo tiempo, podemos agregar una
tubería. Hay otro atributo que no tener en las vistas de texto. Y eso se llama líneas.
Por ejemplo, hay ocasiones en las que puede necesita una entrada más grande del usuario, puede
especificar el número de líneas aquí.

Por ejemplo, si digo cuatro, por ejemplo, ahora nuestro texto de edición
aceptará cuatro líneas de entradas. En este caso, no voy a utilizar estas líneas. Así que
solo voy a eliminar ese valor predeterminado número para diferentes líneas es uno. Con editar texto,
también puede definir el tipo de entrada que vas a recibir. Para eso puedes decir
input type this one, y puedes pasar uno de estos por ejemplo, si es una fecha que
voy a recibir, puedo pasar una fecha o tal vez esta fecha y hora. Si voy a recibir un número
de contraseña, puedo pasar este número clave. Si es solo un texto simple, puedo pasar
este texto, tenemos otras opciones, por ejemplo, para diferentes correos electrónicos y todo
tipo de opciones que puede ver aquí.

Por ejemplo, si selecciono esta contraseña de texto aquí, y si
agrego algo de texto en lugar de esta pista, vamos a decir texto. Puede ver que cuando escribí el texto,
lo cambiará a estos puntos. Probablemente ha visto esto en su teléfono cuando intenta
iniciar sesión en alguna aplicación o algún sitio web, esto agregará cierto nivel de seguridad. También
cuando lo defines para enviar por correo electrónico, esta dirección de correo electrónico de texto cuando el usuario
haga clic en su texto de edición, se preparará la palabra clave para escribir la dirección de correo electrónico. No voy
a definir ningún tipo específico de entrada, así que voy a para borrar este de aquí también.

Y vamos a
cambiar también este a él. Bien, creo eso es suficiente sobre editar texto. Tenemos todo
tipo de opciones diferentes en las que puedes consúltalos desde aquí. Como puede ver, hay
1000 de estos atributos. Bien, abajo este botón También definamos un TextView.
Voy a decir TextView wrap content y resumir contenido. Vamos a darle una identificación, digamos. txt
Hola. Después de eso puede haber algún marcador de posición texto. Solo digamos hola. Vamos a moverlo también
debajo de este botón, voy a decir diseño a continuación. Además, vale la pena notar
que si no está usando un diseño relativo, por Por ejemplo, si está utilizando un diseño de restricción,
no tiene esta opción de generador de diseño.

Esta es una de las características de este diseño
relativo. Hablaremos de eso en el futuro. vídeos Bien, aquí, pasemos la idea de nuestro
botón, digamos btn. Hola. También, vamos a moverlo al centro horizontal. Y agreguemos algunos márgenes. Margen superior
a quizás 30 dP, aumentemos el tamaño de esto texto diciendo tamaño de texto. Y pasando
creo que 20 estaría bien. casi termino con este archivo de diseño. Vayamos arriba aquí
en este código. Y seleccionemos esto reformatear el código para reorganizar nuestro código
de modo que si publico el código, tendrá el mismo código que estoy escribiendo aquí.

Bien,
pasemos a la actividad principal. y vamos definir estos tres elementos. Digamos Editar texto.
Vamos a nombrarlo. EDT. txt, lo creo was name es igual a buscar vista por ID r.id dot
edit text name. Definamos también nuestra vista de texto. Pongámosle el nombre txt name is
equal to find view by ID dot txt name, or txt Hello fue creo que es mejor cambiar el nombre a txt
Hola. Pero ahora mismo hay un problema. con nuestro código. Estamos instanciando nuestros elementos
de UI dentro de este método I create, que una vez más es el punto de partida de nuestra aplicación. Pero vamos a necesitar
esto para los elementos de la interfaz de usuario. dentro de este método onClick. Porque vamos
a cambiar el valor de este TextView cada vez que el usuario hace clic en nuestro botón.
Y si trato de tener acceso a este txt, hola, por ejemplo, desde dentro de este método,
si escribo txt Hola, pueden ver que obtengo una advertencia roja, puede ver que la identificación no
puede resolver este símbolo, significa que dentro este método, no tenemos acceso a este TextView.
No estoy seguro si he mencionado esto en la sección Java.

Pero el problema aquí
ocurre debido al alcance en Java. Entonces, en este momento, el alcance de este TextView
está dentro de este método onCreate. y fuera de que no podemos usar eso si queremos tener acceso
a este TextView. Dentro de estos dos métodos, podemos decir algo como esto, podemos
declarar este TextView en la declaración de nuestra clase como campos diferentes. Por ejemplo,
aquí arriba, puedo decir privado, digamos TextView este.

Y vamos a nombrarlo. txt Hola.
Pero ahora mismo aquí, si trato de instanciar mi TextView, por ejemplo, si digo
buscar vista por ID y paso mi ID, porque esta parte aquí no es parte del ciclo de vida de
esta actividad. no vamos a instanciar nuestro TextView en absoluto, necesitamos crear una instancia
de nuestro elemento dentro de este método onCreate, que vuelve a ser el punto de partida de nuestra aplicación. Entonces
de esta manera, estamos separando la declaración y la creación de instancias de nuestro elemento de interfaz
de usuario, puedo poner un punto y coma aquí.

Y esta vez, en lugar de definir todo el TextView, puedo usar
este campo, puedo decir txt Hola respuesta es igual a buscar vista por ID r.id punto txt Hola.
Ahora que he declarado este txt Hola como un campo, puedo usarlo en ambos métodos. Por
ejemplo, aquí, puedo decir txt Hola punto de texto. Dentro del método de establecer texto, voy a
necesitar el texto de este texto de edición. Para eso Voy a definir este texto de edición como un campo también.
Así que digamos editar texto privado. Vamos nómbrelo realmente txt nombre. Y luego aquí, eliminemos
este texto de edición. ahora puedo pasar este texto de edición, por ejemplo, al método de texto
establecido. Digamos hola más el Texto de edición no obtener texto. Si recuerdas de los primeros
videos de este curso, dije que necesitamos un método de dos cadenas también. Hemos visto este
método de dos cadenas en diferentes clases de Java. Solo va a generar algo de texto. En este
caso, si borramos this to string y si solo pasamos este nombre de texto de edición que
obtiene texto si presiona la tecla CTRL y si pasa el cursor sobre este método de obtención de texto, puede
ver el tipo de retorno de este método de obtención de texto es editable.

Todavía no sabemos qué es eso.
Pero solo sabemos que esto no es una cadena, y aquí, vamos a necesitar una cuerda. Para
eso necesitamos otro nivel de conversión, necesitamos convertir lo editable en una cadena. Entonces
podemos usar este método de dos cadenas. De acuerdo, Creo que después de mucho hablar, nuestra aplicación está
lista, simplemente ejecutemos la aplicación. Y veamos si podemos ver el comportamiento que
queríamos. Escribamos algo aquí. Vamos dice Mesa. Y presionemos este patrón solo en función
de que nuestra aplicación funcione bien. Y con suerte, entendemos cada parte del código
que hemos escrito hasta ahora, unos minutos. anteriormente, dije que los diferentes elementos de la interfaz
de usuario amplían la clase de vista, hemos visto que para este botón, ese también es el caso de este texto
de edición y texto, puede presionar hacia abajo la tecla de control, y puede hacer clic en esta clase
de edición de texto, podemos ver que se está extendiendo la vista de texto, si hace clic en esta vista de texto,
una vez más, presionando la tecla de control, puede ver que está extendiendo la clase de vista.
Lo mismo es para TextView en sí.

Si presionamos la tecla de control, y si hacemos
clic en la vista de texto, podemos ver que está extendiendo la clase de vista. Ahora que
sabemos que ambos están ampliando la vista class, podemos crear un onclicklistener para cada
uno de ellos. Y corramos dentro de esto Método onClick. Si quieres, podemos crear
otro caso para cada uno de ellos. Por ejemplo, aquí abajo, para el texto de edición, puedo decir Editar nombre
de texto, conjunto de puntos al hacer clic en el oyente. Tú puede ver que tenemos esta opción aquí. Y
debido a que estamos implementando onclicklistener interfaz dentro de nuestra declaración de clase,
puedo pasar esto aquí. Más tarde dentro del método onClick, puedo crear otro caso. Por
ejemplo, digamos case r.id dot, digamos diga Editar nombre de texto. Si ese es el caso, brindemos
por algún mensaje. digamos intentar escribe algo.

Antes de ejecutar mi aplicación,
voy a eliminar este brindis porque estoy no va a haber un conflicto entre diferentes hosts.
Así que esta vez, si hago clic en el btn Hola, el texto se cambiará a Hola más el texto
dentro de nuestro texto de edición. Y si hacemos clic en el propio texto de edición,
veremos este mensaje de brindis. Haciendo click en el texto, podemos ver el mensaje de brindis
aquí abajo que parece ser perfecto. De acuerdo, Creo que eso es suficiente para este video. En el
siguiente video, vamos a hablar de algunos otros elementos de la interfaz de usuario como casillas de verificación, botones
de radio y grupos de radio y también la barra de progreso. Sólo antes de terminar este video, voy a decir
que subiré el código fuente en mi sitio web@miko.org código de barra.

Así que siéntase
libre de verificar eso si lo necesita. Bien, mira usted en el siguiente video. El primer elemento de la interfaz
de usuario del que vamos a hablar en este video es casilla de verificación. Veamos rápidamente eso en
nuestro archivo de diseño. Antes de todo, me voy para eliminar este TextView. Y también voy a cambiar
el diseño de restricciones a relativo diseño.

Luego aquí, podemos crear nuestra casilla de verificación como
esta. Podemos decir casilla de verificación para el ancho y altura, digamos contenido envuelto. Puede ver que
esta pequeña casilla de verificación ha sido añadido aquí. Si lo desea, también podemos agregar un texto
a esta casilla de verificación. digamos texto, Voy a introducir el nombre de una película. Así que digamos
Harry Potter. Podemos tener una identificación así como digamos ID. Llamémoslo checkbox contratación. Básicamente,
una casilla de verificación es una casilla que podemos marcar o desmarcar. Por ejemplo, aquí tenemos
un atributo llamado marcado. Podemos pasar o falso para esto, por ejemplo, si decimos verdadero,
puede ver que la casilla de verificación ser revisado Agreguemos rápidamente dos casillas de verificación
más. Básicamente, voy a copiar y pegar esto uno dos veces más. Pero esta vez, antes que
nada, voy a cambiar el texto para que decir la matriz. Y también vamos a cambiar
la idea también. Además, voy a agregar otro atributo Voy a mover esta nueva casilla de verificación a la
derecha de mi casilla de verificación anterior.

Para que tenemos un atributo llamado para escribir
de diseño para escribir. Pasemos el DNI de nuestra primera casilla de verificación, digamos casilla de verificación,
Harry. Agreguemos también un margen a la izquierda. Podemos decir margen izquierda y pasemos 15 Si por ejemplo, copiemos
y peguemos este una vez más, cambiemos el texto a digamos Joker. También cambiemos
la ID, digamos casilla de verificación, Bufón. Y también vamos a moverlo a la derecha de la matriz de
casillas de verificación. Entonces, de esta manera, como puede ver, podemos tener varias casillas
de verificación, puede marcarlas y desmarcarlas de forma predeterminada al establecer un atributo
de marcado, cambiemos el valor del comodín a decir, falso.

Si queremos centrar esta casilla de verificación
horizontalmente, podemos agregar un margen para el el primero. Por ejemplo, podemos decir, margen o
margen izquierdo. Y podemos pasar 25, por ejemplo. Pero como puede ver, esto no es exacto. En cambio,
lo que podemos hacer es que podemos crear otro diseño relativo y mueva todas estas tres casillas
de verificación a ese diseño relativo. Veamos rápidamente cómo podemos hacer eso. Entonces,
dentro de mi primer diseño relativo, voy a crear otro diseño relativo. Digamos diseño relativo,
para el ancho y alto, digamos resumir contenido. También vamos a darle una identificación.
digamos DNI. Voy a nombrar estas películas divertidas, diseños relativos. Ahora, si quiero, puedo centrar esta
izquierda relativa, puedo decir centro horizontal, pasemos.

Además de eso, agreguemos un margen
superior, digamos un margen superior de 20 dP. En otros elementos de la interfaz de usuario normalmente aquí,
podríamos haber terminado de crear nuestros elementos agregando una barra aquí. Pero en este caso,
no voy a hacer eso. En cambio, voy para terminar de crear mi primera etiqueta mi etiqueta de apertura.
Para eso puedo agregar un soporte de anclaje izquierdo. Y como puedes ver, esta etiqueta de cierre se ha creado
automáticamente. Ahora puedo poner mis tres casillas de verificación dentro de estas dos etiquetas, la etiqueta
de apertura y la etiqueta de cierre. Vamos a mover todos ellos dentro de esas dos etiquetas. Si te diste cuenta, puedes
ver que estas tres casillas de verificación están ahora centrados horizontalmente, y además tienen un
margen superior de 20 dP. Eso es porque el El diseño de los padres, que es este diseño relativo, tiene
estos dos atributos. Entonces, dentro del archivo XML, puede tener un diseño relativo anidado dentro
de otro diseño relativo.

Bien, ahora veamos ¿Qué podemos hacer con estas casillas de verificación
dentro de nuestro código Java? Para eso, voy a abrir mi actividad principal dot archivo java. Si te estás
preguntando, estoy presionando doble turno en orden para ver el menú de búsqueda. En primer lugar aquí, definamos
nuestras casillas de verificación. Una vez más, estoy va a definirlos como campos, digamos casilla de
verificación privada. Para el primero, vamos di casilla de verificación, Harry. Aquí tengo dos opciones.

En primer
lugar, puedo crear mi línea de casillas de verificación después de la línea. Por ejemplo, puedo decir casilla de
verificación privada, y para la segunda, podemos nombrar matriz de casillas de verificación. O alternativamente, debido
a que el tipo de estos objetos es el mismo, yo Puedo agregar una coma aquí y puedo definir mi segunda
casilla de verificación. Por ejemplo, puedo decir checkbox matriz. Definamos también la casilla de verificación Joker.
Y más adelante dentro de nuestro método on create, vamos a instanciarlos.

Digamos que la casilla de verificación
Harry es igual para encontrar la vista por ID r.id punto casilla de verificación lo siento. Del mismo modo para los dos
siguientes. Si lo desea, puede tener un oyente de clics para cada una de estas casillas de verificación, por ejemplo, puedo decir que el punto
de contratación de la casilla de verificación se establece en el cheque cambiar de oyente, este es el oyente que necesito.
Pasemos al nuevo detector de cambios sin marcar. Una vez más, puede ver que se trata de una interfaz. El
nombre exacto es botón compuesto que se desmarcó cambiar de oyente. Dentro de esta interfaz, tenemos
este método de cambio no verificado en el que recibimos dos elementos. El botón compuesto en sí, que
es nuestra casilla de verificación en este caso, y también esto se comprueba booleano. Así que aquí,
puedo crear una declaración if, puedo decir si está chequeado. Mostremos un mensaje de brindis.
Digamos que has visto Harry Potter. Pero en En caso contrario, mostremos otro mensaje fuente.
Esta vez voy a decir que tienes que mirar harry potter Antes de escribir la lógica para las siguientes
dos casillas de verificación, ejecutemos nuestra aplicación y vamos a ver cuál sería el resultado.

En este momento, Harry Potter está marcado pero no
vemos ningún mensaje de brindis y eso es porque el onclicklistener aquí va a reaccionar cuando hagamos
clic en esta casilla de verificación. Por ejemplo, si desmarco esta casilla, podemos ver que
necesitas ver Harry Potter. también revisalo. Has visto Harry Potter. Pero, ¿y si
queremos ver el mensaje de brindis cuando ejecutamos la aplicación sin hacer clic en nuestra casilla
de verificación. Para eso tenemos una opción. aquí antes de configurar este onclicklistener. Podemos verificar
eso si nuestra casilla de verificación está marcada O no. Por ejemplo, para eso puedo crear una declaración
if, puedo decir if checkbox contrata.es comprobado. Como puede ver, este método devolverá
un valor booleano. Y como su nombre se aplica, va a verificar si nuestra casilla de verificación
está marcada o no. Entonces, si está marcado, voy para mostrar el mensaje de brindis.

Vamos a copiarlo desde
aquí. Pero en el caso contrario, voy a mostrar otro mensaje de brindis. Una vez más, podemos
copiarlo desde aquí abajo. Ejecutemos la aplicación. Como puede ver, cuando ejecuté la aplicación
sin hacer clic, vi que era un mensaje. Entonces, de vez en cuando, este método de
verificación será útil. no voy a definir un onclicklistener para las siguientes dos casillas de verificación
porque estoy seguro de que entendiste mi punto. También, como en el video anterior, en lugar de pasar este
nuevo boton compuesto ese cambio sin marcar oyente, puede implementar este oyente en
la declaración de su clase, por ejemplo, aquí, y después de eso, debe anular esto
sin marcar, cambiar el método. Después puede pasar esto en lugar de este nuevo oyente aquí
a su conjunto al verificar el cambio de oyente método. Pero una vez más, no voy a pasar por
eso. En su lugar, volvamos a cambiar a nuestro archivo XML de punto principal de actividad.

Y hablemos
de otro elemento de la interfaz de usuario. Pero antes eso, voy a minimizar estos diseños relativos. El siguiente
elemento de la interfaz de usuario al que voy hablar es un botón de opción. Ese es un botón
de radio, este de aquí abajo. Para el ancho y alto, digamos envolver contenido,
puede ver que este es este botón circular. Pasemos a debajo de nuestro diseño relativo. Puedo decir
a continuación o diseño a continuación. lo pienso fue nombrado diseño relativo de películas. Agreguemos también
dos márgenes, margen a la izquierda de digamos 25 dP y también un margen superior de quizás 20 db, como
casillas de verificación, también podemos tener texto, eso es un texto.

Para el texto, solo voy a decir
casado. Esto va a determinar el matrimonio. estado del usuario. Así que de eso trata este texto. También
vamos a darle una identificación. Vamos decir botón de radio casado. Como casillas de verificación.
Si desea marcar este botón de radio casado, puedes decir verificado y puedes pasar. Si
desea tener varios botones de opción, puede decir algo como esto, puede copiar y pegar
este botón de opción, pero hay Va a haber algún problema con nuestro código.

Antes
de eso, cambiemos el texto y la ID de este boton de radio. Por ejemplo aquí, digamos syngo.
Y después de eso, cambiemos la ID. al cantante de RV. Movamos también este para cancelar
nuestro botón de radio casado, vamos decir para cancelar el matrimonio botón de radio. Entonces,
el propósito de los botones de opción en la programación es que entre varios botones de radio, solo puede
seleccionar uno.

Esta es la diferencia entre el botón de opción y la casilla de verificación. Cuando tiene
casillas de verificación, puede marcar varias casillas de verificación, tanto cuando tiene botones de radio, solo puede
tener un botón de radio marcado. Pero como puede ver, nuestro programa no está funcionando
aquí. Y eso es porque necesitamos para agrupar estos botones de radio. Y podemos
hacerlo creando otro elemento aquí llamado grupo radiofónico.

Antes de eso, voy a eliminar estos
dos botones de opción. Digamos grupo de radio. Éste. Una vez más, para el ancho y el alto, voy a
decir envolver contenido. vamos a movernos debajo de nuestro diseño relativo de películas. El diseño debajo de los videos de identificación se basa en un
margen superior de quizás 20 dP. Y también vamos a centrarlo horizontalmente, centro horizontal a verdadero. Una vez más, porque
voy a poner unos botones de radio dentro este grupo de radio, no voy a terminar de
crear este grupo de radio. En cambio, voy para terminar de crear esta etiqueta de apertura agregando un
corchete de anclaje izquierdo como un diseño relativo, puedes ver que ahora tenemos una etiqueta de apertura y también
una etiqueta de cierre.

Dentro de esta radio grupo. Puedo tener mis botones de radio, digamos botón
de radio, envolver contenido y envolver contenido. Démosle una identificación, digamos que el botón de opción se
casó con un mensaje de texto, tal vez. Y también, vamos a cambiar Su valor predeterminado es verificado, digamos verificado.
Ahora podemos tener múltiples botones de radio. Copiemos y peguemos este. Como puede ver, nunca
moví este botón de opción hacia abajo nuestro primer botón de opción, pero se mueve automáticamente.
Si cambiamos el ID a, por ejemplo, RV single, puede ver que a pesar de que ambos botones de
radio están marcados, pero solo uno de ellos muestra el valor marcado, por lo que cuando
usa botones de radio, solo uno de ellos puede tener un valor comprobado.

Para eso, voy
a eliminar este atributo marcado de la segundo botón de opción. Y también voy a cambiar
el texto a sencillo. agreguemos tambien otro. Para la ID, digamos un botón de radio en
REL. Y vamos a cambiar el texto a en un relación. También eliminemos este atributo de verificación.
En este momento nuestros botones de radio son vertical. Si lo desea, también puede tener botones
de radio horizontales para eso dentro de su grupo radiofónico. Puede tener un atributo llamado
orientación en el que puede pasar horizontal o verticales. Si paso horizontal, pueden ver que
ahora tenemos nuestros botones de radio en horizontal ordenado, creo que es mejor tener algunos márgenes
entre estos botones de opción. Entonces vamos agregue rápidamente algunos márgenes. Digamos que
queda un margen de unos 15 dP, supongo. Agreguemos otro uno aquí abajo. Bien, ahora veamos cómo podemos
usar estos botones de radio, nuestra radio group dentro de nuestro archivo Java.

Para eso no
necesito definir mis grupos de radio. En cambio, Solo necesito instanciar mi grupo de radio,
digamos grupo de radio. Llamémoslo radio estado civil del grupo. Pero creo que necesito dar una
identificación a este grupo de radio. Y yo pienso Yo no hice eso. Sí, aquí puedo ver la identificación,
digamos el estado civil del grupo de radio. En nuestro Creo un método que también minimiza esta declaración
if y también este oyente onClick. Y después de las casillas de verificación, instanciamos
nuestro grupo de radio. Podemos decir grupo de radio, marital estado, vista fina por ID r.id dot, estado civil del
grupo de radio, podemos tener un onclicklistener para este grupo de radio diciendo punto de grupo de radio
establecer sin marcar cambiar oyente. Así que esto se llamará al método cada vez que cambiemos el botón
de radio seleccionado, y dentro del paréntesis, puede adivinar que puedo pasar nuevo oyente
de cambio sin marcar, punto de grupo de radio detector de cambios sin marcar, que es una interfaz
y creará este método de cambio de objeto.

Una de las entradas de este método es este ID de verificación
en el que podemos usar que, por ejemplo, puede crear la declaración de cambio en este ID de cheque.
Y podemos crear nuestros casos podemos decir en caso de que sea nuestro punto .id, digamos botón de radio casado.
Entonces, básicamente, esta identificación verificada es la ID de nuestro botón de opción, cualquiera que esté seleccionado.
Entonces, en caso de que el usuario seleccione esta radio botón casado, voy a mostrar un mensaje de
brindis. Digamos que casado. pero en caso es nuestro ese punto de identificación, digamos botón de
radio único. Mostremos otro mensaje de brindis. También agreguemos otro caso para RV en pozo. Como de costumbre,
creemos también nuestro caso predeterminado. Y agreguemos un descanso. Ejecutemos nuestra aplicación. Y
vamos a ver si podemos ver algún resultado. Ahora mismo esta casada está seleccionada. Si seleccionamos
el soltero se puede ver que el casado uno ha sido desmarcado.

Y también hemos visto
el mensaje de brindis. Seleccionemos otro. Puedes ver el mensaje de brindis que es perfecto. En este
momento tenemos un onclicklistener para nuestro diferentes botones de radio dentro de este grupo
de radio. Y dependiendo de ese botón, estamos haciendo algo, por ejemplo, en este caso, estamos mostrando
un mensaje de brindis. pero si nosotros queremos hacer algo sin hacer clic en estos botones,
podemos hacer algo como esto en nuestro código. Entonces, antes de que esto se active, cambie
el oyente. Puedo decir el estado civil del grupo de radio no se marque la ID del botón de radio. Como puede
adivinar, esto devolverá la ID de lo marcado boton de radio. Y puedo guardar eso dentro de un número
entero. Por ejemplo, puedo decir yo comprobado botón.

Después de eso, puedo crear una declaración
de cambio similar basada en el botón marcado. Así que digamos que encienda el botón marcado.
Y vamos a crear nuestros casos, voy a copiar y pega los casos desde aquí. Ejecutemos la
aplicación. Y a ver si podemos ver alguno resultado. Como puede ver, no estamos haciendo clic en ninguno
de estos botones de opción, sino que simplemente vi el Marítimo que parece ser perfecto. En algunos
casos, es posible que necesitemos verificar el botón de radio marcado antes de hacer clic en ellos.
Voy a hablar de otros elementos de la interfaz de usuario en este video. Y eso se llama una barra de progreso.
Veamos rápidamente eso también.

Antes eso, voy a minimizar este grupo de radio. Después
de eso aquí abajo, digamos progreso barra, borrador de contenido y ajuste de contenido. Démosle
una identificación, digamos barra de progreso. Vamos también céntrelo, digamos centro y padre.
Y pasemos. Ejecutemos la aplicación. Y veamos cómo se verá nuestra aplicación
con esta barra de progreso.

Como tu puede ver, una barra de progreso infinita circula constantemente,
esto podría ser útil, por ejemplo, cuando estamos descargando algo de internet.
Para hacer nuestra barra de progreso visible o en visible, tenemos una opción. Por
ejemplo, en nuestro archivo XML, si lo queremos para no ser visible, podemos decir visibilidad.
Y podemos pasar. También tenemos esta visibilidad. atributo para casi todos los demás elementos de la interfaz de usuario.
Si queremos, podemos cambiarlo a desaparecido. Pero por defecto, es visible. Cambiémoslo de nuevo
a Bob. Más adelante en nuestro código Java, necesitamos cambiar esta visibilidad a visible
y cada vez que terminemos, vamos a para cambiarlo a ido. Veamos cómo podemos hacer
eso en nuestro código Java. Antes de todo, minimicemos todos los métodos y códigos adicionales.
Y vamos a instanciar nuestro progreso bar.

Aquí arriba, voy a decir barra de progreso
privada. Llamémoslo barra de progreso. Y luego aquí dentro del método onCreate, digamos que
la barra de progreso es igual a la vista de búsqueda por ID r.id dot barra de progreso. No tengo
ningún botón aquí para cambiar el visibilidad de esta barra de progreso. En su lugar,
voy a cambiar su visibilidad cada vez que el usuario hace clic en el botón de radio cantante
para conocer el estado civil del grupo de radio oyente dentro de la caja del interruptor, en caso de
que siempre sea único, en lugar de mostrar el mensaje del brindis o después del mensaje del brindis, voy
a decir visibilidad del conjunto de puntos de la barra de progreso.

Y puedo decir visible significa que cada vez que el
usuario hace clic en este botón de opción en Braille, Voy a cambiar la visibilidad de mi barra de progreso para que
desaparezca. Copiemos esta línea de código. Y después del mensaje del brindis. vamos a pegar
eso. Y cambiemos esta constante a Dios ver.com. Ejecutemos nuestra aplicación. En este momento no podemos ver ninguna barra de progreso porque
en nuestro archivo XML, hemos agregado la visibilidad atributo y hemos establecido el valor del arma en caso
de que si hacemos clic en este solo, puede ver que estamos viendo la barra de progreso.

En caso de
que haga clic en esto en una relación, usted Puedo adivinar que la visibilidad cambiará y desaparecerá.
También hay otra forma de progreso. bar. Veamos rápidamente eso también. Entonces, en mi archivo
XML de punto principal de actividad, puedo definir un estilo para mi progreso. Pero antes de eso,
voy a cambiar la visibilidad una vez más.

A visible para ver la barra de progreso en nuestra
vista previa. Y después de eso, digamos estilo. Si escribo horizontal, podemos ver este
estilo aquí widget punto appcompat ese progreso punto de barra horizontal. Cambiemos el ancho para que
coincida con las bandas para que podamos verlo mejor. Y también aquí tengo otra opción, puedo decir
progreso. Y puedo pasar un entero Por ejemplo, puedo decir 30, puede ver que el progreso
de esta barra de progreso ha cambiado a 30. Este tipo de barra de progreso es extremadamente
útil cuando desea mostrar el progreso de algo, por ejemplo, descargar un archivo. A
veces es posible que desee mostrar cuánto del archivo ha sido descargado.

También puede establecer
un máximo para su progreso. Por ejemplo, puede ver Max y puede pasar 100. También agreguemos
un margen izquierdo y derecho margen izquierdo de margen de 20 dP justo después de ntdp. Bien,
ahora volvamos a nuestro archivo Java. y vamos ver lo que podemos hacer con esta barra de
progreso. Antes de todo, voy a borrar estos dos líneas de código, porque no voy a hacer que
mi barra de progreso sea visible o no visible.

También minimicemos esta declaración de cambio
y todo este oyente para nuestro grupo de radio, después de instanciar nuestra barra de progreso,
voy a crear una amenaza. Si tu recuerdas desde la sesión de Java, esta es la forma más sencilla
en que podemos crear una amenaza. Digamos amenaza amenaza es igual a nueva amenaza, necesitábamos
pasar un ejecutable, digamos nuevo ejecutable. Dentro de este método de ejecución, voy a crear
un bucle for. Digamos que int i es igual a cero, i menos de 10, i plus plus, por cada
tiempo de bucle, voy a incrementar el progreso de esta barra de progreso por 10. Así que digamos
barra de progreso, el punto incrementa el progreso como puede adivinar, necesitamos pasar un número entero
aquí, por ejemplo, pasemos eso. Después que. Congelemos este hilo por medio segundo.
Si recuerdas de la sesión de Java, hemos usado de esta manera, dijimos thread dot sleep. Pero
de esta manera, hay una probabilidad de que creamos excepciones interrumpidas. Por ejemplo,
puede ver que tenemos un error aquí. Y el error dice que la excepción no controlada.
También hay otra forma en Android, soy voy a usar eso aquí.

Puedo decir que el reloj del sistema
dot sleep. Así que de esta manera, no necesitamos para crear un bloque try catch. Esto no estaba disponible
en Java, este reloj del sistema proviene de Android dot voice, puedes comprobarlo echando un vistazo
a estas importaciones. Este de aquí, Android dot o s that system collect es el que
acabamos de importar. Después de crear nuestro hilo, solo necesitamos comenzarlo, podemos hacerlo
después de la definición de nuestro comercio, podemos decir inicio de punto de hilo.

Así que aquí,
hemos creado este subproceso de trabajo en el que dentro que estamos creando un bucle for. Y por cada tiempo
de bucle, estamos incrementando el progreso de nuestra barra de progreso por 10. Además, después
de cada ciclo, estamos durmiendo el trabajador hilo durante medio segundo. Volvamos rápidamente a
nuestro archivo de diseño. y vamos a borrar este atributo de progreso era solo para demostración. Entonces,
si elimino este, puedes ver que el progreso cambiará a cero. Ejecutemos
la aplicación. Y a ver si podemos ver el progreso de nuestra barra de progreso. Como puede
ver, estamos cambiando el valor de este progreso. barra por cada medio segundo. Si quieres, también
puedes obtener el progreso de tu progreso. bar en cualquier momento que quieras. Por ejemplo, aquí
puede decir barra de progreso, no obtener progreso. Como puede ver, este progreso devuelve un número
entero que es el progreso actual de su barra de progreso. A veces puede necesitar
eso y así es como puede obtenerlo.

Bien, creo que es suficiente para este video. Una
vez más, como los videos anteriores, voy para cargar el código fuente en mi sitio web@maker.org comillas
oblicuas. Siéntase libre de comprobar que si usted necesita y también en el siguiente video. Por
último, vamos a hablar de las diferencias. entre un diseño relativo, un diseño de restricción
y también un diseño lineal. creo que va para ayudarlo mucho a comprender mejor los archivos de
diseño. Bien, nos vemos en el próximo video. En este video, hablaremos sobre diferentes diseños
en Android. Específicamente, haremos Hablaremos sobre el diseño relativo, hablaremos sobre el diseño
lineal y también sobre el diseño de restricciones. Comencemos hablando del diseño relativo.
Como antes, voy a cambiar a vista de texto en mi archivo de diseño. Minimicemos también
este asunto del proyecto. Y cambiemos esto diseño de restricción al diseño relativo.

También
voy a habilitar esta vista previa para que podemos ver lo que estamos haciendo. En primer
lugar, eliminemos este TextView. y comencemos desde el principio. Entonces, dentro del diseño relativo, todos nuestros
elementos de la interfaz de usuario son de alguna manera relacionados entre sí, significa que el lugar de cada elemento
de la interfaz de usuario es relativo a otro diseño, o tal vez su padre, creemos rápidamente
un TextView y veamos la relatividad en acción. Como antes, voy a decir envolver el
contenido para el ancho y el alto. también especificar un texto. Digamos hola mundo. Como puede
ver en este momento, TextView está colocado en la esquina izquierda de mi pantalla si quiero
puedo cambiar eso. por ejemplo has visto en los videos anteriores que puedo centrar este
TextView vertical u horizontalmente. Para eso Puedo decir centro horizontal. Pasemos, se
puede ver que se va centrando. Y esta es la relatividad de la que estaba hablando.
Cuando establecemos este centro de diseño horizontal atribuye a verdadero.

Estamos definiendo la relatividad
entre este TextView y su padre. Vamos también céntrelo verticalmente. O en lugar de estos
dos atributos, simplemente puedo decir centrado padre. También démosle una ID a este TextView.
Digamos txt Hola. Ahora si defino otro Elemento de interfaz de usuario, puedo colocarlo relacionado con
este TextView. Vamos a crear rápidamente un botón en aquí. Digamos envolver contenido y envolver contenido
para el ancho y alto. Definamos un texto. Como antes, digamos Saluda. Además, definamos
un ID. Ahora si quiero mover este botón debajo de este TextView, simplemente puedo decir el diseño
a continuación. Y pasemos el ID de nuestro TextView. txt Hola, también puedo centrar este botón. Por
ejemplo, puedo decir centrar horizontalmente. Y pasemos, también podemos tener un margen,
por ejemplo, podemos decir margin top margen superior del diseño y podemos pasar algún número,
por ejemplo, 15 db.

Dentro de un relativamente en también puede tener otro diseño relativo.
Veamos rápidamente que por ejemplo aquí, Voy a definir un diseño relativo y dentro
de ese diseño relativo, voy a poner tres vistas de texto. Después de eso, voy
a mover este TextView a este alto nivel dos debajo de ese diseño relativo. Entonces puedo ver el diseño
relativo. Por el ancho y alto. Digamos ajustar contenido, puede decir emparejar padre. Al igual que otros elementos
de la interfaz de usuario, podemos definir una ID para nuestro diseño relativo. Por ejemplo, puedo decir
primer diseño relativo. Así que hasta este punto, cuando queríamos crear nuestros elementos de interfaz de usuario después
de configurar los atributos, podríamos haber usado esta barra invertida para terminar de crear nuestros elementos
de interfaz de usuario. Pero en este caso, porque vamos a poner algunos otros elementos dentro de este
diseño relativo, necesitamos crear un etiqueta de apertura y en lugar de usar la barra invertida,
voy a usar el soporte de anclaje izquierdo. Al hacer eso, también creamos esta etiqueta final.

Y
dentro de esta etiqueta de apertura y finalización, ahora podemos poner nuestros elementos de interfaz de usuario. Por
ejemplo, podemos pasar nuestras vistas de texto, digamos TextView. Ajustar contenido ajustar contenido, voy a avanzar
rápidamente todo para estas tres vistas de texto. Como antes, podemos colocar correctamente nuestras dos vistas
de texto dentro de este diseño relativo. Para ejemplo, podemos moverlos a la derecha uno del otro.
Entonces, para esta segunda vista de texto, puedo decir a la derecha, digamos txt nombre, también agreguemos
un margen izquierdo de 10 dP. Similarmente para este tercer TextView, digamos que elimine nuestro
apellido txt y el margen izquierdo de tal vez 10 dP una vez más, una vez más, todo este diseño
relativo se coloca en la esquina izquierda de nuestra pantalla. Si queremos, podemos usar
los atributos centro vertical o centro horizontal para todo este diseño relativo también. Entonces, dentro
de la etiqueta de apertura de este diseño relativo, Puedo decir centro por ejemplo.

Y aceleremos, agreguemos
también un poco de margen superior, vamos decir margen superior. Y eso es más allá de 100
dP. Puedes ver que cuando uso estos atributos en un nivel de diseño relativo, todos los elementos de la interfaz
de usuario dentro de ese diseño relativo responden a esos atributos Por ejemplo, aquí hemos centrado horizontalmente
y también hemos añadido el margen. Ahora que tenemos este diseño relativo, podemos
minimizarlo para que podamos ver todo.

Mejor. Y después de eso, podemos mover este texto de
Hola debajo de este diseño relativo. Pero antes eso, necesito eliminar el atributo principal del centro.
Una vez más, puede ver que se mueve a la esquina de nuestra pantalla y debido a que hemos establecido
el diseño a continuación para este botón, se mueve también. Entonces, aquí puedo decir el diseño a continuación y
puedo pasar la identificación de mi pariente a la izquierda fue la primera capa relativa. Centrémoslo también
horizontalmente y dejemos algo de margen. Centro horizontal a través de la parte superior del margen,
digamos 10 db. Así que mi punto de estar aquí era que dentro de un relativamente en o dentro de
cualquier otro tipo de diseño, puede tener otros diseños relativos también.

Algunos de estos atributos,
por ejemplo, este diseño a continuación son específicos del diseño relativo. Y si estás dentro
de algún otro tipo de diseño, por ejemplo, un diseño lineal, y también un diseño de restricción,
no puede usar este diseño a continuación. Durante el Por supuesto, veremos que cada uno de estos atributos son
específicos del diseño relativo, antes de pase al siguiente tipo de diseños, cambiemos también
a esta vista de diseño.

En el panel izquierdo aquí, puede ver este componente tres, ya que se
aplica el nombre de este árbol de componentes. Esto aquí nos muestra la jerarquía de diferentes elementos
en nuestra interfaz de usuario. Así por ejemplo, aquí, tenemos este diseño relativo principal. Dentro
de eso tenemos este primer diseño relativo, y también txt, hola y btn. Hola. Dentro de nuestro
primer diseño relativo, tenemos tres texto puntos de vista. A veces, cuando tiene una interfaz de usuario
desordenada, puede usar este árbol de componentes para realizar un seguimiento de los diferentes elementos de la interfaz
de usuario. Bien, volvamos a nuestro TextView. y vamos empezar a hablar de diseño lineal. Antes
de eso, voy a borrar todos estos. Y cambiemos la estrategia de diseño a un diseño lineal.
Dentro de un diseño lineal, todos los Los elementos de la interfaz de usuario se colocarán línea
tras línea, veamos rápidamente que voy a definir una vista de texto.

Una vez más, ajuste el contenido y ajuste
el contenido. Pasemos el texto. Vamos a decir hola mundo una vez más. También vamos a darle una identificación.
Eso es un txt Hola. Así que lo primero que es diferente dentro de un diseño lineal es que
no tiene el centro en el Centro de Padres Atributos horizontalmente o centrados verticalmente cuando
utiliza un diseño lineal. por ejemplo, en aquí, no puedo decir centrar a los padres, pueden
ver que no está disponible. Si quieres centrar los elementos de la interfaz de usuario, puede tener,
por ejemplo, un diseño relativo dentro de este lineal diseño. Pasemos de esta parte.

Y agreguemos otro
elemento de la interfaz de usuario. digamos botón envolver contenido envolver contenido para el texto, digamos
Saludar. Y démosle una identificación, digamos btn. Hola,
se puede ver que a pesar de que no usé cualquier atributo para mover este botón a la derecha de
nuestro TextView, se coloca automáticamente en la derecha de nuestro TextView. Y eso es porque estamos
usando un diseño lineal.

Dentro de un lineal diseño, todos nuestros elementos de la interfaz de usuario
se colocarán uno tras otro. Si quieres puedes cambiar la orientación de este diseño lineal para que los elementos
de la interfaz de usuario se coloquen uno tras otro verticalmente Hagamos eso rápidamente. Entonces,
en la definición de mi diseño lineal, voy para pasar un atributo aquí, digamos orientación. Eso
es rápido vertical, puedes ver que ellos han sido colocados verticalmente.

También
hay otro atributo del que voy a hablar en disposición lineal. Eliminemos rápidamente
este botón. Y definamos otro TextView. Para el texto, digamos nombre. Y para la identificación,
digamos txt. Como antes, ¿tienes los márgenes Por ejemplo, puede decir margin top
y podemos pasar cualquier número que queramos. Pero también hay otro atributo aquí antes
de hablar sobre ese atributo, voy a para dar un poco de color de fondo a estos dos campos
de texto para que podamos ver la diferencia mejor. Entonces puedo decir fondo, y puedo pasar
un color, por ejemplo, este acento de color que tenemos en nuestro recurso de color.

También
establezcamos el color para el primer TextView. Digamos fondo, y aceleremos el color primario
de esta cosa. Entonces el atributo que Voy a hablar es esperar. Veamos rápidamente
que puede ver este diseño esperando aquí. Y podemos pasar cualquier número que queramos. Por
ejemplo, puedo decir 20. Pasemos también un peso. a este segundo TextView. Y hablaremos
de ello. Digamos Espera, ayunemos por ejemplo, probablemente pueda adivinar el uso de
este atributo de peso en este momento, lo hará dar peso a nuestro atributo según los números
que hayamos utilizado. Por ejemplo, en este caso, el ancho total de nuestro diseño
es 20 más 80, que es 100. Y dará el primer TextView 20% del peso de todo
el diseño. no importa que numero pones aquí. Por ejemplo, aquí dentro,
si digo dos y para el segundo, si digo ocho, funcionará igual. Además, puedes ver este
espacio aquí. Eso es porque nosotros tener este margen superior si lo eliminamos,
puede ver que todo el diseño se dividirá respectivamente. Así que esta tasa era otro atributo
del que iba a hablar. si cambio esta orientación a la horizontal, se puede ver
que está funcionando de la misma.

No hay mucho a este diseño lineal, solo quería mostrarle
que hay valor en su diseño con algunos atributos específicos, por ejemplo,
esta orientación y este peso. Y en este curso, no vamos a usar tanto el diseño lineal,
es para diseños simples, pero puede usalo si quieres. Antes de quitar todo esto,
voy a decir que dentro de un lineal diseño, también puede tener otros diseños, por ejemplo,
un diseño relativo o una restricción diseño. Bien, quitemos uno de estos. Y hablemos
del diseño de restricciones. Antes eso, voy a eliminar esta orientación porque
era específica del diseño lineal. Bien, digamos diseño de restricción. Tenemos dos
opciones aquí, restricción de visita y diseño de restricción de puntos de visa, este es
el que vamos a necesitar. Para esta restricción diseño, voy a cambiar a la vista de diseño
porque creo que es mucho mejor trabajar con la vista de diseño.

En primer lugar, voy a
habilitar el plano para que podamos ver el diferencia. Si hay alguno, puede hacer clic
en esta pila azul aquí y puede seleccionar este diseño más plano, hablaremos sobre la
diferencia entre este modo de diseño y este plano en un minuto. De acuerdo, para trabajar con
el diseño de restricciones, puede arrastrar su Elementos de la interfaz de usuario como antes puede arrastrar,
por ejemplo, un TextView. Y tan pronto como lo hice eso, puede ver que tenemos cuatro círculos en los cuatro bordes
de nuestro elemento de interfaz de usuario. Vamos amplíe un poco, puede ver que los cuatro círculos
están en los cuatro bordes de nuestro elemento de la interfaz de usuario.

Alejémonos un poco, solo
quería mostrarles los cuatro círculos. Además, los atajos que estoy usando aquí es Ctrl. Plus Plus
para acercar y controlar más o menos para alejar. También en cualquier momento,
puede usar Ctrl más cero para tener una ajustar pantalla. También vale la pena mencionar que
si tienes un teclado que tiene algunos números y las teclas de la calculadora, el más, el menos y
el cero de las teclas de la calculadora no son va a ser útil aquí.

Así que los atajos
solo serán útiles cuando estés utilizando los números superiores. Y también el más
y el menos superior. Lo más básico en un el diseño de restricción es para restringir los elementos de
la interfaz de usuario en este momento, puede ver que tenemos un área roja aquí. Del mismo modo, tenemos el
mismo error en nuestros componentes tres, dice que necesitamos restringir su elemento de interfaz de usuario.
Para restringir los elementos de la interfaz de usuario, debe puede arrastrar uno de estos círculos hasta, por ejemplo,
el borde de su pantalla.

Así que ahora mismo tenemos agregó una restricción, si volvemos a nuestro
TextView, puede ver que tenemos esto restricción aquí. Estoy hablando de estas
dos líneas de código aquí. Bien, volvamos a la vista de diseño, podemos agregar otra restricción. Por
ejemplo, para la restricción correcta de nuestro Elemento de interfaz de usuario, podemos agregar la restricción
al borde derecho de nuestra pantalla. Pero aún así esta restricción el diseño no es feliz.

Dice que no es una restricción
vertical, significa que necesitamos al menos agregue otra restricción aquí. Y ahora el
error se ha ido. Y se ha cambiado a alguna advertencia. Si desea centrar su elemento de
interfaz de usuario en el centro de su padre, debe puede agregar otra restricción, por ejemplo, desde la parte
inferior de este TextView hasta la parte inferior de la pantalla Si desea eliminar una de estas restricciones,
puede simplemente hacer clic en el círculo y puede presionar la tecla Eliminar,
puede ver que la restricción se eliminará. Presionemos Ctrl Z para rehacer eso. Si echas
un vistazo a esta pintura de atributos aquí, puede ver que tiene un control deslizante para
este TextView para diferentes restricciones.

Derecha ahora el número dice 50. Pero si quieres puedes
cambiar eso, por ejemplo, si te mueves un poco, puede ver que TextView responde en
consecuencia. Se moverá de acuerdo a este control deslizante. Similar a eso, tenemos este control
deslizante horizontal en el que puedes adivinar que puede mover nuestro elemento de interfaz de usuario. Por lo tanto, restringir
su elemento de interfaz de usuario a los bordes de la pantalla es una También puede agregar restricciones a otros elementos de
la interfaz de usuario. Por ejemplo, si tengo un botón aquí, agreguemos eso rápidamente y eliminemos
las restricciones de este texto ver todo de ellos. Vamos a moverlo para que podamos
ver todo mejor.

Aunque esto, si queremos podemos restringir este botón a, por ejemplo, la parte
inferior de esta vista de texto, podemos ver que se mueve en consecuencia. También puede ver que cuando
hago clic en uno de estos círculos, puedo ver todos los objetivos disponibles, por ejemplo,
puedo restringirlo a la derecha o My TextView a veces puede que no funcione, y es posible que desee agregar
eso una vez más. Entonces de esta manera, nosotros tiene restricciones con nuestro botón en la parte inferior
de este TextView, y también a la derecha de esta vista de texto. Si queremos que sea el centro, podemos
agregar otra restricción a la izquierda de este TextView. Y ambos elementos de la interfaz de usuario ahora
están centrados de alguna manera. Agreguemos también un margen para que podamos ver todo mejor. Entonces, al hacer clic
en uno de los elementos de la interfaz de usuario, puede ver que en el panel de atributos, podemos agregar
un margen.

Por ejemplo, desde arriba, vamos agregue 32. Si observa este componente aquí,
puede ver que no tenemos ningún error sobre este botón. Pero tenemos un error sobre
este TextView. Significa que tenemos todos las restricciones necesarias sobre este botón. Pero
necesitamos agregar algunas restricciones sobre esta vista de texto. Por ejemplo, necesitamos restringirlo
verticalmente o tal vez también horizontalmente. Como antes, podemos agregar las restricciones a ambos
bordes de nuestra pantalla.

Tú también puedes vea que cuando agrego la restricción, este botón también
se mueve, significa que no importa dónde este TextView es, queremos que nuestro botón
se concentre en este TextView. Agreguemos otro una. También agreguemos un margen superior para este
TextView también. Creo que 32 no es suficiente. Así que digamos 100.
Agreguemos también otro TextView. y vamos ver otros tipos de restricciones. Por lo tanto, restringir sus campos
de texto, por ejemplo, desde la parte superior de este TextView a la parte superior de este TextView. Y desde
la parte inferior de este TextView hasta la parte inferior de este TextView es una forma de tener dos vistas
de texto en la misma línea horizontalmente. También hay otra forma, voy a presionar Ctrl Z
dos veces para que podamos hacer las restricciones, podemos hacer clic con el botón derecho en uno de nuestros elementos de la interfaz
de usuario y podemos seleccionar esta línea de base para mostrar. Ahora puede ver esta línea de base, en lugar de agregar las
dos restricciones desde arriba y desde abajo, podemos seleccionar esta línea de base y podemos restringirla
a la línea de base de este TextView.

Este tiempo, una vez más, están en la misma línea
horizontalmente. Hagamos un poco de zoom. Para navegar por todo su diseño, puede presionar
la tecla de espacio y puede arrastrar tu mouse como si trabajas con Photoshop, tienes
la misma habilidad, puedes ver que ambas vistas de texto están en la misma línea horizontalmente
agregando alguna restricción a la línea de base Una vez más, la línea de base no está
disponible de forma predeterminada, puede hacer clic derecho, y puede seleccionar esta línea base de espectáculo. Alejémonos.
Así que hemos visto que podemos restringir nuestro elemento de interfaz de usuario para conocer ambos bordes de nuestra
pantalla. Pero, ¿y si queremos, por ejemplo, tener otra línea, por ejemplo, si queremos mover estos
TextView o restringir este TextView a algún otro espacio al lado de estos dos bordes. Para
eso, podemos hacer clic derecho en nuestro diseño. aquí abajo dentro de estos ayudantes.

Tenemos
estas pautas agregar una guía vertical y agregue una guía horizontal, puede adivinar que cada
uno de estos creará una línea. Por ejemplo, agreguemos una guía vertical. Hagamos un
poco de zoom para que podamos ver mejor, puede ver que esta línea se ha agregado a nuestro
diseño, podemos moverla, por ejemplo, podemos moverlo a la derecha de nuestra pantalla. Tan
pronto como hice eso, puedes ver que nosotros tiene algún margen desde el lado izquierdo de nuestra
pantalla, puede ver este triángulo aquí. Si hago clic en eso, cambiará el margen de izquierda
a derecha de nuestra pantalla. Algunas veces esto podría ser útil también. En este momento, la
restricción de este TextView es el borde de nuestra pantalla, eliminemos rápidamente la restricción
izquierda de este TextView. Y si queremos, podemos agregar esta restricción a esta guía, por
ejemplo, podemos agregarla aquí. Algunas veces una vez más, puede que no funcione. Puede ver la
diferencia de las restricciones de TextView ahora a esta directriz en lugar del borde de nuestra pantalla.
Si quieres puedes restringir esto TextView a esta guía también.

Pero antes de eso,
debemos eliminar esta restricción de línea base. Eliminemos eso rápidamente, lo siento, eliminé
todo el TextView y limitémoslo. a esta pauta y también al borde de nuestra
pantalla. Si quieres también puedes tener varias pautas, agregaremos otra en un segundo.
Entonces, por ejemplo, puedo una vez más haga clic derecho en los diseños. yendo a estos
ayudantes. Puedo agregar otra guía vertical. Podemos ver que esta pauta se ha agregado
y puedo usarla como la usé primero. guía. También tenemos una guía vertical. En nuestros
ayudantes, podemos agregar este horizontal guía. Podemos adivinar que agregará una guía horizontal.
Una vez más, tenemos este triángulo. aquí, si hacemos clic en eso, cambiará los
márgenes de arriba a abajo. también restrinja este TextView a nuestra guía.
A veces, cuando trabajas con diferentes Elementos de la interfaz de usuario en un diseño de restricción,
agregar algo de resistencia a la espuma puede ser difícil. Para ejemplo, aquí, no tenemos mucho espacio. Para ello,
podemos seleccionar los dos elementos que queremos agregar restricciones, por ejemplo, este
TextView.

Y esta pauta, puede seleccionar varios elementos de la interfaz de usuario presionando la
tecla de control. Después de haber seleccionado ambos de ellos, puede hacer clic derecho, puede ir a
esta restricción aquí, queremos restringir nuestro TextView al cual es el ID de este TextView
a nuestra guía, así que voy a decir top dos, digamos al final de nuestro árbol guía. De esta
manera, podemos agregar la restricción a veces donde no hay mucho espacio para trabajar, puede
usar el menú contextual seleccionando esta restricción, puede agregar la ruta de restricción
requerida para eso, una vez más, debe seleccionar la ruta de los elementos que
desea.

Por ejemplo, esto te lleva a este guía. O si desea agregar la restricción de
este TextView a este botón, por ejemplo, puede seleccionar este TextView y este botón. En este
momento, si ha establecido la restricción izquierda de este TextView a esta guía, también podemos
mover esta guía, por ejemplo, podemos muévalo en consecuencia a la derecha y a la izquierda,
puede ver que una vez que eliminé esta guía, los elementos de la interfaz de usuario también se mueven.

Pero
dependiendo de su sistema, esta operación aquí podría ser lento porque, como puede ver, estamos rastreando la respuesta
en vivo de nuestros elementos de la interfaz de usuario. Si lo desea, puede deshabilitar esta representación en vivo,
puede ir a este ícono aquí. Y tu puedes desmarque esta representación en vivo. Hagamos un
poco de zoom. Ahora bien, si muevo esta directriz, puede ver que los elementos de la interfaz de usuario
no se mueven.

Pero podemos ver el contorno de cada elemento de la interfaz de usuario. Entonces, en algunos
casos, cuando no tiene todos los recursos necesarios, por ejemplo, una gran cantidad de memoria RAM, puede deshabilitar
esta representación en vivo. Pero en aquí, puede ver la diferencia entre este modelo
y también esta vista de diseño, puede ver que cuando moví esta guía, los elementos de la interfaz
de usuario dentro de la vista de blueprint son moviéndose en consecuencia. Y eso se debe a que la vista de
planos no muestra nuestros elementos de la interfaz de usuario. en absoluto.

Es solo un modelo de todos nuestros elementos de
interfaz de usuario. Más adelante, cuando añadimos algunos vista de imagen a nuestro diseño, veremos la
diferencia mucho mejor. Bien, sigamos adelante de esta parte A veces, cuando crea sus archivos de
diseño, es posible que desee tener algunos datos de muestra, o como podríamos llamarlo en programación, es posible
que desee tener algunos marcadores de posición. Para ejemplo, en este momento, el marcador de posición para este
TextView es esta vista de texto. Si queremos, nosotros podemos cambiar eso, podemos hacer clic derecho en nuestro
elemento, podemos ir a este conjunto de datos de muestra. Y podemos seleccionar algún texto, podemos ver que
tenemos estas ciudades, por ejemplo, cambiará el texto de nuestro TextView a Shanghai,
por ejemplo. Veamos otros. Por ejemplo. Otro la opción popular es esta fecha aquí, puede ver
diferentes formatos, podemos seleccionar eso y podemos tener algunos datos de muestra sobre
la fecha.

El otro es lorem ipsum. Si usted busque en Internet un texto de muestra, probablemente
obtenga este texto de lorem ipsum. Vamos seleccione eso. Y podemos tener un texto de muestra.
Y de acuerdo a eso, podemos tener este texto en nuestro diseño, también tenemos el texto Lorem.
Veamos rápidamente eso. Entonces, en lugar de Lorem aleatorio, podemos seleccionar
este Lorem, que es básicamente este Lorem texto. Antes de terminar este video, veamos también
los datos de muestra para esta vista de imagen también. Sé que no hemos hablado de la visualización
de imágenes hasta ahora en el curso, pero lo haremos hablar de eso en el siguiente video, podemos arrastrar
alguna vista de imagen a nuestro diseño. Primero necesitamos establecer algunos datos de muestra para nuestra
vista de imagen. Por ejemplo, podemos seleccionar de los avatares. Ahora mismo este es el avatar que por
defecto hemos seleccionado para nuestras imágenes. Si lo desea, puede cambiar eso haciendo clic derecho
y establecer algunos datos de muestra, podemos seleccione otro avatar o podemos seleccionar
uno de estos por ejemplo este fondo.

Vamos seleccione otro avatar. Por ejemplo, este como
antes puede restringir esta vista de imagen por ejemplo, a ambos bordes de su TextView. Hagamos
eso rápidamente. si echas un vistazo en la pintura de atributos aquí, puede ver que para
el ancho del diseño, hemos establecido el ancho a contenido, podemos cambiar eso, por ejemplo,
podemos decir restricción de coincidencia. Cuando hacemos eso, el ancho de nuestra vista de imagen cambiará
de acuerdo con su restricción principal, que es este TextView en este caso. Pero también
hay otra diferencia cuando cambiamos este ancho de diseño para que coincida con la restricción.
Cuando hacemos eso, si miras más de cerca aquí, dentro de este widget de restricción, puede ver
que tenemos esta línea aquí.

Hagamos clic en ese. Y una vez que hago eso, pueden ver que esta
proporción aquí se ha agregado. Es útil para cuando quieres mostrar algunas imagenes
de internet, cuando no sabes el tamaño o la proporción de su imagen. En este momento, la
proporción es de uno a uno, si quieres, puedes cambie eso, por ejemplo, puede decir uno a dos,
puede ver que ahora la proporción tiene ha cambiado, o digamos dos a uno, la proporción de
nuestra vista de imagen responde en consecuencia. Además, tiene la misma opción de arriba en aquí
ID de restricción de diseño, que puede cambie esto a 212.

Una vez más, uno a uno. También
sepa que ha utilizado esta vista de imagen, puede ver la diferencia entre este plano y esta
vista de diseño, puede ver que en la vista de plano, no estamos renderizando la vista
de imagen. Y en la vista de blueprint, no están representando nuestro diseño. Es muy útil
cuando se trabaja con diseño de restricciones, especialmente si no tienes los recursos
necesarios. Por ejemplo, si no tiene gran cantidad de RAM, siempre puede ir a este
ícono de pila azul.

Y puedes seleccionar este plano para que solo tengas el plano. Bien, creo
que es suficiente para este video. en el siguiente vídeo. En primer lugar, vamos a trabajar
con este elemento de vista de imagen. Ver usted en el siguiente video. En este video vamos a hablar de imágenes
en Android, y creo que será un video corto Como siempre, volvamos a nuestro
archivo de diseño. Y cambiemos esto diseño de restricción a un diseño relativo. Puedes seguir
trabajando con el diseño de restricciones, estoy simplemente más cómodo con este diseño relativo.
En primer lugar, voy a eliminar este TextView. Y vamos a crear nuestra vista de imagen. Esta vez, en
lugar de envolver contenido o archivar en masa para el ancho y el alto, voy a poner algún número
por ejemplo, voy a decir 150 db. En este momento, no puede ver ninguna imagen en su archivo
de diseño en esta vista previa porque no no tiene ningún marcador de posición. Pero puedes
ver el contorno de tu imagen. Si quieres tiene algún marcador de posición, puede decir
algo como esto, puede decir source this src.

Y puede agregar una imagen secundaria de su proyecto.
Por defecto, tiene algunas imágenes en su proyecto. Por ejemplo, en su carpeta de controladores, tiene
este fondo del lanzador IC. seleccionemos eso, por ejemplo. Y tan pronto como seleccione
eso, puede ver que podemos ver este verde imagen en nuestra vista previa. Más adelante, hablaremos
sobre esta carpeta de controladores y otras carpetas. que están relacionados con imágenes en proyectos de Android.
Así que esto va a ser un marcador de posición. Y si lo desea, podemos cambiar esta imagen más adelante en nuestro
archivo Java. También vamos a darle una identificación a nuestra vista de imagen. Digamos ID, vamos a nombrarlo
como una imagen. Vamos a moverlo también al centro. de nuestro camino. Digamos que centra a tu padre y a través.
Así que cuando tengamos la dirección de esto imagen, hemos utilizado este controlador de aplicación,
lo que significa que esta imagen es el fondo del lanzador IC vive en nuestra carpeta de controladores.

Si echa
un vistazo al panel de su proyecto, en Recursos carpeta, hemos visto la carpeta de diseño en la que
tenemos este archivo XML de punto principal de actividad. Pero además de eso tenemos esta carpeta de controladores. Dentro
de esta carpeta de controladores tenemos algunos XML archivos también. Entonces, si observa este
fondo del lanzador IC, puede ver que tener este archivo XML que al final da como resultado
esta imagen, o para ser específicos, es este dibujable. Dentro de este archivo XML, tenemos algunos elementos
como la ruta del vector y todo. no te preocupes sobre ellos todavía. Hablaremos de ellos más adelante
en el curso, pero al final, el resultado de este archivo XML es este controlador aquí. Si lo
desea, puede agregar otros controladores en su carpeta del controlador también. Por ejemplo, si hace
clic derecho en la carpeta de su controlador seleccionando nuevo recurso de vector o recurso de imagen dependiendo
de su necesidad, puede agregar nuevos controladores. Vamos seleccione este nuevo recurso de imagen. Aquí en primer
lugar, podemos seleccionar el tipo de nuestra imagen. en este momento. Son íconos del iniciador, si lo
desea, puede cambiar eso.

Por ejemplo, puedes vea la barra de acción y toque los iconos. Entonces, básicamente,
esto puede agregar algunos íconos a su proyecto. En primer lugar, debe nombrar su icono. Este
va a ser el nombre que más adelante, pasarás a tus imágenes, por ejemplo, tu
vista de imagen, puedes ver que tenemos pasó este fondo del lanzador IC. Ese nombre
viene de aquí. IC significa icono. Es la convención para nombrar sus iconos con este IC.
Así que digamos que veo alarma. Por ejemplo, en Android Studio, tienes algunos iconos. Por ejemplo,
si hace clic en este icono aquí, este icono de Android aquí, puede ver la imagen prediseñada,
puede ver que hay todo tipo de iconos, y puedes usar el que quieras. Observe también
que estos iconos están disponibles bajo esta Licencia de Apache, así que asegúrese
de verificar eso antes de usarlos en su proyecto. Debido a que he llamado a este icono alarma Ico,
voy a seleccionar una de estas alarmas. Por ejemplo, este, seleccionemos ok. Y aquí, probablemente
puedas ver el ícono, es de alguna manera vacío. Si lo desea, puede cambiar el color abriendo este
menú desplegable y seleccionando un personalizado color.

Por ejemplo, pasemos en negro. Ahora puedes ver mejor la alarma. También tenga en
cuenta que hay varios tamaños de este icono. Y eso es porque en diferentes tamaños de pantalla,
el sistema Android va a seleccionar uno de estos tamaños. Por ejemplo, si es una pantalla de
mayor tamaño con una tarifa de pizza grande, seleccione una de estas imágenes más grandes similar
a esa si su aplicación se va a ejecutar en un dispositivo de tamaño de pantalla más pequeño, el sistema
Android seleccionará uno de estos iconos más pequeños.

Bien, seleccionemos Siguiente desde aquí. Una vez más,
puedes verlo en tu carpeta de Recursos. dentro de la carpeta del controlador, múltiples imágenes,
múltiples archivos de controlador con múltiples calidades será añadido. Y también puede ver el archivo de
salida, este será el archivo XML cuando usted crea su archivo de controlador. Básicamente
esto al final va a crear ese icono de alarma. Hagamos clic en finalizar aquí. Y si echas un vistazo
a la carpeta de tu controlador, ahora puedes Fíjate que tenemos esta alarma helada, que una
vez más se presenta con cinco calidades diferentes.

Ahora, en nuestro archivo XML de punto principal de actividad,
en lugar de pasar este fondo del lanzador IC, puede pasar IC Allah. Entonces, de esta manera, al agregar
algunos derivados en la carpeta de su controlador, puede agregue algunas imágenes a su proyecto. Del mismo modo,
puede agregar algunas imágenes en sus mipmaps carpeta también. En este momento tenemos algunas imágenes
aquí, por ejemplo, tenemos este lanzador IC. Y también tenemos este lanzador IC alrededor del cual
al final crearemos un ícono alrededor. Si desea agregar algunas imágenes adicionales a
su proyecto, por ejemplo, digamos su computadora, puede agregarlos a esta carpeta de magma.

Por ejemplo,
he preparado este archivo PNG, yo puede copiar que eso es una copia. Y en mi carpeta
micpa, puedo pegar eso. Seleccionemos el directorio. Y también vamos a nombrar nuestro archivo. También
es muy importante tener en cuenta que cuando usted están importando algunas imágenes a nuestro proyecto,
el nombre de su archivo de mapa, el nombre de su El archivo PNG o JPG no debe tener espacios.
Y también para el caso, no deberían haber cualquier caso incómodo. Así que el nombre aquí creo que
está bien. Presionamos Aceptar. Y como puedes ver, este maker dot png se ha agregado a mi carpeta de
mapa principal. Ahora que tengo esta imagen en mi proyecto, puedo abordar eso desde dentro del archivo
XML del punto principal de la actividad. Por ejemplo, aquí en lugar de decir iclm, puedo decir yo.
Pero debido a que hemos agregado ese archivo en nuestra carpeta de mapas, estamos recibiendo una advertencia
roja porque estamos diciendo como conductor. Para eso Voy a borrar todo esto.

Y voy a decir agregar
mapa. Y puedo agregar este maquillaje, podemos ver que el logotipo se ha agregado a nuestro
proyecto con éxito. Hasta ahora, tenemos Agregamos estas imágenes y controladores en nuestro proyecto
en esta vista de Android. Revisemos también el vista del proyecto. Y veamos si también podemos ubicar
diferentes imágenes en la vista del proyecto. Entonces puedes adivinar que está en nuestra carpeta de aplicaciones
dentro de la carpeta de fuentes. Dentro de la principal carpeta dentro de la carpeta Recursos, podemos ver todos
estos controladores y carpetas mipmap. Una vez de nuevo, cada uno de estos va a responder
a la calidad de la pantalla del usuario dispositivo.

Entonces, por ejemplo, si queremos ubicar
este macro dot png porque era de alta calidad image, creo que estará dentro de esta semana map
x x hdpi. Como puedes ver, está aquí. Pero si quieres tener una aplicación que responda
a cada uno de los tamaños de pantalla y las cualidades de la pantalla correctamente, necesitas
crear imágenes para cada una de estas cualidades y añádelos a tu proyecto. En este momento,
si observa, por ejemplo, este mdpi, se puede ver que dentro de esta carpeta,
no tenemos ningún macro dot png, no va causar ningún problema para mostrar las imágenes
en diferentes tamaños de pantalla.

Mientras como hay una imagen con el fabricante de
nombres dot png, le mostrará algo al usuario, pero puede causar una mala experiencia de usuario.
Bien, volvamos a nuestra vista de Android. Y hablemos de cómo puedes cambiar el icono
de tu aplicación. Pero antes de eso, vamos a ejecutar rápidamente la aplicación. Y veamos
cuál es el icono actual de nuestra aplicación. Ahora mismo puedes ver que el nombre de esta aplicación
es imágenes. Y si echas un vistazo en la lista de sus aplicaciones en su dispositivo,
puede ver que el logo de estas imágenes es este ícono redondeado de Android.

Este es el icono
que hemos visto dentro de nuestra carpeta de mapas MC. Entonces, si echa un vistazo a su carpeta de mapas, luego aquí tenemos esta ronda de lanzamiento
de IC, que es este ícono, que al final ser de alguna manera redondeado. Y si desea cambiar
eso, puede ir a su carpeta de manifiesto, puede Puede ver que tenemos este manifiesto de Android
en ese archivo XML. Si hace clic en eso, puede ver información general sobre su aplicación. mas
tarde. Hablaremos de este manifiesto. archivo y también otros archivos XML en su proyecto.
Pero por ahora, puedes ver que dentro de este etiquetas de aplicación, tenemos dos atributos este
icono y también este icono redondo. Ambos están abordando el ícono del iniciador IC por ahora,
si lo desea, puede cambiar eso, por ejemplo, en los dispositivos que no vas a mostrar alrededor
del icono, puedes cambiar esto, vamos cambie rápidamente este y abordemos nuestro maquillaje.
Del mismo modo para el icono redondo, Voy a pasarme pero vamos a ejecutar la aplicación.
Y a ver si hemos cambiado el icono exitosamente.

Si echa un vistazo a la lista de
sus aplicaciones, una vez más, puede vea que el icono de esta aplicación de imágenes ha
sido cambiado. Está bien, creo que es suficiente. para este vídeo. En el siguiente video, vamos
a comenzar a trabajar en la vista de lista y también un hilandero. Entonces, en el siguiente video,
vamos a mostrar cómo podemos tener una lista de diferentes elementos. Nos vemos en el próximo vídeo. En este video, vamos a hablar sobre cómo podemos
mostrar una lista de diferentes elementos en nuestra aplicación. Por ejemplo, al menos tener
diferentes ciudades o al menos tener diferentes estudiantes. Para eso, antes que nada, voy a empezar
hablando de ListView. Vista de la lista es una de las opciones que podemos usar para mostrar
una lista de diferentes opciones. Para eso, en primer lugar, voy a cerrar este archivo java por
ahora dentro de mi archivo XML, en primer lugar todo, voy a eliminar este TextView. Y después
de eso, voy a cambiar esta restricción. diseño a un diseño relativo.

Si lo desea, puede
trabajar con un diseño de restricción, pero estoy más cómodo con el diseño relativo. Después
de eso aquí abajo, voy a decir vista de lista. Para el punto de vista de la oferta. Esta vez voy
a decir emparejar padre. Y tan pronto como lo haga, puede ver eso aquí en nuestra vista previa, podemos ver
una lista de diferentes elementos en nuestra pantalla.

Estos son solo algunos datos de muestra que indican
que vamos a utilizar un ListView. También estoy vamos a agregar un margen superior, digamos margen
superior. Y digamos 100 dP, también demos una identificación Pero antes de eso, si miras más
de cerca aquí, no estoy seguro de que puedas vea esta barra de desplazamiento en el panel izquierdo aquí,
pero indica que podemos desplazar nuestro ListView en caso de que todos nuestros artículos no quepan en
la pantalla. Así que si tenemos una gran cantidad de artículos, podemos desplazarnos sobre nuestra vista de lista.
Bien, démosle una ID a nuestra vista de lista. Digamos IDENTIFICACIÓN. Voy a llamarlo cities ListView o
cities list. Y creo que eso es suficiente para ahora. Volvamos rápidamente a nuestro archivo
Java e inicialicemos esta vista de lista. Como antes, aquí voy a decir vista de
lista privada. Llamémoslo ListView o Vamos a nombrarlo lista de ciudades. aquí abajo
dentro del método onCreate voy a decir la lista de ciudades es igual a buscar vista por ID. Además,
si ha notado que estoy usando un atajo para esta vista de búsqueda por método de ID.

En lugar de escribir
todo el método, estoy usando el acceso directo de FB. Si presionas Enter o tabuladores obtendrás el método
completo hablaremos de estos disponibles accesos directos en IntelliJ y Android Studio más adelante
en el curso. Bien, pasemos la dirección. de nuestro ListView, digamos our.id dot cities list.
Después de eso, necesitamos crear los datos. que queremos mostrar en nuestra vista de lista.
Por ejemplo, aquí, voy a crear un ArrayList de diferentes cuerdas. Y más adelante, lo pasaré
al ListView de esta ciudad. Para eso, Voy a decir ArrayList. Este de aquí, de diferentes
hilos, llamémoslo ciudades, es igual a nueva ArrayList. Y después de eso,
agregaré algunas ciudades a esta matriz. lista, digamos que las ciudades no se suman. Y agreguemos
algunos elementos. Aquí, estoy agregando todas estas ciudades a la lista de
matriz de mi ciudad manualmente.

Pero en la mayoría casos, la lista de sus objetos provendrá del servidor
web o tal vez de su base de datos. Porque no hablamos de estas cosas todavía.
Vamos a codificarlos y estamos vamos a pasarlos manualmente a nuestro ArrayList. Bien,
después de proporcionar tus datos, necesitas para pasar estos datos a su ListView. Pero antes
de eso, debe crear un adaptador. El propósito del adaptador es buscar los datos en su ListView.
Veamos rápidamente cómo podemos crear nuestro adaptador. Hay varios tipos de adaptadores,
pero el que voy a usar aquí es este adaptador de matriz. Este es el más
simple, y vamos a trabajar con eso en aquí. Digamos un adaptador de matriz de tipo cadena.
Llamémoslo adaptador de ciudades. eso es igual al nuevo adaptador de matriz. Dentro de los paréntesis
de este adaptador de matriz, necesitamos tres cosas. En primer lugar, necesitamos un contexto, que
voy a pasar esto más adelante en el curso, Hablaremos del contexto.

Pero aquí, porque estamos
dentro de una actividad, estoy hablando de esta actividad principal y las actividades son contexto.
Así que este de aquí va a funcionar bien. Entonces, al pasar esto, estamos pasando nuestra actividad
principal como contexto. no te preocupes por eso todavía. Hablaremos sobre el contexto más adelante
en el curso. Después de eso, tenemos que pasar un archivo de diseño para cada elemento en nuestra vista
de lista.

Entonces, por ejemplo, si va a mostrar el nombre de una ciudad, necesitamos un diseño para esa ciudad
en nuestra vista de lista, podemos crear nuestro personalizado diseño, pero aquí voy a usar uno de los
diseños incorporados. para eso voy para decir Android dot r dot layout dot, digamos elemento
de lista simple. Así que básicamente, esto es un archivo de diseño incorporado que podemos usar
para mostrar diferentes ciudades en nuestra lista vista.

Después de pasar el contexto y también el archivo
de diseño para cada elemento, también necesitamos para pasar los datos. En este caso, necesitamos pasar la
lista de arreglos de la ciudad. Así que digamos ciudades aquí Y ahora tenemos nuestro adaptador para nuestro
ListView. Una vez más, el propósito de este adaptador es obtener los datos, en este caso, el ArrayList
de esta ciudad en nuestro ListView. Después creando su adaptador, puede decir el adaptador de conjunto
de puntos de la lista de la ciudad, y puede pasar su adaptador, digamos el adaptador de la ciudad. antes
de ejecutar la aplicación, repasemos rápidamente lo que estamos haciendo aquí. En primer lugar, hemos
creado nuestro ListView dentro de nuestro diseño. expediente. Después de eso, lo hemos inicializado dentro de
este método onCreate aquí. Después de eso nosotros Hemos preparado nuestros datos en este caso, hemos
creado este ArrayList simple de diferentes cadenas llamadas ciudades. Después de eso, hemos
creado un adaptador para obtener estos lista de matriz de ciudades a nuestra vista de lista.

Y
después de crear el adaptador, lo hemos pasado a nuestra vista de lista. Ejecutemos rápidamente nuestra aplicación.
Y veamos si podemos ver estos artículos en nuestra vista de lista. Como puede ver, hemos creado esta
vista de lista y también hemos rellenado los datos que hemos pasado en nuestro ArrayList. Además, si
tuviéramos más datos que no encajarían en el pantalla, el ListView sería una visualización desplazable
de aquí para cada elemento es este simple este artículo que hemos pasado aquí.
Si quieres echarle un vistazo puedes presione la tecla CTRL en Mac, debería ser la tecla
de comando.

Y haciendo clic en el símbolo elemento de la lista uno puede comprobar el archivo de diseño.
Puede ver que es una vista de texto simple con algunos atributos. Nada especial aquí. También puede hacer
que sus elementos se puedan hacer clic a la derecha ahora, si hace clic en un elemento, no pasa nada. Pero
puede establecer un oyente para cada uno de estos artículos. Veamos rápidamente eso. Entonces, después
de pasar el adaptador aquí, puedo decir ciudad Lista conjunto de puntos en el elemento, haga clic en el oyente este.
Y puedo pasar mi interfaz, puedo decir nuevo en oyente de clics de elementos.

Tenga en cuenta que es la vista del adaptador.
En el elemento, haga clic en el oyente, es diferente desde el oyente de clics. Cuando pasamos esta interfaz,
tenemos este método de clic en el elemento en el que tiene algunas entradas. El que
nos interesa es esta posición aquí. Básicamente, esta será la posición de nuestro
elemento en nuestro ListView. vamos rápido ver cómo podemos usar eso. Por ejemplo, aquí voy a
mostrar un mensaje de brindis después de hacer clic en cada uno de los elementos. Una vez más, cuando creamos
nuestro mensaje de brindis, en primer lugar, tenemos que pasar un contexto. Porque estamos dentro
de este método de clic en el elemento que existe en otra interfaz, no podemos simplemente pasar esto,
necesitamos pasar la actividad principal punto esto para referirse a nuestro contexto.

Después de pasar el
contexto, podemos pasar nuestro texto para el texto aquí voy a decir las ciudades no consiguen.
Y para el índice aquí, puedo pasar esto posición. Entonces, de esta manera, obtendremos el nombre
de la ciudad en la que hemos hecho clic. Nosotros están usando esta posición como índice para obtener
el nombre de ciudad apropiado de nuestro ArrayList de ciudades. Además, si ha notado cuando
uso estas ciudades dentro de este artículo método de clic, esta última palabra clave se ha
agregado a la declaración de ArrayList.

Como un recordatorio de la sesión de Java, cuando agrega
una palabra clave final en la declaración de una variable o un objeto, esa variable o la
instancia de ese objeto sería constante, significa que no puede cambiar esa instancia. Pero
aunque no podemos cambiar la instancia de estas ciudades, después de declararlo como final,
podemos usar todos los métodos dentro de ese objeto.

Por ejemplo, podemos usar este método de agregar
puntos, porque estamos usando el ArrayList de esta ciudad dentro de este método de clic en el elemento que existe
en otra interfaz, ArrayList de la ciudad necesita ser constante. Y esta palabra clave final
se ha agregado automáticamente. y si quito ahora mismo desde aquí, puede ver que estamos
obteniendo este error aquí. y eso dice que su variable debe ser constante. Así que agreguemos
la palabra clave final una vez más. Además, agreguemos otro texto aquí, digamos más
seleccionado.

Bien, vamos a ejecutar la aplicación. una vez más. Y veamos si hemos configurado el detector
de clics de elemento con éxito. Entonces ahora si hacemos clic en uno de los elementos dentro de nuestra vista
de lista, por ejemplo, esta Nueva York, puede vea el mensaje de brindis aquí, Nueva York seleccionado Berlín
Berlín seleccionado. Está bien, parece que nuestro detector de clics en el elemento funciona bien. Una
vez más, este detector de clics en el elemento es diferente del onClick. oyente. Si configura
el onclicklistener en su ListView, no va a funcionar de acuerdo con cada elemento
de su ListView.

Bien, creo que eso es basta de hablar de ListView. Puede evitar
ListView, si lo desea. Pero yo no sugiero que debido a que en Android tenemos soluciones
modernas para completar una lista de diferentes opciones Por ejemplo, tenemos RecyclerView,
que tiene muchas flexibilidades. Si lo tomas un vistazo a su archivo de diseño dentro de la vista de diseño,
puede encontrar un ListView en algún lugar dentro este legado. Puedes ver eso aquí. Y está dentro
de este legado porque en estos días, casi nadie usa ListView. Solo quería mostrar
cómo se puede crear un ListView. los La razón por la que puede querer evitar el uso de ListView
es que ListView no tiene mucha flexibilidad. Por ejemplo, no puede personalizar el diseño de
cada elemento en su vista de lista. puedes crear un diseño personalizado para cada artículo. Pero desde el
punto de vista del reciclador, tiene muchas más flexibilidades. Y también, la otra cuestión es sobre el rendimiento.
Si tiene una gran cantidad de datos que desea mostrar en una lista, por ejemplo, si
tiene 1000 elementos.

En esos casos, Ud. vea el problema de rendimiento cuando trabaja
con ListView. Recycler View ha hecho mucho mejor trabajo cuando se trata de rendimiento. Hablaremos
de la vista del reciclador en uno o dos vídeos de ahora. Pero pasemos de esta parte.
El otro diseño para eso voy para hablar se llama spinner. Veamos rápidamente
que voy a definir mi spinner arriba este ListView. Así que aquí, digamos una ruleta.
Para el ancho, misma altura. Esta vez, vamos decir envolver contenido. Centrémoslo horizontalmente
y también agreguemos un margen superior. Centro horizontal a través de la parte superior del margen, digamos
50 dP.

En este momento no puedes ver tu rueda giratoria dentro de esta vista previa muy bien. Y eso
es porque no tienes ningún dato dentro de tu hilandero todavía. Básicamente, esto es El ganador va a crear un menú desplegable.
Por ejemplo, si hace clic en esto, verá ver una lista de diferentes opciones. Lo veremos
en acción en un minuto. Pero por ahora vamos simplemente pase una identificación para nuestra ruleta. Digamos
una lista de estudiantes o una ruleta de estudiantes, es un mejor nombre Además, movamos nuestro ListView a continuación,
este ha sido un diseño a continuación. Y pasemos el ID de nuestro spinner. Inicialicemos nuestra
ruleta en nuestro archivo Java. Como antes, Voy a subir aquí y decir, hilandero privado.
Llamémoslo spinner de estudiante.

Y luego aquí dentro del método onCreate, no puedo
inicializar eso. vamos a ver estudiante spinner es igual a encontrar la vista por punto de ID, digamos
un spinner de estudiante. Una vez más, como el ListView, en primer lugar, necesitamos crear
la lista de elementos, los datos que queremos mostrar en nuestra ruleta. Para eso voy a crear
otro ArrayList aquí. Entonces vamos diga una lista de arreglos de diferentes cadenas. Llamémoslo
los estudiantes es igual a la nueva ArrayList. Después de eso, pasemos los datos a este estudiante
ArrayList. Similar a cuando estamos trabajando con vistas de lista. Después
de proporcionar nuestros datos, también debemos crear un adaptador. Una vez más, el propósito
de este adaptador será obtener el datos en nuestro control giratorio, podemos crear nuestro adaptador
como lo hicimos para ListView. Así que aquí Puedo ver un adaptador de matriz de diferentes cadenas. Vamos
a nombrarlo el adaptador de estudiantes es igual al nuevo adaptador de matriz. Como antes, dentro de
este paréntesis, necesitamos tres elementos. Primero sobre todo, necesitamos el contexto.

Después de eso, necesitamos
diseñar cinco para cada artículo en nuestro pantallazo. Una vez más, puede crear su archivo
de diseño personalizado si lo desea. Pero en aquí, en aras de la simplicidad, voy a usar
uno integrado. Así que digamos Android dot r dot layout dot la fuente de diseño que
voy a usar esta vez es así de simple elemento desplegable giratorio. Cuando creamos el
adaptador para ListView.

Hemos usado este simple artículo de la lista Vaughn. Pero aquí vamos a utilizar
este simple elemento desplegable giratorio. Después de eso, una vez más, necesitamos nuestros datos
que voy a pasar a mis alumnos que di a conocer. Después de crear su adaptador, puede ver a los estudiantes
el adaptador de conjunto de puntos giratorios, y Puedes pasar el adaptador de tus estudiantes. Ejecutemos
nuestra aplicación. Y vamos a ver qué spinner parece. Puedes ver este ganador
arriba aquí, va a generar una gota menú inferior. Si hago clic en este triángulo aquí,
se puede ver el nombre de los estudiantes que he pasado a mi ArrayList. Una vez más, también
se puede hacer clic en estos elementos.

Por ejemplo, si hago clic en uno de estos, podemos
tomar alguna acción. Veamos rápidamente que ¿Cómo podemos crear un onclicklistener para cada uno de estos
elementos? Así que después de configurar el adaptador aquí abajo, voy a decir que el punto giratorio de los estudiantes
se establece en el elemento oyente seleccionado, esto es diferente del oyente que hemos usado para
ListView. Para el ListView tenemos usado establecido en el elemento de escucha de clics,
pero no va a funcionar aquí.

En cambio vamos para usar este conjunto en el elemento de escucha seleccionado.
Pasemos nuestra interfaz digamos nuevo en item select listener adaptador view.on item
seleccionado oyente y esta interfaz va para generar dos métodos en el elemento seleccionado
y en nada seleccionado. Los nombres son descriptivos. en nada seleccionado significa que si no selecciona
nada dentro de su rueda giratoria, está no va a funcionar con este método y no vamos
a escribir ninguna lógica aquí. En cambio, dentro de este elemento seleccionado, mostraremos
un mensaje de brindis. Una vez más, puede ver que tenemos esta posición
aquí en la que podemos usarla para ejemplo obtener el nombre de ese estudiante. En primer
lugar, como antes, necesitamos el contexto porque estamos dentro de otra interfaz vamos a pasar actividad
principal que esto despues de eso para el texto voy a decir estudiantes que obtienen
como índice voy a pasar posición.

Eso es un plus seleccionado. Ejecutemos la aplicación y veamos si todo
va a funcionar. Así que aquí tú puedo ver que, aunque nunca hice clic en ningún
elemento, veo el mensaje de brindis. Y eso es porque hemos usado este conjunto en el elemento de escucha
seleccionado. Una vez más, esto es diferente de el oyente de clics en el elemento. no sé por qué Pero
no podemos usar un elemento de escucha de clics para la ruleta, si intentas usarla, obtendrás una
excepción. En cambio, la otra opción que tiene es este conjunto en el elemento de escucha
seleccionado. A ver si podemos mostrar el brindis mensaje. Si seleccionamos otro elemento, por ejemplo,
Sarah, puede ver que esos mensajes bajan aquí Esta es una forma de mostrar datos dentro de su rueda
giratoria. Es útil para cuando lo haces. No sé qué datos te van a mostrar.

Por
ejemplo, si va a recuperar los datos desde un servidor web o una base de datos, para ser precisos, en
caso de que sus datos sean dinámicos. pero en caso sabes esos datos previamente en caso de que tus datos
sean estáticos, puedes usar otra forma, vamos rápidamente ver eso. Entonces, antes de eso, voy a abrir
este panel de proyecto. Dentro de mi carpeta de aplicaciones dentro de esta carpeta de Recursos, tenemos esta carpeta
de valores aquí, en la que dentro de eso tenemos este archivo XML de puntos de cadenas, podemos
crear una matriz de cadenas dentro de este archivo XML, y más tarde podemos pasarlo a nuestro espinar. Básicamente,
este archivo de cadenas va a ser el lugar donde ponemos todas las cuerdas estáticas. Por
ejemplo, ahora mismo puedes ver que nosotros tener esta cadena de nombre de aplicación, en la que la hemos
usado dentro de nuestro archivo de manifiesto. vamos rápido vea que dentro de este archivo XML de puntos de manifiesto
de Android, tenemos este atributo de etiqueta.

Si hacemos clic en la etiqueta, se puede ver que está
direccionando el archivo de cadena. Y este es el nombre de nuestra cadena de cadenas de ese archivo XML,
sabemos con certeza que el nombre de nuestra aplicación no va a cambiar, por ejemplo, no depende
de alguna cadena de nuestra base de datos o el servidor web. Así que lo hemos pasado
aquí. En el siguiente video hablaremos de los usos de estas cadenas en ese archivo
XML y también en otros archivos XML en nuestra aplicación. Pero por ahora, vamos a crear una
matriz de cadenas de forma estática aquí, y vamos a pásalo a nuestra ruleta. Entonces, dentro de este archivo
XML de puntos de cadenas, puede crear dos tipos de elementos, puede crear una cadena o, alternativamente,
puede crear una matriz de cadenas. La forma de hacerlo es así, puede decir una matriz
de cadenas, necesita nombrar su matriz.

Por ejemplo, aquí, les voy a decir a los estudiantes
después de eso, dentro de esta abertura y etiqueta de cierre, puedo crear diferentes artículos, digamos
artículo. Y dentro de estas etiquetas de elementos, Puedo proporcionar el valor, por ejemplo, puedo
decir Mesa, puede copiar y pegar este elemento tantas veces como quieras. Una vez más, no se preocupe, si no entiende estas
cadenas, ese archivo XML, hablaremos al respecto en el siguiente video. Ahora que hemos creado
esta matriz de cadenas, podemos pasarla a nuestro elemento giratorio dentro de nuestro archivo XML de punto
principal de actividad. Cuando hayamos creado nuestra ruleta, tienes un atributo llamado entradas. Este
atributo aquí, puede ver que tenemos estos agregan estudiantes aireados esta es la dirección de nuestra
matriz de cadenas en nuestro XML de puntos de cadenas archivo que pasó eso y tan pronto como pase
eso, puede ver que tenemos una muestra datos en nuestra ruleta. Así que ahora que le he pasado
los datos a nuestro espinar, estéticamente, me no necesito pasarlos dinámicamente en mi archivo jar.

Para
eso puedo comentar todas estas líneas. de código, por ejemplo, desde aquí hasta arriba aquí.
Pero en este momento estamos recibiendo un error. dentro de este en el método de elemento seleccionado. Y eso
es porque ya no tenemos esta matriz de estudiantes. Si desea mostrar el nombre del estudiante cuando
selecciona algún elemento, en lugar de usar la lista de matriz de estudiantes, puede usar otra
forma. Eliminemos esta línea de código y crear un nuevo mensaje de brindis. para el texto
Esta vez voy a decir estudiantes spinner punto, digamos obtener el elemento seleccionado.
Puede ver que este método devolverá un objeto, digamos obtener el elemento seleccionado después de eso
podemos ver. a la cadena. Esto a una cadena es solo otro nivel de conversión para convertir el objeto
que ha sido devuelto en una cadena.

Después de eso, digamos más seleccionado una vez más
antes de ejecutar la aplicación. Revisemos lo que hemos hecho. En primer lugar, hemos creado esta
matriz de cadenas, después de eso hemos pasado a nuestra ruleta estáticamente y luego dentro
de nuestro Java 5, hemos creado esto establecido en el elemento de escucha seleccionado. Dentro
del método sobre el elemento seleccionado, hemos creado este mensaje de brindis. Y estamos obteniendo el valor de
cada artículo usando la ruleta de un estudiante punto obtener el método del elemento seleccionado. Ejecutemos
la aplicación. Y vamos a ver si tienes la mismo comportamiento. Puede ver que tenemos algunos datos en nuestra
rueda giratoria. Si selecciono la respiración para ejemplo, puede ver el mensaje de brindis que Brad seleccionó.
Parece que nuestra ruleta está funcionando.

Multa. Hasta ahora, hemos hablado sobre diferentes archivos
de diseño, por ejemplo, esta actividad principal punto XML, que es un archivo de diseño. En el
siguiente vídeo vamos a hablar de otros tipos de archivos XML, por ejemplo, estas cadenas ese XML
o este manifiesto de Android dot XML. También, tenemos otros tipos de archivos XML. En el siguiente
vídeo vamos a hablar de ellos. De acuerdo, nos vemos en el proximo video. Hasta ahora, hemos hablado sobre diferentes fondos de diseño
en nuestra aplicación colocados dentro de este Carpeta de recursos dentro de la carpeta de diseño.
Por ejemplo, hemos hablado de esta actividad archivo XML de punto principal, en el que hemos definido el aspecto
de nuestro archivo de diseño para nuestro principal actividad.

Pero en Android, hay muchos otros
archivos XML. Por ejemplo, al final del video anterior, hemos echado un vistazo al
archivo XML de puntos de cadenas. Cerremos estos días. Hablemos un poco sobre ese archivo XML de
puntos de cadenas. Como dije, se coloca dentro esta carpeta de recursos dentro de la carpeta de valores,
puede ver estas cadenas en ese archivo XML. Si recuerdas, dije que este es el lugar donde
pondrás todas las cuerdas estáticas de su aplicación.

Veamos rápidamente a qué me refiero
con eso. Entonces, por ejemplo, dentro de mi archivo de diseño, si defino un TextView, tenemos un TextView.
Aquí, vamos a darle una identificación. Digamos txt Hola, vamos a nuestro archivo Java.
Y vamos a inicializar este TextView. Digamos TextView privado. Vamos a nombrarlo.
txt Hola. Y luego aquí dentro de onCreate, vamos a inicializar curricularmente este TextView.
Veamos qué sucedería si configuramos el texto de este texto un compañero de forma manual. Por ejemplo,
aquí, si decimos txt Hello dot set text. Y si pasamos Hola, puede ver que estamos obteniendo
algunos aspectos destacados aquí. Y el Highlight dice que esta cadena no se puede traducir,
use recursos de Android en su lugar. Si quieres, puedes tener más información sobre
esta advertencia, como dice la sugerencia, puede presionar Ctrl más f1. Y se puede ver todo
un diálogo sobre esta mañana. Básicamente, esto aquí significa que este texto va a
ser el mismo en todos los idiomas.

Para ejemplo, si tiene una aplicación que tiene algunos
usuarios en todo el mundo, este texto es va a ser el mismo en todos los dispositivos independientemente
del idioma del usuario. como el advertencia dice que puede definir este texto dentro de
su archivo XML de punto de cadenas. vamos a ver cómo podemos usar este archivo XML de puntos de cadenas
para localizar nuestra aplicación. Así que aquí, Voy a definir otra cadena, la forma de hacerlo
es abrir una etiqueta y decir una cadena. Después de eso, necesitamos nombrar nuestra cadena.
Por ejemplo, aquí, simplemente voy a decir Hola. Y por el valor de esta cadena, voy a
saludarlos. Ahora puedo pasar esta cadena a mi vista de texto dentro de mi archivo java. En lugar
de codificar este texto, puedo decir obtener un cuerda. Esto obtiene un método de cadena como esta vista
de búsqueda por ID es un método interno dentro cada actividad, podemos usar eso porque estamos extendiendo
esta actividad de compatibilidad de aplicaciones. Asi que dentro de estas prácticas, podemos abordar nuestro archivo
de cadena.

Por ejemplo, puedo decir R punto string, dot digamos hola, ahora mismo el resultado
va a ser exactamente como antes. Para ejemplo, solo vamos a mostrar hola al usuario.
Pero la opción que tenemos aquí es crear otro archivo XML de puntos de cadena dentro
de nuestra carpeta de valores. por ejemplo, en aquí, puedo hacer clic derecho en mi carpeta de valores. Puedo
decir nuevo archivo de recursos de valor. Necesito para nombrar este nuevo archivo XML exactamente cadenas,
digamos cadenas. El nombre es importante en aquí debería ser exactamente igual. Y aquí
tienes algunas opciones. Hablaremos unos pocos de ellos aquí. Pero lo que
nos interesa aquí es este lugar. Seleccionemos eso. Y vamos a agregarlo a este calificador
elegido. Así que básicamente este lugar será útil cuando desee exponer su
aplicación a diferentes idiomas. Por ejemplo, si sabe que tiene algunos usuarios
de Alemania, puede traducir su aplicación de esta manera para esos usuarios también.
Veamos rápidamente que si podemos ver Alemania aquí, puede ver que tenemos esto, la D alemana
significa Deutsche en el lado derecho, podemos seleccionar una región específica, sabemos
que hay varios países que hablan alemán, seleccionemos Alemania.

Y presionamos OK. Si
echas un vistazo a tu carpeta de valores, puede ver que ahora tiene esta carpeta de
cadenas en la que dentro tiene dos cadenas archivo dot XML, los nombres son exactamente los mismos,
pero el segundo es para el idioma alemán usuarios En este momento, este archivo XML de puntos de cadenas
para usuarios alemanes está vacío. si quieres, tu puede definir algunas cadenas aquí. Por ejemplo,
voy a definir mi texto Hola aquí también. Veamos una cadena. Llamémoslo Hola.
Es muy importante que este nombre sería exactamente el mismo nombre que ha pasado dentro
del archivo XML de punto de otras cadenas. Si recuerda aquí, tenemos esta cadena llamada
Hola, la vamos a nombrar aquí hola tambien Ahora pasemos el valor de esta
cadena. Por ejemplo, la traducción alemana de Hola es Hola, creo. Entonces, dentro de este archivo XML
de puntos de cadenas para los usuarios alemanes, tenemos una cadena llamada Hola. Pero el valor
aquí es diferente del que tenemos. tenía dentro las cadenas predeterminadas punto XML.
Ahora que hemos creado dos cadenas, ese XML archivo, porque dentro de nuestra actividad principal, estamos
usando este método de obtener cadena y estamos dirigiéndose a nuestro Hola.

Si algún usuario de idioma
alemán utiliza nuestra aplicación, el valor de esta TextView será diferente en diferentes idiomas. Ejecutemos
rápidamente nuestra aplicación. y vamos ver la diferencia. Ahora mismo el idioma de este
dispositivo es el inglés. y debido a eso, estamos viendo este texto de Hola. Pero si
cambiamos el idioma de este dispositivo a vamos decir alemán, deberíamos ver cómo, sin embargo,
cerremos esta aplicación y rápidamente cambiar el idioma de este dispositivo. Y veamos si
podemos ver la diferencia. Para que podamos ir a la configuración. aquí dentro de los
sistemas, creo, o sistema, lenguaje y aporte.

Vamos a los idiomas. Y agreguemos
otro idioma. Busquemos alemán, o su almacenamiento equivalente, necesitamos seleccionar
una región, seleccionemos Deutschland. Y también, Necesitamos hacer que el almacenamiento sea el idioma predeterminado
de este teléfono. Así que vamos a mover esto por encima de este inglés. Y ahora puedes ver
que el idioma de este teléfono ha cambiado al alemán. Si ejecutamos nuestra aplicación, una
vez más, deberíamos ver la diferencia. Este tiempo, se puede ver que estamos viendo hueco
en lugar de Hola. Sin cambiar una línea de código, ahora tenemos una aplicación que se ve diferente
en diferentes idiomas. Así que estos are the strings dot XML file es extremadamente
útil para fines de localización. Si tu quieres, puede agregar otro archivo de cadena. Por ejemplo, una
vez más, en nuestra carpeta de valores, podemos haga clic, podemos decir nuevo punto de recursos de valor.
Una vez más, podemos nombrarlo cadenas.

Y una vez de nuevo, podemos seleccionar esta configuración regional.
Y si quieres, puedes seleccionar otro idioma y puedes hacer el mismo proceso. Después de
crear su aplicación, si desea traducir su solicitud para otro idioma, puede pasar este
archivo XML de punto de cadena a tal vez un traductor y pídale que cambie algunos de
los valores de sus archivos de cadena. Tan simple como que puede localizar su aplicación
para diferentes idiomas, puede ver que también tenemos un error aquí, esta URL no
es importante. Básicamente, dice que usted no tiene una cadena equivalente para este nombre de aplicación.
También puedes cambiar el nombre de la aplicación. en diferentes idiomas también. Pero no vamos
a hacer eso en esta aplicación. Bien, cerremos todos estos. Y hablemos
de otro tipo de archivo XML en Android aplicaciones El otro archivo XML del que voy
a hablar es este XML de puntos de colores. expediente. Una vez más, se coloca dentro de esta
carpeta de valores.

Echemos un vistazo a eso. Verá, ahora mismo tenemos tres colores
aquí. Como cuerdas, esto va a ser el lugar donde pasamos todos nuestros colores estáticos.
Si queremos, podemos definir otro color en aquí para que podamos venir entre estos recursos etiqueta.
Y podemos decir color. Podemos nombrar nuestro color. Por ejemplo, digamos azul. Y para el
valor, necesitamos pasar un valor hexadecimal, podemos obtener ese valor buscando el selector de
color HTML. Hagamos eso rápidamente. Por ejemplo, aquí, si queremos un color azul, un azul
más claro, tal vez podamos copiar el hexadecimal valor desde aquí y podemos pegarlo en nuestro proyecto.
Podemos ver que en la pintura de la izquierda aquí tenemos este color azul. Ahora que tenemos
este color azul, podemos usarlo en diferentes lugares de nuestra aplicación. Por ejemplo, dentro de nuestro archivo
XML de punto principal de actividad. Cuando nosotros tenemos definido este TextView, podemos cambiar su color. Podemos
decir color o al color del texto de Riverside, y podemos abordar nuestro color. Por ejemplo, puedo
decir agregar barra de color azul.

Esto agrega color está haciendo referencia a nuestros colores en ese archivo
XML esta mañana, aquí, puede ver que el color de nuestro texto se ha cambiado a este azul
claro. En lugar de buscar diferentes colores en internet, también puedes definirlos de otra
manera. Por ejemplo, puedes copiar este color de acento de color. Copiemos eso. Vamos
a pegarlo aquí. Y definamos evitar el color. Pero por el valor de este color blanco, puedo hacer
clic en este cuadrado. Y puedo seleccionar un color vacío. Por ejemplo, seleccionemos este blanco.
Y como puedes ver, ahora tenemos un blanco colorea sin buscar en internet. Podemos obtener
los valores hexadecimales para diferentes colores. De acuerdo, no hay mucho más en estos colores que
el archivo XML, solo quería mostrarles cómo puede definir nuevos colores. Hablemos del otro
archivo XML en las aplicaciones de Android, que es este estilo dot XML. Pero antes de eso,
cerremos estos dos. Y abramos esto estilos punto XML. Una vez más, vive dentro de nuestra
carpeta de valores. Básicamente, este estilo El archivo dot XML es el lugar donde definimos el tema
de nuestra aplicación.

Ahora mismo tenemos un estilo aquí. Más adelante veremos que donde
hemos usado this, el nombre de este el estilo es el tema de la aplicación. Pero si queremos,
podemos anular esto, por ejemplo, podemos cambiar el valor de algunos de estos colores si queremos.
O podemos cambiar otros atributos. Puedes también definir varios estilos. Por ejemplo,
copiemos todo este estilo. y vamos a pegar aquí abajo. Necesitamos nombrar nuestro estilo de
manera diferente. Por ejemplo, digamos personalizado equipo de la aplicación. Y vamos a anular el estilo anterior. Por ejemplo,
tenemos este atributo principal en aquí, que puede adivinar que está implementando todas
las características de este tema exacto en aquí. Si lo desea, en primer lugar, puede cambiar
este padre. Por ejemplo, echemos un vistazo en los otros. Digamos luz. Tenemos estas
barras sin acción en las que vamos. para usar en videos futuros, tenemos estos diálogos,
no voy a cambiar el padre aquí en cambio, si lo desea, puede cambiar algunos de
los valores de este color. Así en diferentes partes de nuestra aplicación, podemos usar este
color primario para diferentes textos.

El valor de este color primario es ahora mismo, este valor aquí
agrega barra de color color primario. Si quieres, puedes cambiar eso, por ejemplo, puedes
decir azul el color que acabamos de crear. Puedes ver que ahora el color primario en estos
dos estilos es diferente. Por el primero uno es este verde oscuro para el segundo
es este azul claro. Ahora que ha definido esta diapositiva de tema de aplicación personalizada puede
pasarla a, digamos, diferentes actividades en su solicitud. Significa que diferentes actividades en
su aplicación diferentes páginas en su La aplicación puede tener diferentes estilos. Por ejemplo,
uno de ellos puede tener alguna barra de herramientas, algunos de ellos pueden no tener esa barra de herramientas
si usa otro padre.

Mas adelante veremos que cómo podemos hacer eso. También hablaremos
sobre actividades más adelante en el curso. Preocúpate por las actividades si aún no las entiendes.
Así que este archivo XML de puntos de estilos es el lugar en el que defina diferentes estilos
para su aplicación. volveremos a este archivo XML de puntos de estilos más adelante.
En el curso, específicamente cuando hablamos de material diseño, pero por ahora pasemos de esta parte,
creo que entiendes la idea general. El otro archivo XML del que voy a hablar es
este archivo de manifiesto, este Android archivo XML de puntos de manifiesto. Creo que este es el
archivo XML más importante en todas las aplicaciones de Android. Básicamente, aquí es donde define los atributos generales,
las características generales de su aplicación, puede ver que tenemos esta etiqueta de manifiesto. Dentro
de eso tenemos esta etiqueta de aplicación, hemos visto este icono y el icono redondo anteriormente.
Básicamente, estos son útiles para cuando desea definir diferentes iconos para su aplicación.

También
tenemos esta etiqueta, que es básicamente el nombre de su aplicación que se mostrará
al usuario. También tienes un general tema para su aplicación, que como puede ver está
abordando el estilo, el tema de la aplicación estilo, si lo desea, puede pasar su tema de aplicación
personalizado. Anulará todas las actividades. en su aplicación. Pero aquí, no voy
a hacer eso. En este momento, dentro de la etiqueta de la aplicación,
tiene una actividad, que es básicamente nuestra actividad principal. Básicamente, cada actividad
debe declararse dentro del archivo de manifiesto. dentro de esta etiqueta de aplicación también. Esta
actividad aquí se ha agregado automáticamente, porque cuando hemos creado nuestra aplicación, hemos
seleccionado la plantilla de actividad vacía.

Pero si no seleccionamos esa plantilla, una
de las cosas que tenemos que hacer es venir dentro de este archivo de manifiesto y declarar nuestra
actividad. Dentro de esta etiqueta de actividad, tienes esta etiqueta de filtro de intención, no te preocupes
por eso todavía. Hablaremos de eso más adelante. en el curso, creo en la sección de receptor
de transmisión del curso. Pero probablemente puede adivinar el usuario de este filtro de intención
de este lanzador y principal, significa que esta actividad principal es la actividad del iniciador cuando
ejecutamos nuestra aplicación. no te preocupes por todos estos todavía. Estas son solo algunas propiedades básicas,
algunas características básicas de nuestra aplicación. Entonces, además de las actividades, también debe definir
otros tres elementos en el archivo de manifiesto. Entonces, en cada aplicación de Android, tenemos cuatro componentes
principales, actividades, proveedores de contenido, receptores de radiodifusión y servicios. Hablaremos
de todos ellos más adelante en el curso. Pero estos son los cuatro componentes principales de
cada aplicación de Android, todos ellos necesitan para ser declarado dentro del archivo de manifiesto.
Como puede ver, este archivo de manifiesto es muy importante.

Contiene todas las características
importantes de su aplicación, estaremos llegando volver a este archivo de manifiesto mucho durante
el curso. Así que no te preocupes si no entiendes todas estas cosas nuevas que estamos viendo aquí.
Bien, el siguiente archivo XML que estoy Vamos a hablar de menús, vamos a verlos rápidamente
también. Así que en el panel de su proyecto dentro de la carpeta Recursos, puede crear otro
directorio para diferentes menús. Por predeterminado, no tiene ese directorio como nosotros
teníamos cuatro valores y diseños diferentes archivos, necesitamos crear ese directorio, podemos hacer
clic derecho en nuestra carpeta de recursos, puede decir nuevo directorio, es muy importante nombrar
este menú de directorio. Y después de eso, puede ver que tenemos esta carpeta de menú
aquí. Puede hacer clic derecho en eso, y puede decir nuevo archivo de recursos de menú.

De esta manera,
puede crear un archivo XML de punto de menú. Por ejemplo, Llamemos a este archivo de menú menú principal. Vamos
a crear este archivo. Y vamos a ver qué hace parece que. Cambiemos a la vista de texto. Aquí
puedes ver que tenemos este ataque de menú. Básicamente, los menús son útiles cuando desea
crear algún tipo de menú en su aplicación. Y la forma de hacerlo es ingresar a esta etiqueta de
menú y crear diferentes elementos que pueda diga artículo, puede definir múltiples atributos
para su artículo, pero el que es obligatorio y tienes que crear que es este título.

Puede decir
el título de la columna de Android y puede pasar un título para su menú. Por ejemplo,
podemos decir ajustes aquí. Puedes ver eso algún menú ha sido creado aquí. mas tarde.
Pasaremos este menú a por ejemplo, nuestra actividad principal tener algún tipo de menú
en nuestra actividad principal. Los otros atributos que tengo aquí es ID, por ejemplo, puedo decir Menú
de configuración. También podemos tener un icono para nuestro artículo de menú. Pero creo que aún no
tenemos ningún ícono en nuestro proyecto antes de Un ícono vamos a crear rápidamente algunos íconos en nuestra
carpeta de controladores, hemos visto cómo podemos crear diferentes íconos, podemos hacer clic derecho en nuestra
carpeta de controladores diciendo nuevo recurso de imagen, podemos crear iconos. En el tipo de ícono, voy
a decir barra de acción y tocar íconos. Para ejemplo, dentro de esta imagen prediseñada, busquemos
el icono de configuración. Puedes ver que tenemos un ícono aquí, agreguemos eso. Cambiemos el nombre
a Configuración de IC. y vamos a cambiar el color a negro. Agreguemos otro ícono en nuestra carpeta
de controladores.

Reflejo de activos de imagen como antes de. Llamemos a esta una alarma helada. Busquemos alarma. El color está bien, solo
creemos este ícono. Ahora que tenemos estos dos iconos, podemos pasarlos en nuestro archivo de menú.
Por ejemplo, en este artículo, puedo decir icono. Pasemos a nuestro icono de configuración icy settings.
Ahora mismo no podemos ver el icono del ajuste aquí Pero si quieres ver que puedes definir
otro atributo que se llama mostrar como acción. Así que tenemos algunos valores para este
programa como atributos de acción. Si dices siempre, significa que siempre queremos nuestros elementos de menú
en la barra de herramientas, puede ver que tenemos otros opciones Por ejemplo, tenemos esta si fila, significa
que los coloque en la barra de herramientas si hay espacio para este elemento del menú. También
tenemos esto nunca significa que siempre mostrar los elementos del menú como este y nunca los muestran
en la barra de herramientas. Cambiemos el valor de ahora a siempre. Y vamos a crear otro elemento aquí.
Así que puedo decir artículo como antes del el título es obligatorio.

Y también recibimos una advertencia
por el título de los elementos anteriores. Una vez nuevamente, dice que necesita definir el título
en su archivo XML de puntos de cadena. Como antes, esto es para fines de localización. Y la mejor
práctica es crear esta configuración title en su archivo XML de puntos de cadenas. En sus
aplicaciones del mundo real, asegúrese de hacerlo. Pero aquí por el bien de la simplicidad,
no voy a hacer eso, voy a lidiar con esta advertencia Así que pasemos un título aquí.
Voy a decir alarma.

Vamos a darte tiempo Id digamos menú de alarma. Después de eso, vamos
a darle un icono. Digamos alarma helada. Vamos establezca el show como atributo de acción para
este en e4. Puede crear tantos elementos como usted quiere. Pero creo que para este elemento de menú
simple, estos dos estarían bien. Bien, ahora eso hemos creado este archivo de menú, veamos cómo
podemos pasar estos dos, por ejemplo, nuestro actividad principal. Cerremos este archivo. Una vez
más, se colocó dentro de nuestros Recursos carpeta dentro del directorio del menú que acabamos
de crear. Para mostrar este menú en su actividad principal, debe abrir el archivo java del punto
de actividad principal. Y necesitas anular otro método aquí. Debido a que estamos ampliando la actividad de
compatibilidad de aplicaciones dentro de esta actividad principal, tenemos algunos métodos que podemos anular,
uno de estos métodos es este método onCreate. Si sale de este método onCreate y presiona
Ctrl más o puede ver la lista de todos los métodos disponibles se puede
ver que hay muchos de ellos. El que lo que necesitamos aquí se llama en el menú Opciones de creación.
Si escribe en el menú Opciones de creación, puede ver este método aquí, seleccionemos
eso.

Y aquí tenemos este método. Primero de todo voy a borrar este comunicado de
aqui este regreso super.on crear Opciones menu y voy a crear o inflar mi menu para
eso puedo decir menu inflator esto clase aquí. Llamémoslo inflador es igual a obtener
menú inflador esto obtiene menú inflador es así, busque la vista por método de ID. Es una clase
interna en cada actividad. Así que básicamente con la ayuda de este inflador, vamos a inflar
o crear nuestro menú después de acceder a nuestro inflador le podemos decir inflator dot inflate. Para
este método de inflado. En primer lugar necesitamos para abordar la fuente del menú que acabamos de crear. Para
eso podemos ver nuestro ese menú ese principal menu, el menú que acabamos de crear.

El segundo argumento
es el menú que se le está pasando. a este método. Eso es rápido porque puede ver que
el tipo de retorno de este método es un booleano. Este booleano indica que si hemos inflado
con éxito nuestro menú, en este punto, hemos inflado nuestro menú y después de eso
podemos regresar. Esta es toda la logica que necesitamos para inflar o crear nuestro menú
en nuestra actividad principal. Ejecutemos el solicitud. Y vamos a ver si podemos ver nuestro menú
en nuestra aplicación. Puede ver que en nuestra actividad, tenemos estos
dos elementos, este ícono de configuración y este icono de alarma También podemos configurar un onclicklistener
para cada uno de estos elementos del menú. vamos rápido ver cómo podemos hacer eso. Por lo tanto, debemos
anular otro método fuera de este onCreate Options método de menú Si presionamos Ctrl más Oh, y si
buscamos el elemento de opciones seleccionado, este método aquí si seleccionamos eso,
podemos anularlo esta vez, voy a quédate con esta súper declaración de la que hablaremos
voy a quedarme con eso.

Como puedes ver como la entrada de este método, estamos obteniendo un elemento
de menú. Este es el elemento al que va el usuario. para hacer clic en Y podemos usarlo. Por ejemplo, para
crear una declaración de cambio. Vamos a crear nuestra declaración de cambio. Así que nuestra declaración de cambio
va a funcionar en el artículo punto obtener artículo IDENTIFICACIÓN. Si recuerda en nuestro archivo de menú para diferentes
elementos de menú, hemos establecido diferentes ID. Vamos vea rápidamente que en nuestro archivo XML de puntos del menú
principal, hemos establecido una ID para cada uno de estos elementos. Y aquí, vamos a actuar sobre esas identificaciones.
Vamos a crear nuestra declaración de cambio.

Digamos en caso de que sea nuestro.id. Ese menú de configuración,
vamos a mostrar un mensaje de brindis, digamos tostadas. Para el texto, veamos la configuración seleccionada
o la configuración seleccionada. Después de mostrar el mensaje de brindis aquí, en lugar de agregar un descanso
para la declaración de distribución para este caso específico, podemos devolver algo. Una vez
más puede ver que el tipo de retorno de este método también es un booleano. Este booleano
indica que si hemos actuado de acuerdo a este artículo con éxito o no. Aquí, después
de mostrar el mensaje de brindis vamos para volver verdadero. Así que digamos volver verdadero.
Y vamos a crear otros casos. Por ejemplo, en caso de que sea nuestro ese Id hace menú de
alarma. Una vez más, vamos a mostrar otro brindis mensaje. Digamos alarma seleccionada. Aquí estoy mostrando
un mensaje de brindis. Pero en un verdadero aplicación mundial, es posible que desee llevar
al usuario a alguna otra parte de su aplicación.

Pero más sobre eso más adelante cuando sepamos sobre
diferentes actividades y fragmentos. Bien, después mostrando el mensaje de brindis, regresemos una vez más.
Y también vamos a crear el predeterminado caso. En el caso predeterminado, devolveré esta
súper declaración. porque no me interesa en otros artículos además de estos dos. Así que haz lo que estés
haciendo dentro de la clase principal. Así que básicamente, Puedo llamar a este súper segmento desde aquí, puedo
devolverlo en el caso predeterminado. Antes ejecutamos nuestra aplicación. Repasemos lo que
estamos haciendo aquí. Como entrada de este en el método seleccionado del elemento de opciones, estamos obteniendo
un elemento de menú, podemos usar este ID de elemento en orden para crear una declaración de cambio. En caso de que la ID
sea la ID de nuestro elemento del menú de configuración, están mostrando esta configuración de mensaje de origen seleccionada. En caso de
que se trate del ID del elemento del menú de alarma que estamos mostrando otro mensaje de brindis. Pero en el caso predeterminado
en caso de que sea otro elemento además de estos dos, estamos pasando el trabajo a la clase
padre.

Ejecutemos la aplicación y vamos ver si hemos configurado el oyente con éxito. Entonces,
por ejemplo, si hacemos clic en esta configuración icono, puede ver la configuración seleccionada. Si
hacemos clic en esta alarma, podemos ver la alarma seleccionado. Parece que ha hecho un buen trabajo dentro
de esto en el método seleccionado del elemento de opciones. Bien, creo que es suficiente para este video.
En el proximo video vamos a continuar nuestra charla sobre otros tipos de archivos XML disponibles
en Android. Nos vemos en el próximo vídeo. Continuemos nuestra charla sobre diferentes archivos
XML en Android.

En videos anteriores tomamos un vistazo a diferentes archivos XML, por ejemplo, dibujables
para sus archivos de diseño, algunos archivos dentro de nuestra carpeta mipmap. Hemos visto un extraño
y colores y estilos. Además de estos, tomamos un vistazo a los menús y también a nuestro archivo
de manifiesto. A ver qué más tenemos aquí. Derecha ahora nuestra actividad principal tiene solo un archivo de diseño,
este XML de punto principal de actividad.

Pero si tu desea, puede crear más archivos de diseño para
esta actividad. Por ejemplo, ahora mismo, este el diseño es para el modo vertical, si lo desea,
puede crear otro archivo de diseño para el digamos modo paisaje. Si no sabe cuáles
son los modos vertical y horizontal, déjame mostrarte eso rápidamente. Entonces, en este momento,
esto se llama el modo de retrato. si cambiamos la rotación de nuestro dispositivo, y este va
a ser el paisaje, creo que necesito activar la rotación de este dispositivo. Vamos al centro
de certificación. Y desde aquí creo esta es la opción, esta rotación automática, necesitamos
activarla.

Y ahora si rotamos nuestro dispositivo, puede ver que ahora tenemos un aspecto diferente
para nuestra aplicación. A veces esto podría trabajar. Pero si tiene un archivo de laboratorio complejo
que desea mostrar de manera diferente en diferentes rotaciones, necesita crear dos archivos separados
para cada una de estas rotaciones, uno para el modo retrato y otro para el modo paisaje.
Veamos rápidamente cómo podemos crear otro archivo de diseño para esta actividad principal. Así
que dentro de mi carpeta de diseño, en el diseño carpeta, puedo hacer clic con el botón derecho seleccionando un
nuevo archivo de recursos de diseño, puedo crear un diseño archivo o, alternativamente, dentro de este archivo XML de punto
principal de actividad. Desde aquí, si haces clic en este icono, puedes ver que tenemos este retrato
seleccionado ahora mismo, si quieres, puede crear una variación del paisaje para el diseño
de su actividad principal. pero antes yo haz eso, voy a agregar otro texto. Y también
voy a agregar algunas restricciones a este archivo de diseño.

Así que voy a mover este nuevo
TextView debajo de mi nivel de texto. Vamos agregue rápidamente algunas restricciones. Como mencioné antes,
si sus elementos están demasiado cerca uno del otro otro, siempre puede seleccionar ambos elementos.
Y puede usar el menú contextual yendo para restringir y agregar restricciones desde aquí
también. Pero no voy a hacer eso. En cambio, Voy a agregar algunos márgenes de, digamos, 500.
Entonces, para la aplicación simple, esto es va a ser el aspecto de mi aplicación en la vista
vertical, vaya a las vistas de texto se colocan uno tras otro verticalmente. Pero en el modo horizontal,
voy a poner los dos textos al lado entre sí, vamos a crear rápidamente una variación para
nuestro modo horizontal. Al seleccionar este crear una variación del paisaje, puede ver eso dentro de nuestro
archivo de diseño, ahora tenemos que encontrar dentro de la carpeta principal de actividad, tenemos este
XML de punto principal de actividad, que es para el retrato modo, y el otro, que es para el modo paisaje.
Y ahora si queremos podemos cambie este paisaje, por ejemplo, voy a cambiar
la restricción de este TextView.

Eliminemos todas las restricciones anteriores. También
voy a eliminar la restricción de este TextView la restricción izquierda. Coloquemos esta
diversión aquí y agreguemos algunas restricciones. Además, otro punto aquí que puede resultarle
útil es que si desea centrar su elementos, por ejemplo, horizontalmente, puede seleccionar
los dos elementos, por ejemplo, estos dos haciendo clic con el botón derecho en el elemento, yendo
a este centro y seleccionando horizontalmente, puede centrar sus artículos horizontalmente.
Una vez más, esta es la vista del paisaje. modo, el diseño para el modo horizontal,
y esta será la capa para el modo retrato modo.

Ahora, si ejecuto mi aplicación, debería
ver la diferencia. Puedes ver que en el modo paisaje, los dos textos están uno al lado
del otro. Pero si cambias la rotación a retrato modo, los dos textos están verticalmente uno detrás del otro.
Entonces de esta manera, al llegar a este ícono aquí y seleccionando crear variación de paisaje, puede
crear otro archivo de diseño para su actividad principal.

Pero esta no es la única opción.
También puede crear una buena versión en caso si desea activar un buen tema para su aplicación.
No voy a hacer eso. Vamos ver rápidamente cómo podemos crear eso. Así
que aquí, puedo ir a este crear otro y desde aquí tengo todo tipo de opciones. Por ejemplo, si
queremos crear un modo noche para nuestro actividad, podemos seleccionar este modo nocturno,
podemos pasarlo a este calificador. y para el modo nocturno. Esa es una noche. Vamos a crear esta diversión.
Y echemos un vistazo a nuestro proyecto. cosa. Ahora, dentro de esta carpeta principal de actividades,
puede ver que tenemos tres actividades principales dot XML, el del medio es para la vista nocturna.
Si quieres, puedes cambiar eso, por ejemplo, puede cambiar algunos colores, pero
no voy a hacer eso aquí. solo voy para ignorar este archivo de diseño para la vista nocturna.
Veamos qué otros diseños podemos crear para nuestra actividad.

Entonces, una vez más,
puedo ir a este ícono aquí diciendo crear otro Puedes ver que tenemos todo tipo de opciones. Por
ejemplo, aquí, tenemos esta versión, en el que podemos crear diferentes capas para
ID para diferentes versiones de Android en el dispositivo del usuario. Agreguemos esto a estos
calificadores elegidos. Y aquí, podemos poner un número. Por ejemplo, si queremos que nuestra aplicación
se vea diferente en el nivel API 21, podemos ponga 21 aquí, y podemos crear el archivo de diseño.
Echemos un vistazo a nuestra carpeta de diseño. dentro de la carpeta principal de actividad. Ahora tenemos
esta actividad punto principal XML, que es un para la versión 21 de la API. De esta manera, también
puede crear otros archivos de diseño y Puedes cambiarlos si quieres.

Antes de terminar
este video, voy a hablar de otro Punto de archivos XML en Android. hagamos clic derecho
en nuestro archivo de diseño y seleccionemos nuevo archivo de recursos de diseño. Y veamos qué es un
include. Así que para el nombre de archivo de este Archivo XML, voy a decir marca registrada. Y
también voy a cambiar el elemento raíz. digamos, diseño relativo. Seleccionemos Okay
y cambiemos a TextView. En el interior este TextView, puede ver que tenemos este diseño
relativo. Así que básicamente usas include cada vez que quiera reutilizar algún archivo de diseño,
por ejemplo, ahora he creado esta marca registrada punto XML en el que voy a poner una vista de imagen
y una vista de texto dentro de eso después creando este archivo de diseño, puedo reutilizar este punto
XML de marca comercial para mostrar esta marca comercial en múltiples actividades de mi aplicación.

Entonces, el
uso de la etiqueta de inclusión es para reutilizar su archivos de diseño. En primer lugar, diseñemos este punto
XML de marca comercial. Aquí dentro, voy a decir Vista de texto. O antes de eso, definamos una vista de imagen,
digamos 15. dp para el ancho y la altura. Vamos a darle
una identificación. Y para el marcador de posición, no voy a importar
ninguna imagen a mi proyecto. En cambio, Voy a usar este fondo del iniciador de IC que existe
en nuestra carpeta de controladores. también definir un TextView.

Aquí, ajuste el contenido
y ajuste el contenido del texto. voy a decir desarrollado por mí Sam. Después de eso, vamos a mover
este TextView a la derecha de nuestra vista de imagen, digamos a la derecha del logo. Agreguemos un margen
a la izquierda, tal vez 10 dP, diseñemos este texto un poco. Digamos cursiva y bifurcada.
Vamos a cambiar también el tamaño de esta vista de texto. En este momento, el ancho y el
alto de este diseño relativo, todo este padre es emparejar padre aquí, voy a cambiar
que voy a cambiar ambos a ajustar el contenido, verá por qué cuando usamos
este diseño bien.

Y también voy a agregar otro atributo para ambos elementos. Centrémoslos
verticalmente, centro vertical. para ambos, digamos a través del medio colóquelos
en el centro verticalmente. Así que esto es nuestro archivo de diseño simple. Aquí mostramos
un TextView y también una vista de imagen. Si queremos mostrar este archivo de diseño en varios lugares
de nuestra aplicación, podemos usar el incluir etiqueta incluir etiqueta es muy útil
cuando tiene un archivo de diseño complejo y no quiero escribir exactamente el mismo archivo dos veces. Cambiemos
a nuestro punto principal de actividad XML expediente. Y veamos cómo podemos usar esa marca registrada.
Así que aquí después de TextView, voy decir incluir, y puedo agregar un atributo de diseño.
Y necesito pasar la dirección de mi diseño. expediente. En este caso, es en el comercio de barra de
capa. Así de sencillo podemos incluir otro XML archivo dentro de este archivo de diseño. Si lo desea, también
podemos restringir este archivo de diseño, usted puedo ver que puedo seleccionar todo este archivo de
diseño.

Pero ahora mismo si trato de restringir mi archivo de diseño, puede ver que no funcionará,
podemos ver que se colocará una vez de nuevo en la parte superior de mi pantalla. Y
eso es porque necesitamos anular el ancho y altura de este diseño, a la derecha. La forma de hacerlo
es compensar esta etiqueta de inclusión. Y aquí para todo mi archivo de diseño, necesito definir
el ancho y la altura de mi diseño una vez más. Entonces, por ejemplo, para el diseño, que también voy
a decir envuelve el contenido para la altura, Voy a decir envolver contenido. De esta manera, puede
ver que ahora podemos restringir nuestro diseño. archivo, solo necesitamos anular el ancho y la altura de
nuestro archivo de diseño. agreguemos tambien dos restricciones más. Puedo usar este archivo XML de puntos
de marca registrada tantas veces como quiera en diferentes partes de mi aplicación que pueden ser útiles
a veces también donde está usando incluyen etiqueta, es posible que desee otra etiqueta.

Veamos rápidamente
eso. Entonces, en lugar de este diseño relativo, a veces puede ver fusionar este etiquetado aquí. Entonces,
básicamente, lo que está haciendo esta fusión es que es evitar la redundancia. Hablemos de lo que quiero
decir con eso. Así que ahora estos dos los elementos no tienen idea acerca de sus
padres, no saben donde van a estar utilizado dentro de un diseño relativo, un diseño
lineal o un diseño de restricción. Por eso, porque no saben sobre el padre, puede ver que
nuestro diseño no se ve muy hermoso aquí Pero si sabe con seguridad dónde va a
utilizar este archivo de diseño, por ejemplo, si va a utilizar este archivo de diseño
dentro de un diseño lineal, no necesita para escribir el diseño lineal.

Una vez más, puede usar
esta etiqueta de combinación para evitar la redundancia. En el momento de renderizar su archivo de diseño, se
ignorará esta etiqueta de combinación. Y estos dos elementos se colocarán dentro del padre
que se van a utilizar. Algunas veces cuando esté seguro, ahí es donde usará su
archivo de diseño usando esta combinación La etiqueta puede mejorar el rendimiento al renderizar
su diseño. Pero aquí, solo voy a cambie esto a un diseño relativo. De acuerdo,
creo que es suficiente hablar de diferentes Archivos XML en Android, también tenemos
otros, los veremos más adelante en el curso.

Pero por ahora, creo que es suficiente.
En el siguiente video vamos a hablar de la biblioteca de material design, nos vemos en el próximo
video. En la creación de aplicaciones Android, el diseño
es un aspecto importante. Y creando una hermosa El diseño afectará la cantidad de descargas
de su aplicación en Play Store. Y también afectará la retroalimentación del usuario. Pero
a veces el diseño puede ser un desafío, especialmente si eres como yo, si estás más interesado en el
lado del código de la aplicación. Pero por suerte, Tenemos el diseño de materiales como guía para
nuestro diseño. A pesar de ser un Material orientativo Design también introduce algunos componentes nuevos
que podemos usar en nuestra aplicación.

Vamos consulte el sitio web de diseño de materiales. Y veamos
cómo podemos usar eso en nuestro proyecto. los sitio web para material design es material que si va a esta pestaña Desarrollador aquí, puede ver
que además de las aplicaciones de Android, también puede usar el diseño de materiales para el desarrollo
de aplicaciones iOS, puede usarlo para el desarrollo web, y también puedes usarlo con desarrollo híbrido con
flutter. Vamos a la página de Android. Como decía, Material Design consta de dos
cosas. En primer lugar, es una guía para diseñando sus aplicaciones. Además, además
de ser una guía, tienes algunos componentes que puede usar en su aplicación, echaremos un
vistazo a esos componentes en un minuto.

Pero antes, si echas un vistazo a esta tematización
aquí, por ejemplo, si quieres para consultar las pautas para la tematización tipográfica,
puede hacer clic en este enlace. Y después de eso, si echas un vistazo a esta guía de diseño de
materiales para tipografía, verás algunos pautas. Básicamente, estas pautas son
útiles cuando desea diseñar y crear una hermosa aplicación. Básicamente, estas son
algunas cosas que hacer y no hacer en orden seguir cuando diseñe diferentes aplicaciones.
Así que asegúrese de revisar esta página web y las pautas. Aquí no vamos a hablar
de pautas. en cambio vamos para echar un vistazo a los componentes. Si vas
a este enlace de componentes, verás que Tenemos muchos componentes. Estamos familiarizados
con algunos de estos componentes. Por ejemplo, hemos visto diferentes botones y casillas de verificación.
Pero algunos de ellos son nuevos.

No te preocupes por que más adelante. Veremos muchos de estos
en el curso. Pero echemos un vistazo a un pocos componentes que ya conocemos. Por ejemplo, tomemos
estos botones. Entonces aquí en En esta imagen, puede ver que tenemos cuatro tipos
diferentes de botones de material. Estas son de alguna manera diferentes de los botones que
ya hemos utilizado en nuestras aplicaciones. Básicamente, la principal diferencia está en el estilo de
los diferentes botones. Similar para el botón we tener todo tipo de otros componentes. Por ejemplo, tenemos casillas
de verificación para algunos de estos componentes. También tenemos alguna documentación y pautas
para diseñarlos. Por ejemplo, si quieres para verificar las pautas para diseñar una casilla de verificación,
puede hacer clic en ese enlace.

Y aquí, tú puede ver algunas pautas. Así que asegúrese de verificar
eso si lo necesita, pero veamos cómo podemos utilizar estos componentes en nuestras aplicaciones.
Antes de eso, sólo voy a decir que en este video, no vamos a votar con todos
estos componentes. Durante el curso volveremos a esta página web y a muchos de
estos componentes. Pero por ahora primero de todos, vamos a empezar con los botones de material.
También vamos a echar un vistazo a la flotante botón de acción. Este de aquí. También echaremos
un vistazo al carrito de material y cosas. como un snack bar. Más adelante en el curso, echaremos
un vistazo a las barras de aplicaciones superior, inferior barras ascendentes, y también cosas como diseños de
pestañas y mucho más. Bien, en lugar de hablar, hablemos implementar estos botones maffeo en nuestra aplicación. Para
utilizar componentes de diseño de materiales en su aplicación, necesita agregar una dependencia en
su aplicación.

No hemos usado ningún extra. dependencias en nuestras aplicaciones todavía, pero
veamos cómo podemos hacer eso. Si tu recuerdas Dije que Gradle combinará todos los archivos
de diseño, todos los archivos Java, todos los recursos estáticos en nuestra aplicación. Y además
de todos esos, Gradle también usará las bibliotecas de terceros que usamos en nuestra
aplicación. Una de esas bibliotecas que nos van a usar aquí y luego Gradle se encargará
de combinarlo en nuestra aplicación es este material de diseño. Entonces necesitamos agregar esta
biblioteca de diseño de materiales en nuestro proyecto con la ayuda de Gradle.

Para agregar la biblioteca
de diseño de materiales, puede ir a este Pestaña de desarrollador. Después de eso, puedes seleccionar
este Android. Y dentro de esta documentación, puedes ir a esto para empezar. Y a partir de
ahí, puede encontrar la dependencia que necesitar. En esta página, puede ver una guía
paso a paso para agregar la biblioteca, el material biblioteca de diseño en su proyecto, asegúrese de
leer esta página si lo necesita.

Pero basicamente lo que están diciendo es que, antes que nada, asegúrese
de estar usando los repositorios de Google en tu proyecto Veamos dónde está eso en Android
Studio, en Android Studio dentro de este Gradle script dentro de esta compilación que Gradle.
Este módulo de proyecto, necesita agregar el Google repositorio, los repositorios de Google se han agregado de forma
predeterminada a nuestro proyecto dentro de todo esto proyectos Pero si no ve este Google aquí, asegúrese
de agregarlo en el siguiente paso después de agregar el repositorio de Google es agregar
la dependencia de Material Design, puede copiar esto dependencia desde aquí, y puede agregarlo a su
proyecto.

Copiemos eso esta vez, nosotros necesita ir a esta compilación que la aplicación del
módulo Gradle está aquí. Pero antes de eso, vamos cierra este. Y también minimicemos todos estos dolores
adicionales, necesitamos agregar esa dependencia dentro de estas dependencias aquí. Por ejemplo, puede
agregar esa dependencia antes de todas las otras dependencias. Enfrentémoslo aquí. Pero también
necesitamos cambiar esta línea porque ahora mismo tenemos esta etiqueta de versión aquí.
Y esta no es la versión, es mejor siempre busque en Internet la última versión de material
design, también puede usar la ayuda de Andrew el estudio.

En este momento estoy recibiendo un
punto culminante. Si paso el cursor sobre este resaltado, puedes ver que la última versión disponible es la 1.1
punto cero. Entonces, en lugar de esta versión, Voy a decir 1,1 punto cero. Después de agregar
esta dependencia, debe hacer clic en este sincronizar ahora Y después de eso, Gradle descargará algunos
archivos para este diseño de material específico. archivos de la biblioteca de Internet. Y agregará
la biblioteca a su proyecto. Entonces vamos haga clic en la sincronización. Ahora antes de eso,
asegúrese de tener una conexión a Internet, fue de alguna manera rápido. Y ahora podemos usar componentes
de diseño de materiales en nuestro proyecto. también adentro estas dependencias, puede ver que, de manera predeterminada,
también tenemos otras dependencias. Por ejemplo, tenemos este diseño de restricción, tenemos estas
dependencias para probar. Y también tenemos estas dependencias de compatibilidad de aplicaciones que ayudan a la compatibilidad
con versiones anteriores, pero más adelante.

Bien, ahora que hemos agregado esta dependencia
material, veamos cómo podemos usarlos. Pero antes de usarlos, agregaré un botón en
mi archivo de diseño. Veamos rápidamente que. Habilitemos también esta vista previa.
Y antes de todo, eliminemos este TextView. Así que aquí, voy a guardar el botón, digamos
envolver contenido y envolver contenido. y vamos definir un texto, digamos Saluda. También cambiemos este diseño
de restricción a un diseño relativo. Y centremos nuestro botón. Puede ver que estamos
viendo la diapositiva anterior de nuestro botón. Ahora implementemos el tema material.

Y veamos cómo
eso cambia el tamaño de nuestro botón. Entonces, para eso, voy a abrir el panel de mi
proyecto. Si recuerdas dentro de los Recursos carpeta dentro de la carpeta de valores, tenemos estas
diapositivas que XML. Abramos eso ahora mismo tenemos este estilo de tema de aplicación en el
que su padre es este tema que estamos viendo en aquí. Si queremos implementar Matthew, su tema,
podemos cambiar este padre. vamos rápido Haz eso. Y el tema aquí va a ser componentes
materiales temáticos. También tenemos otro tema llamado componentes de material de punto de tema
que iluminan este en este video, tomaremos una mirada a eso en un minuto. Pero aquí, no
voy a personalizar este tema ese material componentes Entonces, para eso, voy a eliminar
estos tres elementos. voy a usar todo de los valores dentro de este tema de componentes materiales,
así que eliminémoslos. solo cambiamos el tema pasado de esta tarde. Pero ahora mismo si cambiamos
a nuestro punto principal de actividad XML, puede ver que estamos obteniendo este tema
oscuro de alguna manera, también cambiamos el estilo de nuestro botón.

Esto es bueno para un
tema de noche. Pero aquí voy a cambiar el tema de los padres a un tema de luz para que podamos
ver mejor. Así que seleccionemos esta iluminación. aquí. Y si volvemos a nuestro archivo XML de punto
principal de actividad, puede ver que estamos al ver que este hermoso botón de salida de tema de luz ahora
está instalado, tenemos algunas esquinas redondeadas, la fuente es de alguna manera diferente. Y también
el espacio entre las letras es diferente. No cambiamos nada para nuestros elementos de botón. Pero
debido a que estamos usando el tema material como tema principal de nuestra aplicación, todos
estos estilos se han aplicado automáticamente.

También podemos personalizar este botón por ejemplo,
podemos cambiar el color de fondo de este botón. Pero antes de eso, agreguemos rápidamente un
color a nuestros recursos de color. colores interiores ese XML voy a agregar un nuevo color, copiemos
esta fuente. Seamos realistas, y cambiemos el nombre a digamos naranja. Para el valor, voy
a seleccionar este color naranja. Ahora en nuestro archivo XML de punto principal de actividad,
si queremos cambiar el color de fondo de este botón al naranja, podemos decir tinte de fondo esta
mañana aquí, y podemos abordar nuestra color naranja. También podemos cambiar el color
del texto de este botón. Pero no creo que eso sea necesario, solo quería mostrarte que puedes
personalizar tus botones. vamos a borrar este color. Como viste en el sitio web de Material Design,
tenemos algunos estilos para nuestro botón. Veamos otras diapositivas también. Por ejemplo,
aquí puedo ver un estilo. busquemos botón de material, puede ver que tenemos esto
en estilo de botón elevado. vamos rápido vea que este es básicamente este estilo que estamos
usando actualmente. Es el caso predeterminado. Quitemos eso.

Y veamos otros, tenemos este
estilo de botón, tenemos este contorno botón. Si echa un vistazo a eso, puede ver
que el estilo de su botón ha cambiado a algún botón de contorno. A veces esto puede ser
útil. También tenemos un botón de texto, vamos rápidamente ver eso. Este es el único componente de
material Botón de inicio el botón de texto, este cambiará nuestro botón a un botón de texto.

A veces
puede que quieras usar esto, me voy a quedar con el caso predeterminado. Así que voy a eliminar todo
este atributo de estado. para que puedas ver que usar material design es muy fácil. Básicamente, acabamos
de agregar la dependencia material en nuestro proyecto dentro de esto, como construir esa aplicación de módulo
Gradle. Después de eso dentro de las diapositivas, cambiamos el padre a este equipo, ese equipo de componentes
de material. Y después de eso podemos usar todos los elementos del interior de la biblioteca de
diseño de materiales.

Si agregas otro elemento en su archivo de diseño, por ejemplo, una casilla de verificación
Por defecto, la casilla de verificación del material Se utilizará la biblioteca de diseño. Bien, pasemos
de esta parte. Y hablemos de algunos de los componentes que no tenemos en nuestras
aplicaciones. Si no usamos el material biblioteca de diseño, el primero de esos componentes
de los que voy a hablar aquí se llama botón de acción flotante. Eliminemos este
botón. Y veamos esa acción flotante botón. Así que aquí puedo decir botón de acción
flotante, podemos ver que tenemos dos opciones, tenemos este botón de acción flotante y tenemos
este botón de acción flotante extendido. Usemos el primero para el ancho y el alto.
Voy a decir envolver contenido. Y tan pronto como lo haga, pueden ver que tenemos
este hermoso botón aquí, este botón flotante el botón de acción estará flotando en nuestro archivo
de diseño.

Incluso si, por ejemplo, nos desplazamos la página, si lo desea, puede cambiar la ubicación
de este botón, por ejemplo, puede muévelo hacia abajo aquí. Para eso puedo
usar dos atributos que no hemos visto hasta aquí. Por ejemplo, puedo ver un botón principal de
línea y podemos establecerlo en verdadero, podemos ver que tan pronto como lo haga, su ubicación se cambiará
a la parte inferior de nuestra pantalla, también puede usar otro atributo llamado align
parent. Y para moverlo a la derecha de nuestra pantalla, digamos a través y ahora puedes
ver la diferencia. También agreguemos algunos márgenes. Digamos margen. Aquí, tenemos dos opciones,
podemos agregar este margen a la derecha.

O alternativamente, podemos usar esta versión.
Y si uso este módulo aquí mismo, recibirá una advertencia. Usemos eso rápidamente.
Y vamos a ver la advertencia. Por ejemplo. En aquí, voy a decir 20 dP, pueden ver el
resaltado aquí. si echas un vistazo en esto, dice que es mejor usar margen. Y la
razón de esto es porque algunos de los idiomas comienza desde la derecha. Entonces,
por ejemplo, si el idioma de su usuario es árabe, en ese caso, este botón de acción flotante
se colocará a la izquierda de la pantalla. Y si agrega un margen, correcto, colocará
el botón de acción flotante afuera de la pantalla Por esta razón.

Es mejor
usar margen y digamos margen y, y aceleremos 20 dP, puedes ver que estamos obteniendo
el mismo resultado aquí. Nosotros también necesita agregar un botón de margen. Ese es un botón de margen.
Y esos son los primeros 20 dP. Tú también puedes agregue un ícono para su botón de acción flotante también.
Agreguemos rápidamente un icono en nuestro carpeta del controlador y vamos a agregarlo para nuestro botón
de acción flotante.

Digamos nuevos activos de imagen en nuestra carpeta de controladores. Seleccionemos la barra de
acciones y los iconos de pestañas. Y seleccionemos un plus firme aquí. Busquemos add. Y agreguemos
este. Para el nombre, digamos ICF. Y también, vamos a cambiar el color. No estoy seguro
de que si este es un color blanco para eso, Voy a usar este color personalizado. Y voy a
usar blanco. Ahora mismo el seleccionador está en blanco. Así que digamos elegir, y creemos
nuestro icono. Y ahora puedes agregar el ícono para su botón de acción flotante. Pero por alguna
razón, no puedo usar el atributo fuente, que es el atributo para pasar un icono para su
botón de acción flotante. creo que porque Agregué esta dependencia en mi proyecto, necesito
reiniciar mi Android Studio, o el otro La opción es reconstruir mi proyecto. O la mejor
opción es ir a este archivo e invalidar su caché y reinicie Android Studio. Seleccionamos eso, a ver, invalidamos y reiniciamos.
Ahora que he invalidado mi caché, Puedo usar el atributo fuente. Entonces, dentro de esta
etiqueta de botón de acción flotante, puedo decir fuente, esta fuente 100, y puedo pasar mi icono de
hielo, pueden ver que tan pronto como lo haga que, este ícono se agregará a mi botón de acción
flotante.

Si quieres, también puedes cambiar el color de este botón de acción flotante.
Por ejemplo, cambiémoslo a naranja. color que hemos definido hace unos minutos.
Por eso puedo decir tinte de fondo este aquí, y puedo pasar el color naranja, pueden
ver que el color se cambiará a naranja. Además, puede ver que tenemos algún tipo de borde
para este botón de acción flotante. Si quieres, también puedes cambiar eso. La forma de hacerlo
es así, puede decir la columna de la aplicación, tinte de fondo Y así, puedes pasar tu
nuevo collar por ejemplo, si quieres pasar evitar el color. En primer lugar, puede crear ese
color dentro de los recursos de su collar. Y después de eso pase eso o alternativamente,
puede pasar el valor hexadecimal de ese color directamente aquí. Por ejemplo, sé que el hashtag
FFF es para el color vacío. entonces si yo pasa eso, puedes ver que tenemos un color vacío
aquí. Y también puedes ver que el el borde de este botón de acción flotante ahora es blanco.
Así que este tinte de fondo de columna de Android es para el color de fondo de su botón de acción flotante.
Pero el fondo de la columna de esta aplicación el tinte es para el borde de su botón de acción flotante.
También puedes definir otro color cualquier cosa.

Veamos rápidamente que puede ver reconstruir
el color de este aquí, en la columna de la aplicación repo color, y pasar un color. Por ejemplo, una
vez más, voy a pasar vacío. este repositorio color es el color del botón de acción flotante
cuando hace clic en él, ejecutemos esto solicitud. Y a ver que se puede ver que
tenemos esta hermosa acción flotante botón en la parte inferior de nuestra pantalla. Y si hacemos
clic en eso, se puede ver un poco de color. Ese color blanco es este color del arcoíris. Además
de eso, también puede haber notado que el color de esta barra superior también ha cambiado. Esto se
debe a que estamos utilizando componentes materiales.

Tema en nuestra aplicación. Más adelante, veremos que
tenemos una hermosa barra de herramientas cuando trabajamos con diseño de materiales. Implementaremos esa barra
de herramientas en nuestras aplicaciones más adelante. Pero por ahora hablemos más sobre este botón de acción
flotante. También puede configurar un onclicklistener para este botón si lo desea también. Pero para
eso necesitamos tener acceso a este flotante botón de acción dentro de nuestro archivo java de punto de actividad
principal. Entonces, por ejemplo, como antes, yo puede decir botón de acción flotante privado,
este que proviene del material, ese flotante paquete de botones de acción. Llamémoslo FA B.
Después de eso, necesitamos instanciarlo dentro nuestro método de creación. Digamos que FA v es igual a
encontrar vista por ID. Pero antes de eso, necesitamos para dar una identificación a nuestro botón de acción
flotante. No creo que hayamos hecho eso aquí. Digamos ID, llamémoslo FA B, digamos our.id dot FAA. Después
de eso, puedes decir conjunto de puntos fabulosos onclicklistener está bien aquí. Y podemos pasar
a nuestro oyente.

Por ejemplo, intentemos un mensaje de brindis. Digamos que Fab hizo clic.
Ejecutemos la aplicación. Y a ver si vemos el mensaje de brindis. Puedes ver que estás viendo
ese mensaje de brindis, parece ser perfecto. También hay otras formas de usar estos botones de acción
flotantes, por ejemplo, una forma es use una combinación de botón de acción flotante y barra
de navegación de la aplicación. En ese caso, haremos vea que podemos implementar un hermoso estilo y
un hermoso diseño para nuestra aplicación. Pero hablaremos de eso más adelante cuando hablemos
de navegaciones separadas. Bueno, creo que eso es suficiente para este video. En el siguiente video
hablaremos de dos componentes más en material biblioteca de diseño.

Hablaremos de chiringuitos y también
de vistas de cartas. Nos vemos en el próximo vídeo. En este vídeo vamos a hablar de dos componentes
materiales más. El primero de esos componentes es snack bar. Antes de comenzar
a implementar el snack bar, veamos qué se parece Entonces, si vas al material que
i o en estos componentes, en esta escucha aquí se puede ver un snack bar. Veamos eso.
Así es como se ve un snack bar.

Es muy parecido a un mensaje de brindis. Pero el estilo
es un poco diferente. y tambien por dentro la barra de bocadillos, puede tener un botón que
hará alguna acción. Además de eso puedes hacer tus snack bars sean indefinidos, quiere decir
que no se darán de baja hasta que el usuario hace clic en esta acción. Además, también puedes
darle estilo a tu snack bar. Por ejemplo, puedes cambie el color de este texto y también el color
de este botón de acción. Como veremos más adelante en el curso, las barras de bocadillos son extremadamente
útiles cuando se desarrollan aplicaciones para Android.

Para utilizar las barras de snack. En primer lugar, debe
agregar la biblioteca de diseño de materiales en su proyecto. Así que vayamos a esta pestaña Desarrollador.
En esta sección de Android, vayamos a la documentación comenzando. Copiemos la dependencia.
En nuestro proyecto dentro del Los scripts de Gradle construyen ese Gradle. Agreguemos
rápidamente esa dependencia. Para la versión, si pase el cursor sobre esto, verá la última versión, que
es 1.1 punto o después de agregar el material dependencia. En primer lugar, en mi archivo de
diseño, voy a hacer algunos cambios, voy a agregar un botón. Y además de eso, voy a dar una identificación
a mi diseño principal, tanto First de todos, es posible que haya notado algunos cambios
en el aspecto de Android Studio en comparación con el vídeo anterior. Eso es porque he actualizado
mi Android Studio. Y tenemos leve diferencias No te preocupes, hablaremos de
estas diferencias en el próximo video. Para este video, simplemente implementemos nuestra barra de refrigerios.
La primera diferencia dentro de este nuevo Android Studio es que ya no puede ver el texto
y el modo de diseño aquí.

Y si tu quiere ir a su texto, puede ir a esta vista
dividida aquí. Una vez más, hablaremos sobre estas diferencias. Démosle una ID a nuestro diseño
de restricción. Digamos identificación, soy va a llamarlo padre. Más adelante en este
video, veremos por qué estoy dando una ID para este diseño de restricción. Volvamos también
a nuestra vista de diseño. Y agreguemos un botón. Antes de eso, eliminemos este texto aquí. Vamos a restringirlo
rápidamente. Y también vamos a cambiar su texto.

Voy a cambiarlo para que muestre snack bar.
También cambiemos rápidamente el tema. de mi aplicación para que podamos ver el botón de material.
En nuestro proyecto como vimos en el video anterior en nuestra carpeta de valores dentro
de la carpeta de estilos. solo voy a cambiar el tema del panel aquí. Le voy a cambiar a
este equipo eso de material componentes cosas luz. Si vuelve a cambiar a su archivo de diseño,
ahora puede ver que estamos usando el material botones en mi archivo java. En primer lugar,
voy a inicializar este padre esta restricción diseño y también este botón. Hagámoslo rápidamente,
digamos un diseño de restricción privado. Llamémoslo padre. Y también botón privado. Llamémoslo
btn. Mostrar francotirador. Aquí abajo dentro del método onCreate. Inicialicemos estos dos
padres es igual para encontrar la vista por identificación r.id. Esa barra de refrigerios potencial principal
es igual a encontrar la vista por ID r.id. que yo creo su ID era el botón después de que se estableciera onclicklistener
para este botón.

Digamos btn show snack bar dot set onclicklistener new onclicklistener
Voy a entregar el trabajo a otro método. Así que digamos show snack bar. Vamos a crear rápidamente
este método aquí abajo. Vacío privado espectáculo de chiringuito. No necesitamos ninguna entrada. Y así es como puede mostrarle a snack lo que puede
decir que hacen los puntos de snack bar sin instanciar una nueva barra de refrigerios puede usar este método estático
de creación para crear su barra de refrigerios. Este método make necesita tres entradas. En primer
lugar, debemos pasar el diseño principal al diseño que vamos a mostrar nuestro snack bar en el
interior que en este caso el diseño de nuestros padres es un diseño de restricción. Y como viste, he inicializado
ese diseño de restricción Aquí, eso es la razón por la que le di una identificación a mi diseño de restricción.
Ahora aquí, puedo decir padre. Después Necesito enviar un mensaje de texto que quiero mostrar en
mi snack bar.

Por ejemplo, voy a decir que esto es una barra de bocadillos El tercer parámetro aquí
es una constante que indicará el tiempo que quieres mostrarle un snack bar. Y puedes
pasar esa constante así, puedes digamos, una barra de bocadillos, que tiene tres constantes
aquí, esta longitud larga, neta corta y también se dejó indefinido. El largo y el corto son
descriptivos, pero si usted personalmente tiene indefinidos, mostrará su barra de bocadillos indefinidamente
y no se descartará hasta que el usuario haga clic en ese botón de acción.

Seleccionemos este por ahora.
indefinido después de este método make, puede llamar al método dot show para mostrar su
barra de bocadillos. Esto va a ser realmente chiringuito sencillo. Y todavía no tenemos ninguna
acción. Veamos si va a funcionar. Si nosotros haga clic en este botón, deberíamos ver nuestra barra
de bocadillos. Y aquí está. Es un snack muy básico. bar. Y no tenemos ninguna acción aparte de que no hayamos
cambiado una diapositiva de nuestro texto. También, porque hemos pasado este largo, indefinido no
hay manera de despedir este snackbar. Cambiemos rápidamente esta constante a longitud
corta y veamos la diferencia. Ahora si mostramos nuestro snack bar, se puede ver que será
despedido después de unos momentos. De acuerdo, ahora veamos cómo podemos agregar una acción a nuestra
barra de bocadillos. Pero antes que nada, voy para cambiar esta constante a la izquierda indefinida
una vez más. Y antes del método show, estoy va a llamar a otro método.

Ese método se llama acción
de conjunto de puntos. En primer lugar, nosotros Necesito un texto aquí, este será el texto
de nuestra acción. Por ejemplo, si quieres puedes decir reintentar aquí. Después de eso, necesita
un oyente onClick que sea un nuevo onClick oyente. Esto va a ser una interfaz. Y dentro
del método onClick, podemos hacer lo que sea queremos cuando el usuario haga clic en este texto de
reintento.

Por ejemplo, en este caso, solo estoy va a mostrar un mensaje de brindis. Digamos que se hizo clic
en reintentar. A ver si podemos ver la acción. Como puede ver aquí, ahora tenemos esta opción de reintento.
Recuerda que la longitud sigue siendo indefinido. Pero si hacemos clic en este reintento, esta
barra de bocadillos será descartada. Y también veremos un mensaje de brindis. Veamos también
cómo podemos cambiar el color de estos dos textos este reintento y también el color
del mensaje de nuestro snack bar. por esa vez de nuevo antes del método show aquí, voy
a llamar a otro método. digamos que establezca el color del texto de la acción para cambiar
el color de nuestro texto de acción.

Aquí, puedes pasa tus colores de dos maneras diferentes. En
primer lugar, puede abordar el color de su recursos de color, si recuerdas en tu proyecto dentro
de la carpeta Recursos, dentro de los valores carpeta, tenías estos colores, ese archivo XML
en el que tienes unos colores dentro que puede abordar una de estas esquinas dentro de su color de
texto de acción establecido como este, puede decir obtener color Y después de eso nuestro punto color punto
por ejemplo, color primario. Aparte de eso si Como habrás notado, tenemos algunos colores que provienen
de las bibliotecas de diseño de materiales.

Puedes ver que también tenemos estos colores. Pero
por ejemplo ahora mismo, si uso este color primario aquí, puede ver que estamos recibiendo esta
advertencia. Y esta advertencia dice que tú puede usar este método en el nivel de API 23 y superior. También
hay otra forma de conseguir nuestro color. sin ver este error. Vamos a ver eso.
Digamos obtener recursos. Este punto de teléfono, digamos
obtener columna. Dentro de este método, puede dirección de su color, puede decir nuestro color,
que por ejemplo, acento de color. también ver de otra manera. En lugar de usar los recursos de mi
proyecto, puedo usar una clase Java. Asi que por ejemplo, en lugar de todo este método aquí,
puedo decir color con una C mayúscula, que proviene de Android dot graphics dot digamos
leer.

De esta manera podemos ponernos rojos. color con la ayuda de esta clase de color. Entonces,
si no tiene este color rojo en sus recursos, también puedes usar esta clase. Bien, ahora veamos
cómo podemos cambiar el color del mensaje. de nuestra merienda. Por eso puedo decir que establezca
el color del texto en este método. Una vez más, en orden para pasar un color tienes dos opciones. En este caso,
voy a decir punto de color, por ejemplo.

Amarillo. Ejecutemos la aplicación y veamos
si hemos cambiado el color con éxito. O no. Mostremos nuestro snack bar. Puedes
ver que el color del mensaje es amarillo. Y también el color de nuestro botón de acción es
rojo. De acuerdo, creo que es suficiente hablar de el chiringuito Más adelante, utilizaremos mucho los
chiringuitos en el curso. el siguiente material El componente del que voy a hablar es la vista
material de la corte. Veamos rápidamente qué se ve como en el material que tengo. Una vez más,
dentro de esta pestaña de componentes dentro este carrito, puede ver las vistas de su carrito. Desplácese
hacia abajo y llene con esto es lo que el carrito vista parece. Puede usarlo para, por ejemplo, mostrar
diferentes elementos en su aplicación, puede mezclar elementos de la interfaz de usuario en forma de carrito.
Además de eso, también puedes tener algunas acciones. para la vista de su carrito. Además, puede tener algo
de radio coronario, y también puede tener algo sombra o elevación para ser precisos al lado
de su vista actual. En este video, no vamos para implementar las acciones lo haremos más adelante
en el curso.

Pero por ahora, vamos a implementar una caricatura simple en nuestra aplicación,
hemos agregado las dependencias de diseño de materiales en nuestro proyecto, por lo que podemos agregar la vista del
carrito sin ningún problema. Pero antes de eso, vamos cerrar este estilo y colores. En mi archivo de diseño
aquí, voy a agregar mi vista de carrito debajo de este botón. Pasemos a la vista dividida.
Y agreguemos eso aquí abajo, estoy voy a definir mi vista de carrito, digamos vista de carrito
de materiales. Este, al lado del carro de material. vista, también tiene una vista de tarjetas nativas.
Pero el estilo es un poco diferente.

Si no lo haces desea utilizar la vista de tarjeta de material, siempre
puede ir a developer.android.com y obtener la dependencia de las bibliotecas de Android x para
la vista del carrito. Pero aquí, implementemos esta vista de carrito de materiales. Voy a ingresar
mi ancho y alto manualmente. Para los pedacitos, Voy a decir 100 dP, creo que está bien. Y
para la altura, digamos 200 DPI, es tiene una forma extraña, creo que es mejor cambiar el ancho
a 150 dpi. Vamos a darle una identificación. Voy a decir vista de tarjeta.

Después de eso, dentro de esta
vista de tarjeta, ingresemos algunos elementos. Pero antes de eso, concentremos rápidamente nuestra llamada
en usted. Dentro de esta vista de carrito, primero de todos, voy a definir un diseño relativo. Para el
ancho y la altura, digamos que coincidan padre, el padre es esta vista de tarjeta. Así que
vamos a ajustar toda la vista del carrito. Y dentro de este diseño relativo, voy a poner
mis elementos por ejemplo, voy a poner un contenido de envoltura de TextView y contenido de envoltura.
Centrémoslo también horizontalmente. Por su mensaje de texto, digamos hola. También cambiemos el
estilo de este código, digamos estilo de texto. Y pasemos los dos al lado de eso vamos a aumentar el tamaño.
Digamos 18.

Entonces después de eso abajo este TextView, voy a definir una vista de imagen,
puede ver eso en una vista de carrito, usted puede tener varios elementos de la interfaz de usuario
para el ancho de esta imagen, voy a ahorrar 140 dP. Y para la altura, digamos que coincida con el padre,
voy a mover esta vista de imagen debajo de esta Vista de texto. Así que digamos el diseño a continuación.

Pero antes
de eso, necesito dar una identificación a este TextView. digamos DNI. txt Hola. Agreguemos también un margen
superior y centremos esta vista de imagen margen superior, digamos 10 dP centrado horizontalmente.
Usemos también un marcador de posición, vamos decir fuente. Voy a pasar este almuerzo IC. Bien,
creo que eso es suficiente para entender. la vista de tarjeta. Además de eso, en sus elementos
de vista actuales, tiene otros atributos como bien. Por ejemplo, si desea hacer las coordenadas
del radio de vista de su tarjeta, debe tiene esta opción radio de esquina, llamado radio de
esquina. Puedes decir cinco dB, por ejemplo, ahora mismo puede que no veas la diferencia. Pero
si ejecutamos nuestra aplicación, veremos el radio de la esquina También puede cambiar el
radio de la esquina si cree que cinco DB son no es suficiente. La otra opción que tenemos
aquí es esta elevación de cartas en la que dale una forma 3d a nuestra tarjeta, tenemos algo de sombra
detrás de nuestras tarjetas.

Una vez más, voy para decir cinco arriba, también puede definir esta vista de tarjeta
como cualquier otro elemento de la interfaz de usuario en su Java expediente. Hagamos rápidamente esa vista de carrito privado.
Aquí puedes ver que tenemos dos opciones. Tenemos esta vista de tarjeta que proviene de la vista
de tarjeta de Android x. Y también tenemos esto vista de tarjeta de material que proviene de las bibliotecas
de diseño de materiales. aquí estamos voy a usar este material llamado vista, pero una
vez más, la diferencia está solo en el estilo. Llamémoslo vista de tarjeta. Y aquí abajo
dentro del método onCreate.

Vamos inicialícelo Configuremos rápidamente un onclicklistener para esta
vista de carrito, punto de vista de carrito configurado onclicklistener. Además de eso, puede ver que tenemos muchas
opciones aquí. hablaremos de ellos más adelante en el curso, configure onclicklistener.
Vamos a mostrar un mensaje de brindis. Corramos la aplicación. Y veamos cómo se ve nuestra vista
de carrito. Nuestra vista de carrito parece algo como esto, que no es tan bueno. Pero podemos
hacerlo mucho mejor con las vistas de tarjeta. Lo haremos más adelante en el curso. Específicamente cuando
hablamos de la vista del reciclador, la combinación de vista de reciclador y vista de tarjeta para sus elementos
creará un archivo de diseño realmente hermoso. Veremos que me creo en el siguiente vídeo.
Pero aquí, puedes ver que tenemos esto radio de esquina y también tenemos esta elevación que
es esta forma 3d para nuestra vista de carrito. Además de eso, más adelante en el curso, veremos
cómo podemos crear una vista de tarjeta expandible.

Eso significa que tendremos algún botón aquí
por ejemplo, una flecha en la que al hacer clic en esa vista, expanda nuestra vista de carrito
y veremos más información y tal vez acciones para nuestro artículo en nuestra vista de carrito. Bien,
creo que es suficiente para este video. En este video, Solo quería mostrarle cómo puede crear una barra de bocadillos
y también implementar esta vista de carrito. En el siguiente video, comenzaremos a hablar sobre la
vista de reciclador. En videos anteriores nos He visto la vista de lista para mostrar diferentes
elementos. Pero la vista del reciclador es mucho mejor Opción para mostrar listas de diferentes artículos.
En los próximos dos o tres videos vamos para ver cómo podemos usar las vistas del reciclador. Nos
vemos en el próximo vídeo. En este video vamos a hablar de la vista
de reciclador, que como dije antes es otra opción para mostrar una lista de diferentes elementos
en nuestra aplicación. Pero antes de eso, como Ud. puede ver, actualicé mi Android Studio y aquí
tenemos algunos cambios.

Antes de hablar sobre la vista del reciclador, voy a mostrar algunos
de estos cambios en la versión más reciente de Android Studio, le sugiero encarecidamente que siempre
mantenga su Android Studio actualizado. Tú puede hacerlo yendo a este menú de Ayuda. aquí
abajo, puede buscar diferentes actualizaciones. Y si hay alguna actualización disponible, puede
ver una lista de diferentes opciones. Este aquí están los servicios de Firebase, no vamos a
usar eso, voy a cancelar esta actualización, puede ver que también tengo algunas actualizaciones
para mi emulador y el instalador de hexam. voy a actualizarlos después de este video.

Pero por ahora, digamos
que me lo recuerdes más tarde. Además, si tú recuerda de los videos de instalación, he dicho que
siempre verifique las actualizaciones desde un canal estable. Si no está seguro acerca de su canal,
siempre puede ir a la configuración por yendo a esta pestaña de archivo aquí yendo a configuración.
Aquí, si busca actualizaciones, puede ver que mis actualizaciones se están revisando
desde dentro del canal estable. tenemos otros también. Estos otros canales son para fines de vista
previa. Y es básicamente para profesionales. desarrolladores para verificar nuevas funciones en Android
e informar algunos errores si hay alguno en el equipo androide. Pero para ti, como principiante, probablemente
sea mejor revisar tus actualizaciones desde un canal estable. Lo primero que es diferente
en esta nueva versión de Android Studio es la forma de ir a pantalla completa, puede
ir a pantalla completa yendo a esta vista menú. Y yendo a la apariencia. Desde aquí, puede
ir a pantalla completa.

En versiones anteriores, esta opción estaba en algún lugar aquí abajo. Vamos
al modo de pantalla completa. El otro cambio que probablemente pueda ver aquí este árbol de componentes.
Este tipo aquí es un poco diferente. No hay muchos cambios aquí solo esta vez.
Pero hay un cambio muy importante. arriba aquí. Puedes ver que aquí abajo ya
no tenemos esa vista de diseño y texto modo. En lugar de aquí tenemos tres opciones. En este momento
estamos dentro de la vista de diseño. Nosotros También puede seleccionar este para ir a la vista
de texto. Y entre estos dos, tenemos este modo divisor. Como puede ver, actúa como si hubiera
habilitado la vista previa dentro de su texto vista, pero hay una diferencia. Antes de eso, minimicemos
rápidamente este panel de proyecto. Desde aquí desde dentro de esta vista dividida,
también puede habilitar atributos. Por ejemplo, si selecciono este botón, puedo ver la vista de texto
de este botón puedo ver la vista de diseño de este botón y también puedo ver todos
los atributos aquí también.

Esto va para ser útil, especialmente si está utilizando
varios monitores. por ahora solo voy para minimizar este panel de atributos. También puede
cambiar el tamaño de esta vista previa. Además atributos, también puede habilitar esta paleta desde
aquí en la que puede ver todos los diferentes elementos de diseño Y puede arrastrarlos directamente
a su vista de diseño. Una vez más, esto será útil si está
utilizando varios monitores. El otro lo que puedes ver aquí es este administrador de recursos,
teníamos este administrador de recursos en Android Estudio 3.5. Pero ha habido algunas mejoras en esta
nueva versión. Básicamente, dentro este administrador de recursos, puede ver todos
los recursos estáticos dentro de su proyecto. Anteriormente, si deseaba ver diferentes elementos
rivales dentro de su proyecto, podía tengo que ir a este proyecto de formación aquí. Y
dentro de la carpeta de recursos, podrías tener comprobó sus controladores.

Ahora, con este administrador
de recursos, puede tener acceso a esos controladores más fácilmente. Además, además de eso, puede ver
diferentes colores, puede ver diferentes diseños mipmaps, las cadenas, y también si hace clic
en estos tres puntos aquí, puede ver todo tipos de recursos en su proyecto. Además, si
quieres, puedes utilizar estos recursos directamente de aquí.

Por ejemplo, ahora mismo, en nuestro archivo
de diseño, tenemos esta vista de imagen, que su fuente es este fondo del lanzador IC que existe
en nuestra carpeta de controladores. Si queremos para cambiar esto a este archivo mipmap del lanzador
IC, simplemente podemos arrastrar este lanzador IC, y podemos pegarlo aquí, puede ver que la fuente
de nuestra vista de imagen ahora ha cambiado. Del mismo modo, podemos hacer lo mismo con las cadenas.
Por ejemplo, ahora mismo en nuestra cadena recursos, tenemos esta cadena de nombre de aplicación,
podemos arrastrar eso, por ejemplo, en lugar de esto Hola, podemos ver que el texto ha sido cambiado. Vamos a
deshacer los cambios. Así que de vez en cuando, este administrador de recursos puede ser útil. La otra
cosa que ha cambiado en esta nueva versión de Android Studio es la fuente de mi código.
De hecho, no me gusta esta fuente, y voy a para cambiarlo a la fuente anterior que teníamos
en nuestro Android Studio. para eso puedo vaya a este archivo dentro de la configuración.
Puede buscar fuentes.

Y aquí, puedes cambiar la fuente. Por ejemplo, creo que voy a seleccionar
este. Presionamos Aceptar. Y si, es la fuente anterior que teníamos cuando trabajábamos
con diferentes diseños, correcto. También, además de Android Studio, también actualicé mi herramienta
Gradle. Si quieres comprobar que tienes puede ir al menú de su proyecto, puede ir a
este script de Gradle, hemos cambiado dos cosas sobre Gradle. En primer lugar, si echas un vistazo
a las propiedades del rapero Gradle dot, Puedes ver que tenemos la última versión de
Gradle aquí.

Y también además de eso, si va a este módulo de proyecto build dot
Gradle, puede ver que estamos usando el última versión de las herramientas de Gradle. Entonces, además
de Android Studio, también actualicé mi Gradle. Probablemente no verá ninguna diferencia cuando actualice su Gradle.
En la mayoría de los casos, va a corrige algunos errores y también puede mejorar el
rendimiento. Una vez más, mi sugerencia es para mantener todo actualizado cuando trabajas
con Android Studio. Bien, pasemos de esta parte. Y hablemos de la vista del reciclador
en Android Studio.

Para eso, voy a cerrar este proyecto. Y voy a crear un nuevo proyecto.
Digamos que iniciamos un nuevo Android Proyecto de estudio. Ahora que tenemos aquí bajo el estudio
tiene una nueva actualización en estas plantillas también. Por ejemplo, dentro de este televisor, puede
ver que tenemos otras opciones para diferentes sistemas operativos, o para diferentes dispositivos, se han
agregado algunas plantillas nuevas. Pero nosotros no van a trabajar con ellos. Como antes vamos
a utilizar esta actividad vacía. Vamos Asigne un nombre a esta vista de reciclador de proyectos.
O digamos el ejemplo de RecyclerView. Es interesante que aquí, tenemos esta nueva opción aquí. Dice usar la
compatibilidad con puntos heredados de Android que bibliotecas Básicamente, antes de Android x, teníamos
que usar bibliotecas de soporte para tener la compatibilidad con versiones anteriores está en dispositivos
más antiguos. Como viste en los videos anteriores, el uso de Android X era obligatorio.

Pero ahora aquí dentro
tenemos esta nueva opción. no creo que nosotros vamos a usar estas bibliotecas de soporte heredadas en
nuestro curso, pero parece que ahora tenemos esta opción. Bien, vamos a crear nuestro proyecto. Y veamos cómo podemos usar la vista de reciclador.
para eso. Tenemos dos opciones. Ante todo, podemos ir a nuestro archivo XML de punto principal de actividad.
Como puede ver, tenemos esta vista de reciclador opción aquí, pero antes de usarla, necesitamos
descargar su dependencia en nuestro proyecto. Puede hacer clic en esta opción de descarga aquí
y se agregará automáticamente a nuestro archivo gradle.

O si no quieres agregarlo desde
aquí siempre puedes buscar reciclador ver dependencias y agregar manualmente en un archivo
gradle. Antes de agregar esta vista de reciclador, abramos rápidamente nuestros scripts de Gradle para crear
esa aplicación de módulo de Gradle. aquí abajo en estos dependencias, puede ver que no tenemos ninguna vista
de reciclador. Descarguemos este reciclador ver haciendo clic en esto. Puedes ver una advertencia
aquí. ¿Le gustaría agregar esto ahora, vamos a diga bien, parece que hemos agregado la vista del reciclador
con éxito. Vamos a ver que tenemos archivo gradle. Y luego aquí, puede ver la vista
del reciclador.

Pero como puedes ver el destacando aquí, esta no es la última
versión. Por eso siempre es mejor para buscar en Internet las últimas dependencias
de RecyclerView. El resaltado aquí dice que tienes disponible la versión 1.1 punto oh.
Así que cambiemos este a 1.1 punto oh, y Sincronicemos nuestro proyecto. Bien, ahora que
hemos agregado esta dependencia de RecyclerView, puede agregarlo a nuestro archivo de diseño.

Voy a
cambiar a la vista de texto desde arriba aquí. Y Voy a minimizar este administrador de recursos.
En primer lugar, voy a cambiar esta restricción. diseño a un diseño relativo. Después de que
sea como antes, voy a eliminar este TextView. Y agreguemos una vista de reciclador. Entonces puede
ver que el reciclador vea esta opción aquí abajo. Por el ancho y alto. Digamos emparejar
padre, voy a emparejar todo el pariente diseño. También vamos a darle una idea. Digamos la vista
del reciclador de contactos. como puedes adivinar Voy a mostrar una lista de diferentes contactos en mi vista
de reciclador.

Después de eso, podemos terminar. creando nuestra vista de reciclador. Y si habilita su vista
previa desde dentro de esta vista dividida, puede ver que tenemos estas opciones dentro de esta
vista del reciclador. también voy a agregar algo de relleno a este diseño relativo principal. Así
que aquí dentro de la etiqueta inicial, vamos digamos relleno, y digamos 10 dP. Eso parece mejor.
Después de eso, tenemos que inicializar nuestra vista de reciclador en nuestro archivo Java. Entonces, dentro de
este archivo java de punto de actividad principal. Primero de todo, voy a decir vista de reciclador privado.
Este que viene de Android x dot recycler ver chorro v. Llamémoslo vista de reciclador de
contactos. Y aquí abajo dentro de onCreate método, vamos a inicializarlo. Contactos, la vista del reciclador
es igual a la vista de búsqueda por contacto de punto de ID vista del reciclador.

Cuando hemos trabajado con ListView, justo
después de este punto, justo después de inicializar nuestro ListView, podríamos haber creado un adaptador
de matriz y después de eso, podríamos haber pasado nuestro adaptador de matriz a nuestra vista de lista. Pero
cuando usamos la vista de reciclador, necesitamos crear nuestro propio adaptador. Crear su propio adaptador de vista
de reciclador es probablemente el más complejo código que ha escrito hasta ahora. Pero
vamos a pasar por cada paso juntos. Antes de crear nuestro adaptador. También necesitamos
un archivo de diseño. Si recuerdas cuando tenemos utilizado ListView.

Para cada elemento en nuestra vista
de lista, hemos pasado un diseño integrado. en reciclador vista, necesitamos crear ese diseño también. Así que
dentro de mi proyecto dentro de los Recursos carpeta dentro de la carpeta de diseño, voy a crear
un nuevo archivo de recursos de diseño. estoy va a nombrar este teléfono contactos este elemento.
También voy a cambiar este elemento de ruta. a un diseño relativo. Bien, vamos a crear nuestro
archivo de diseño. Y cambiemos a nuestro TextView. Si recuerdas de videos anteriores, dije
que cuando trabajas con RecyclerView, usted tiene todo tipo de flexibilidades. Al diseñar sus archivos
de diseño de elementos, echaremos un vistazo en archivos de diseño más complejos. Pero aquí,
solo voy a agregar una vista de texto simple. Cambiemos a la vista dividida para que podamos
ver la vista previa. Bien, digamos TextView. Envolver contenido y envolver contenido. Para el texto, digamos
que contacte a Nate. Más tarde en nuestro reciclador vista, vamos a cambiar esta vista de texto.

Además de eso,
también vamos a darle una identificación a esto. Vista de texto digamos txt nombre. También voy a cambiar la altura
de este diseño relativo para envolver contenido porque no queremos ocupar toda la pantalla
para un solo elemento en nuestro reciclador vista. Para eso, cambiemos esta fuente para ajustar
el contenido. Agreguemos también algo de interés. aquí para que podamos verlo mejor. Y también
agreguemos algo de relleno. Digamos relleno. Y eso es pasado 10 Up. Lo siento por eso. Démosle
también un ID a este diseño relativo, Verá cómo puede ser útil. Vamos a llamarlo
padre. Así que esto de aquí va a ser el archivo de diseño para cada artículo en nuestra vista
de reciclador. Ahora que hemos creado este contexto, este archivo XML de punto de elemento, podemos crear nuestro
adaptador de vista de reciclador.

Para eso necesitamos crear una clase Java en nuestro proyecto. Así que dentro
de nuestro paquete, voy a decir nueva clase de Java. Llamemos a esta clase contactos, adaptador de vista de reciclador.
Vamos a crear nuestra clase y vamos a mira lo que tenemos aquí. Así que antes que
nada, antes de todo, voy a crear un clase interna dentro de esta clase, veremos qué
es esta clase interna. esta clase interna necesita ser público, digamos clase pública.
Voy a llamarlo titular de vista porque es la Convención. Esta clase de titular de vista necesita extender
el titular de vista de punto de vista de reciclador este clase aquí, pero como puede ver, estamos
recibiendo un error aquí.

Y eso es porque necesitamos crear nuestro constructor. Hagámoslo rápidamente
presionando ALT más insertar. Este La clase de titular de la vista interna mantendrá la vista
de cada elemento en nuestra vista de reciclador. Por ejemplo, en este caso, va a generar un nuevo elemento de
la lista de contactos, en el que más adelante veremos cómo podemos usar este archivo de diseño
y también todos los elementos dentro de él. Básicamente, esta clase interna es responsable de generar
nuestros objetos de vista. Si tu quieres para tener acceso a elementos dentro de su objeto
de vista, puede agregarlos como campos de esta clase interior. Por ejemplo, aquí, puedo
decir TextView privado. Si tu recuerdas, teníamos un TextView en nuestro elemento de la lista, el ID
era el nombre de txt. Vamos a nombrarlo. nombre de texto. Y aquí abajo dentro del constructor, digamos que el nombre
de txt es igual a encontrar la vista por ID.

Pero debido a que no estamos dentro de una actividad, no podemos
usar esta vista de búsqueda por método de ID como esto. En cambio, lo que podemos hacer
es usar este objeto de vista que ha sido pasado a este constructor. Por ejemplo, puedo decir vista
de elemento, punto de búsqueda, vista por ID. Tú puede ver que tenemos este método aquí. Así que
la única diferencia es que dentro de una actividad, simplemente puede decir buscar vista por ID.

Pero
aquí porque no estamos dentro de una actividad, podemos usar esta vista o podemos decir vista de elemento punto
encontrar vista por ID. Y después de eso podemos dirija nuestro TextView Puedo ver nuestro.id dot
digamos arreglar el nombre. si tienes otro elementos dentro de su archivo de capa, puede
agregarlos así uno por uno. Veremos eso más tarde en unos minutos. Pero por ahora hemos terminado
con esta clase de titulares de entrevistas. Vamos minimizar esto. Y ahora podemos extender el adaptador RecyclerView
en la declaración de nuestro adaptador clase. La forma de hacerlo es así, podemos decir que extiende
el adaptador de punto de vista del reciclador, podemos ver que tenemos esta opción. También
eche un vistazo a este VH aquí. Significa titular de la vista. Si importa este adaptador dentro de
los diamantes, debe pasar el soporte de vista. También hay varios titulares de vista. Asegúrese
de importar el que está dentro de este clasifique este orbe que puede codificar el nombre de su
proyecto. También tienes uno en Android x que vista de reciclador, así que asegúrese de no
confundirlos.

Si recuerdas cuando usamos array adaptador para vistas de lista como el tipo de datos
de nuestro adaptador, hemos pasado la cadena. Este La clase de titular de vista es exactamente así. Y estamos
diciendo que el tipo de datos de nuestro adaptador al final está esta clase de titular de vista, la
clase que creamos dentro de nuestro adaptador. Bien, ahora que tenemos el adaptador de vista de reciclador
extendido, necesitamos crear algunos métodos o para ser específicos necesitamos implementar algunos métodos.
Para eso puedo presionar Ctrl más i y como tú puede ver, tenemos tres métodos obligatorios en crear
titular de vista en titular de vista vinculante y este método de obtención de recuento de elementos.
implementemos los tres.

También vas a necesitar un constructor para esta clase de adaptador. Vamos
a crearlo rápidamente presionando ALT más insertar al ir a construirlo podemos crear nuestro constructor.
Antes de explicar estos tres métodos aquí, voy a crear un modelo en mi
proyecto. Como dije anteriormente, en este video, voy a mostrar algunos contactos dentro
de mi vista de reciclador. y voy a crear un modelo para esos contactos. Entonces, dentro de mi proyecto,
voy a crear una nueva clase de Java. Vamos nombrarlo contacto. Para este contacto, voy a definir
algunas características.

En primer lugar, vamos diga el nombre de la cadena privada. Después de eso, digamos un
correo electrónico de cadena privada. Después de eso, estoy voy a definir una nueva cadena, digamos cadena
privada, URL de imagen bvoc, cómo va esta ser útil. Básicamente, vamos a mostrar algunas
imágenes de Internet usando el URL. Y después de eso, necesitamos crear nuestro
constructor. Una vez más, presionando ALT más insertar, podemos hacer eso. También vamos a crear
algunos getters y setters.

No estoy seguro de eso Los voy a usar todos. mas tarde. Si
no los usaste, los borraré. También creemos un método de dos cadenas que también
podría ser útil. Bien, ahora tenemos nuestro modelo de contacto. Cerremos esta clase. Entonces,
una vez más, dentro de mi vista de reciclador, estoy va a mostrar una lista de diferentes contactos.
Por eso, necesito pasar la lista de diferentes contactos a esta clase de adaptador.
Por eso antes de todo lo de arriba aquí, Voy a crear una ArrayList o una ArrayList privada
específica de diferentes contactos. Vamos diga ArrayList privado de contactos, llamémoslo
contactos es igual a nuevo ArrayList. Es muy importante para inicializar su ArrayList
si no lo inicializa, definitivamente obtener una excepción de puntero nulo. Además, debido a
que hemos establecido este contexto ArrayList como privado, también necesitamos crear un método setter para que
más adelante, por ejemplo, desde dentro de nuestro actividad principal, podemos configurar los datos iniciales
para nuestros contactos aquí abajo.

Después el método de obtención de conteo de elementos, voy a presionar
ALT más insertar. Y al ir a esta configuración menú, podemos crear un setter para que nuestros contactos sean liberados.
Más tarde desde el interior de nuestra principal actividad, pasaremos nuestros datos estamos usando este
método de contactos establecidos. Pero hay una muy punto importante aquí. Imagine que está obteniendo
sus datos, por ejemplo, la lista de tus contactos desde un servidor web de internet, la
lista de diferentes contactos que están llegando desde Internet puede cambiar durante el tiempo, por lo
que la lista de diferentes contactos dentro de su La vista del reciclador también debe cambiarse.

Si lo desea
en cualquier momento, puede reutilizar este conjunto método de contactos para cambiar los datos
dentro de su adaptador. Pero para refrescar los datos dentro de su vista de reciclador, necesita usar
otro método dentro de los contactos establecidos método. Ese método se llama notificar que el conjunto
de datos cambió este aquí. Así que básicamente, el conjunto de datos para nuestro adaptador en este caso
es nuestra ArrayList de contactos.

Después de cambiar la lista de diferentes contactos en cualquier momento,
vamos a notificar al adaptador que el se ha cambiado el conjunto de datos. De esta manera podemos actualizar
nuestra vista de reciclador con los nuevos datos. que hemos recibido o pasado a esta clase de adaptador.
Bien, pasemos de esta parte. Y comencemos a trabajar en estos tres métodos diferentes.
El más simple de estos métodos es esto obtiene el conteo de elementos, puede adivinar su
propósito, solo devolverá el conteo de diferentes artículos en su adaptador. En este caso, sabemos que
los datos en nuestro adaptador son una lista de contactos. así que simplemente podemos devolver la lista
de nuestros contactos, podemos decir contactos que Talla. Eso es todo lo que tenemos que hacer dentro de este recuento de
elementos. Por alguna razón, RecyclerView necesita el número de artículos dentro de su adaptador. Y aquí,
simplemente podemos devolver eso. De acuerdo, Creo que eso es suficiente para este video. En el
proximo video al principio comenzaremos trabajando en estos dos métodos.

Después de
eso, veremos cómo podemos tener más complejos diseños en vista de reciclador. Y después de eso,
veremos cómo podemos usar esa URL de imagen en para mostrar diferentes imágenes de contacto en nuestra
aplicación. bueno nos vemos en la proxima video. Bien, continuemos con nuestra charla sobre la creación de un
adaptador de vista de reciclador. Pero antes de eso, repasemos rápidamente lo que hemos hecho hasta ahora.
Así que en primer lugar, hemos añadido la dependencia de RecyclerView en nuestro script
de Gradle. Si echas un vistazo a build dot Gradle aplicación de módulo dentro de estas dependencias, puede
ver que hemos agregado una vista de reciclador. Después de eso, hemos agregado esta vista de reciclador en nuestro
archivo XML de punto principal de actividad. En el interior este diseño relativo, tenemos esta vista de reciclador. Después
de eso dentro de nuestra actividad principal. archivo punto java. Hemos inicializado nuestra vista de reciclador.
Después de eso, llegó el momento de crear. el archivo de diseño para cada artículo en nuestra vista
de reciclador. Lo hemos hecho creando un nuevo archivo de diseño llamado elemento de la lista de contactos
en nuestra carpeta de capas.

Si queremos tomar otro look Es un diseño relativo simple, que contiene
solo un TextView. Más adelante, haremos cambia esto. Después de crear el archivo de diseño para
cada elemento, llegó el momento de crear nuestro clase de adaptador. Lo hemos hecho agregando una nueva
clase de Java. En nuestro paquete, el nombre de esa clase era el adaptador de vista del reciclador de contactos
dentro de esta clase. En primer lugar, hemos creado esta clase interna, la hemos llamado titular de vista porque
es la convención. Después de eso, nosotros han extendido el soporte de vista de punto de vista de reciclador.
Necesitábamos un constructor, así que hemos creado este constructor aquí. Como dije en el video anterior,
esta clase de titular de vista es responsable de mantener los elementos de vista para cada
elemento en nuestra vista de reciclador. También podemos crear una instancia de todos nuestros elementos de la interfaz de usuario desde el interior
de nuestro archivo XML de elementos de la lista de contactos dentro esta clase de titular de vista si lo desea.

Después de
crear esta clase de titular de vista, este interior clase aquí, hemos ampliado la clase de adaptador de punto
de vista de reciclador en la que como sus datos tipo, hemos pasado nuestra clase de titular de vista
interna. Cuando ampliamos esta vista del reciclador adaptador, necesitábamos implementar tres métodos obligatorios.
Este titular oncreateview en bind Ver titular y obtener métodos de conteo de artículos.
Vamos a hablar de estos métodos en este video. Pero antes de eso, también creamos un modelo
para nuestros contactos. hemos añadido que en nuestro paquete. Este contacto tiene un nombre, un correo
electrónico y también una URL de imagen. mas tarde. En este video, veremos cómo vamos a mostrar una imagen
en función de su URL de imagen. Después creando nuestro modelo dentro de nuestra clase de adaptador,
hemos creado una lista de matriz de diferentes contextos en los que hemos nombrado a esos contactos.
También era importante inicializar esta matriz list Dije que obtendremos una excepción de puntero nulo si no
inicializamos nuestro ArrayList. También más adelante, cuando creemos una instancia de esta
clase de adaptador, necesitaremos un constructor.

Entonces, para eso, hemos creado este constructor vacío. Creo
que más adelante cambiaremos esto. También para pasar los datos a esta solicitud de adaptador.
En este caso una ArrayList de contactos hemos utilizado este método de establecer contactos en el
que lo llamaremos desde dentro de nuestro principal actividad. Después de pasar los datos a este adaptador,
notificamos al adaptador que los datos set ha cambiado para que podamos actualizar la lista de
elementos en nuestra vista de reciclador. También en En el video anterior, hemos hablado sobre este método de
obtención de conteo de elementos.

Una vez más, va para devolver el número de artículos en nuestro adaptador.
En este caso, hemos devuelto nuestros contactos. tamaño de punto de la lista de arreglos. Bien, ahora es el
momento de trabajar en estos dos métodos. Pero antes de todo, cerremos todas las clases y archivos adicionales. Y comencemos a trabajar en este método de titular de
vista onCreate. Como puedes ver, el regreso El tipo de este método es un titular de vista. Significa
que este método es el lugar para generar nuestro titular de vista para colocar para instanciar
nuestra clase de titular de vista que hemos creado aquí. Para crear nuestra clase de titular de vista. En
primer lugar, necesitamos crear un objeto de vista. Podemos hacer eso diciendo ver este aquí.
Vamos a llamarlo vista es igual a si estaban dentro de una actividad, podríamos haber dicho
obtener inflador de diseño.

Pero porque estamos dentro una clase al lado de nuestra actividad, no podemos
usar eso en su lugar, podemos decir algo como esto podemos decir inflador de diseño con punto L
mayúscula de este método aquí, puedes ver que este método está esperando nuestro contexto. También
puedes adivinar por el estilo de esto de método que este es un método estático. Aquí no
tenemos ningún contexto. Pero podemos usar este grupo de vista para obtener el contexto. Obtengamos
el contexto de este grupo de vistas. y voy a hablar de ello. Puede ver que el nombre de
este grupo de vista es principal, por lo que puede decir padre punto obtener contexto. Como puede
ver aquí, estamos creando un objeto de vista y estamos usando este inflador de diseño para generar ese
objeto de vista.

El trabajo de este inflador de diseño. es que para inflar un diseño por alguna razón, este inflador
de diseño necesita un contexto, por lo que puede decir punto desde y dentro de ese método podemos
pasar nuestro contexto. La manera de inflar nuestro el diseño con la ayuda de este inflador de diseño es
usar el método de inflado de puntos. Así que aquí después de este método Fromme, podemos decir que
inflar y después de pasar algunos argumentos, podemos generar nuestro objeto de vista.

Aquí,
necesitamos pasar tres argumentos. Primero de todo, necesitamos pasar la dirección de nuestro archivo de diseño
para cada elemento en nuestra vista de reciclador. Me refiero a ese elemento de la lista de contactos, ese archivo
XML que acabamos de crear. Entonces por eso puedo decir nuestro punto de diseño de puntos, digamos un elemento de la lista
de contactos. Después de eso, tenemos que pasar nuestra vista grupo, en este caso, su nombre es padre, una vez
más, hablaré de eso.

Y tambien despues eso, necesitamos pasar un booleano. Hablaré de
eso después de que hablemos de terminar. Avancemos rápido. Entonces, en este caso, ahora tenemos
nuestro objeto de vista. Bien, hablemos sobre estos dos argumentos aquí, este grupo de vista
y también este booleano. Básicamente, el view group es el padre de todos los archivos de
diseño.

Por ejemplo, es el padre de pariente diseño, diseño lineal y también diseño de restricción.
Este grupo de vista se puede utilizar para agrupar diferentes vistas en su interior. Si quieres
asegurarte de eso, por ejemplo, puedes ir a su actividad principal solo con fines de prueba. Si
guarda el diseño relativo privado, vamos nombre con diseño relativo. de los videos anteriores,
sabemos que si queremos comprobar algunos documentación en Android, podemos presionar la
tecla de control. Y seleccionando la clase nombre, podemos tener acceso a la documentación relativa
al diseño y también a la declaración.

Aquí puede ver que este diseño relativo está extendiendo el grupo de
vistas. Una vez más, el grupo de visualización es el padre de todos nuestros archivos de diseño. Pero, ¿por
qué estamos pasando este grupo de vista como uno de los argumentos dentro de nuestra clase de adaptador. Antes
de hablar de eso, eliminemos rápidamente esto línea de código. Hemos creado esto solo para leer
la documentación y la declaración. Asi que aquí dentro de este método de inflado, estamos pasando
este grupo de vista. Básicamente, esto dice que ¿Dónde desea adjuntar su objeto de vista,
por ejemplo, cuando creamos una instancia? de nuestro objeto adaptador desde dentro de nuestra actividad
principal, porque en nuestro diseño de actividad principal archivos, hemos definido un diseño relativo,
este grupo de vista va a ser un relativo diseño. Y este objeto de vista aquí, nuestro
archivo de diseño para cada elemento será adjunto a ese diseño relativo dentro de nuestra actividad
principal. Esa es también la razón por la cual este grupo de vista tiene el nombre del padre aquí.
Pero, ¿qué es este valor booleano aquí? puede ver que el nombre de este booleano está adjunto a
la raíz.

Y también estoy pasando falso. aquí, Acabo de decir que quiero adjuntar mi objeto
de vista a su padre. Estoy pasando falso en aquí porque si pasamos, será un trabajo
redundante, ya pasamos nuestra vista group como el padre de nuestro objeto de
vista. Y si pasas, va a ser redundante. Tenemos este booleano porque también podemos pasar
nulo aquí. Por ejemplo, si no está seguro sobre nuestro padre, y sobre dónde se adjuntará
nuestra vista, en lugar de nuestros padres grupo de vista, simplemente podemos pasar ahora, puede
ver que el nombre de este argumento ha cambiado para enrutar Entonces, si pasaste ahora, no vas
a estar seguro del lugar en el que está se adjuntará la vista.

Pero claro, esta es
una opción que tienes. Una vez más, Voy a pasar padre. Y para el booleano voy
a pasar falso. Así que al final de esta línea de código con la ayuda de este diseño, inflator
dot inflate method, tenemos nuestra vista objeto. Ahora es el momento de crear nuestro objeto de
soporte de vista. Y después de eso, devuélvelo, si echa un vistazo al constructor de esta
clase que ha creado, puede ver que este constructor aquí está aceptando una vista. Ahora
que tenemos nuestro objeto de vista, podemos crear una instancia de esta clase de titular de vista. Así que
arriba aquí antes de la declaración de devolución, Puedo decir, titular de la vista, el que existe en nuestra clase de adaptadores,
no el que está dentro de Android x that recycler vista, digamos titular de vista, llamémoslo titular,
es igual a nuevo titular de vista.

Y vamos primera revisión. Después de eso, devolvamos nuestro
soporte. Una vez más, el propósito de este El método aquí, este titular oncreateview es para crear
una instancia de nuestra clase de titular de vista para cada artículo en nuestra vista de reciclador. Más
tarde, este titular pasará a este desvinculado. ver el método del titular como puede ver aquí,
y podemos usarlo para cambiar las propiedades de nuestros elementos de interfaz de usuario. Veamos cómo podemos hacer
eso. Entonces, dentro de este método de titular de vista de desvinculación, que creo que es el método más importante dentro de
cada adaptador de vista de reciclador. Estamos vamos a usar las propiedades de nuestra clase de titular de
vista.

Por ejemplo, ahora mismo dentro de nuestro diseño archivo, solo tenemos un TextView. Entonces, si quiero
cambiar el valor de mi TextView, puedo decir algo como esto, puedo decir el nombre del txt del punto del titular,
el texto del conjunto de puntos y podemos pasar nuestro texto. Puede ver que aquí podemos usar el nombre
del txt del punto del titular si recuerda Dentro de nuestra clase de titulares de vistas, teníamos
ese campo. Pero también este campo era privado. Si recuerdas de la sesión de Java, dije que cada
vez que usas clases internas desde adentro la clase padre, puede tener acceso a todos
los campos y métodos privados de su clase interior.

En este caso, dentro de esta clase de adaptador,
podemos usar esta carpeta dot txt name, aunque sea privado. Está bien, pero ¿qué pasamos dentro
de este método de texto establecido? Como tu Como puede ver, además de esta carpeta, también obtenemos un
número entero llamado posición. es exactamente como la posición que tenemos dentro de los adaptadores
ListView. Esta va a ser la posición del artículo en nuestra vista de reciclador. Una vez
más, podemos usar esta posición para obtener el datos por ejemplo de nuestros contactos ArrayList.
Por ejemplo, dentro del método set text, yo puede decir contactos, punto, digamos conseguir.
Y aquí como índice puedo pasar la posición. Además, durante el tiempo, he visto que el nombre
de este número entero era diferente. Algunas veces se le nombraba a veces era posición y también
creo que he visto otras. Pero básicamente, este número entero es solo la posición de cada elemento en
su conjunto de datos de vista de reciclador.

De acuerdo, después de obtener los contactos correspondientes,
podemos usar dot get name, por ejemplo, para para establecer el nombre de nuestro contacto en este TextView.
Este va a ser el reciclador más simple. vista que puede crear. Puede tener todo tipo de elementos
de interfaz de usuario dentro de su elemento de lista archivo de diseño, y luego dentro de este método de titular de
vista de desvinculación.

También puede establecer diferentes Oyentes onClick para cada uno de ustedes I elementos. Pero
más sobre eso en unos minutos. Así que por esto tiempo, nuestra clase adaptadora está lista, hemos
hecho un gran trabajo y hemos creado nuestro reciclador ver clase de adaptador. Ahora que hemos creado nuestro
adaptador de vista de reciclador, es hora de cambiar volver a nuestra actividad principal y pasar algunos datos
a esta clase de adaptador. Así que dentro de este onCreate método, hemos instanciado una vista de reciclador. Después
de eso, necesitamos crear un ArrayList de diferentes contactos. Por ejemplo, digamos una
lista de matriz de diferentes contactos. Vamos el nombre que contacta es igual a new ArrayList. Una
vez más, estoy pasando los datos manualmente. aquí porque aún no sabemos nada sobre bases
de datos y servidores web.

En un mundo real aplicación, estos datos probablemente provengan de
una base de datos o un servidor web. vamos rápido agregar algunos datos a nuestros contactos ArrayList. Como puede ver, he agregado algunos contactos a mi lista
de área. Para cada contacto, he seleccionado un nombre también un correo electrónico. Y además de
eso, obtuve estas URL de imágenes de Internet.

Ahí es sólo un punto aquí. Y eso es con respecto a estas
URL de imágenes. A veces, cuando estás copiando la dirección de alguna imagen de internet, esa
dirección puede no tener extensión, por ejemplo, como este punto jpg, o punto png. Esas
imágenes no van a ser útiles aquí. Así que asegúrate de seleccionar las imágenes que tengan
la extensión de ese JPG o punto png.

Sólo porque unos alumnos me preguntaron antes como conseguir
la direccion de estas imagenes. Déjame mostrarle rápidamente un ejemplo. Por ejemplo,
en Google Imágenes, puede buscar diferentes imágenes Y al hacer clic derecho en la imagen, puede
copiar la dirección de la imagen. Por ejemplo, en otra pestaña, puedes pegar esa dirección si
termina con un punto JPG o un punto png, estás bueno para ir. Bien, después de crear sus contactos, es
hora de crear su adaptador de vista de reciclador. Para eso, voy a decir adaptador de vista de reciclador
de contacto. Vamos a nombrarlo adaptador es igual al nuevo adaptador de vista del reciclador de contactos.
No necesitamos nada para el constructor, así que estás listo para irte. Después de eso, podemos
usar el método setter dentro de nuestro adaptador. diga los contactos del conjunto de puntos del adaptador, y podemos pasar
nuestra ArrayList.

Después de crear nuestro adaptador instancia, y configurando los datos, podemos configurar este
adaptador para nuestra vista de reciclador. tan abajo aquí, puedo decir el adaptador de conjunto de puntos de vista
del reciclador de contactos. Y puedo pasar mi adaptador en un ListView. Ese sería el final de todo. Y podríamos
haber probado nuestra aplicación. Pero en la vista del reciclador, también hay un paso más. También necesitamos
establecer un administrador de diseño para nuestro vista de reciclador también. Configuremos eso rápidamente
y hablaremos de, digamos, contactos Administrador de diseño de conjuntos de puntos RecyclerView.
Aquí tenemos pocas opciones. En primer lugar, podemos pase un administrador de diseño lineal y podemos pasar De esta
manera, podemos decir un nuevo administrador de diseño lineal, en el que para su constructor, necesitamos el
contexto. Esta vez porque estamos dentro de un actividad, podemos pasar esto con seguridad como el contexto. Configurando
el administrador de diseño de nuestro reciclador ver a un administrador de diseño lineal.

Estamos diciendo que
mostrar los artículos en nuestra vista de reciclador de forma lineal. La otra opción que tenemos es el
administrador de diseño de cuadrícula, tomaremos una mirada a eso. Pero aquí, este administrador de diseño
lineal es vertical por defecto. Si tu quieres para cambiar eso, por ejemplo, si desea tener una
vista horizontal, puede hacerlo. Nosotros lo hará en un minuto después de ejecutar nuestra aplicación.
Entonces, en este punto, nuestra aplicación está listo para probar. Hemos creado nuestra vista de
reciclador que hemos instanciado aquí abajo, También hemos creado esta lista dinámica de contactos. Después
de eso, hemos instanciado nuestro adaptador. clase. Hemos configurado los datos dentro de esta clase de adaptador.
Después de eso, hemos configurado el adaptador. a una vista de reciclador. También hemos establecido un administrador
de diseño para nuestra vista de reciclador. vamos a probar la aplicación. Y veamos cómo se ve una
vista de reciclador. Como puedes ver el la lista de nombres de diferentes contactos se muestra
dentro de una vista de reciclado en mi actividad.

Si tuviera más contactos, podría haber desplazado
mi vista de reciclador y podría tener acceso a todos ellos. En este momento todos pueden caber en la pantalla.
Así que esta no es una vista de desplazamiento. Cambiemos rápidamente esta capa lineal a un
diseño lineal horizontal y veamos la diferencia. Entonces, para tener un diseño lineal horizontal, después
de este contexto, puede decir diseño lineal gerente punto horizontal, este aquí. Esta es
una constante en la que se puede utilizar en para tener un administrador de diseño lineal.

Además de
eso, también tiene un valor booleano aquí. Vamos pase que voy a pasar falso. Como puede ver,
el nombre de este booleano es inverso diseño. Si desea invertir el orden de los elementos
dentro de su vista de reciclador, puede pasar por aquí. Pero no veo ninguna razón para
hacerlo. Así que voy a pasar falso. Ejecutemos la aplicación una vez más. Y
veamos qué diseño lineal horizontal parece. Puede ver que esta vez en este momento
estamos viendo solo un contacto en el pantalla. Y eso es porque cuando creamos el diseño
para cada artículo en nuestro reciclador vista, tenemos un padre coincidente pasado como el
ancho del elemento. Pero si quieres ver otros elementos, puede desplazar la ventana horizontalmente,
puede ver que estamos viendo otros contactos. Así es como se ve este diseño lineal horizontal.
Bien, vamos vea rápidamente el otro administrador de diseño
del que hablé.

Y vamos a pasar de esto una. El nombre del otro administrador de diseño era administrador
de diseño de cuadrícula. Así que voy a borrar todos estos. Y dentro de este método de configuración del administrador
de diseño, voy a decir nuevo administrador de diseño de cuadrícula. Para las entradas de este constructor, necesitamos dos
argumentos. En primer lugar, necesitamos el contexto. Después de eso necesitamos el número de columnas.
Por ejemplo, puedo pasar dos aquí, estos dos aquí va a dividir nuestra pantalla horizontalmente
en diferentes partes, o ser específicos para diferentes columnas. Y va a mostrar
diferentes contactos en esas dos columnas. Pero antes de ejecutar mi aplicación, voy
a cambiar una cosa en la aplicación en el elemento de la lista de contactos de ese archivo XML,
voy a cambiar el atributo principal de coincidencia de mi diseño relativo para, digamos, ajustar el contenido.
Puedes ver que para este video, hemos establecido para que coincida con el padre. Voy a cambiar eso para
ajustar el contenido. Bien, ahora ejecutemos la aplicación.

Puede ver que la pantalla se ha dividido en
dos columnas diferentes horizontalmente, y podemos ver el nombre de los contactos en dos columnas diferentes.
Así que a veces es posible que desee utilizar este administrador de diseño de cuadrícula. Bien, ahora
veamos cómo podemos configurar un onclicklistener para cada uno de estos artículos en nuestra vista de reciclador.
Ahora mismo, si hacemos clic en cada uno de estos elementos, no van a hacer nada. Pero si
queremos establecer un onclicklistener, necesita hacer eso dentro de nuestro adaptador de vista de
reciclador de contactos. Abramos rápidamente esa clase. Estaba en nuestra carpeta Java dentro de nuestra carpeta de proyecto.
Adaptador de vista para reciclador de contactos. Si recuerdas, dije que este método de desvinculación del
titular de la vista es el método más importante en su clase de adaptador. Y dentro de este método, puede configurar
un onclicklistener para cada interfaz de usuario elemento que desee. Además, si recuerda dentro de este
elemento de la lista de contactos, he definido una identificación para todo este diseño relativo.

Si
lo desea, puede configurar onclicklistener en este TextView pero creo que es mejor definir el
onclicklistener en todo el relativo diseño, porque como puede ver, tenemos este relleno
de 10 dP y algunos lugares en nuestro relativo No se podrá hacer clic en el diseño si configuramos
onclicklistener en TextView. Pero porque voy a definir el oyente onClick en este diseño
relativo, dentro de mi adaptador clase, cuando he creado esta clase de titular de
vista, después de crear TextView, necesito para hacer referencia al diseño relativo también. Entonces
puedo decir un diseño relativo privado. Vamos llámalo padre. También necesitamos instanciarlo
dentro del constructor aquí abajo, yo puede decir que el padre es igual a la vista del elemento punto de
búsqueda de vista por ID, una vez más, digamos r.id punto padre. Después de definir este diseño relativo,
ahora puede tener acceso a eso dentro de este desvincular el método del titular de la vista. Entonces,
por ejemplo, aquí, puedo decir holder dot parent, que es el nombre de este diseño relativo, punto,
digamos set onclicklistener.

Puedes ver que tenemos esta opción. Pasemos nuestra nueva interfaz
onclicklistener. Y aquí, solo estoy va a mostrar algún mensaje de brindis. Digamos
tostadas. Si recuerdas cuando hemos usado este haga el método de texto en nuestro brindis, necesitábamos
un contexto. Pero aquí, no tenemos acceso. a cualquier tipo de contexto. Una vez más, hablaremos
de contexto más adelante cuando hablemos de actividades en Android, ambas dentro de esta clase de adaptador.
En este momento, no tenemos ningún contexto. Así que tenemos que pasarlo dentro del constructor.
Por ejemplo, voy a definir el contexto como la variable miembro anterior aquí, digamos
contexto privado. Llamémoslo contexto. Y después de eso, voy a recibir eso donde
este constructor, digamos contexto. Llamémoslo contexto. Dentro del constructor, puedo
decir que este contexto es igual a contexto.

Sea lo que sea ahora que he cambiado este constructor,
si vuelvo a la actividad principal, debería ver alguna advertencia roja. Cuando hayamos instanciado nuestra
clase de adaptador, necesitamos pasar nuestro contexto una vez más, porque esta vez estamos dentro de esta
actividad, simplemente puedo pasar esto. Asi que de esta manera dentro de nuestro adaptador, ahora tenemos
un contexto. Y cuando creamos nuestro mensaje de brindis, podemos pasar eso como el contexto. Para el texto,
voy a mostrar el nombre del contacto. Así que puedo decir contactos con la ArrayList que
teníamos, digamos que obtener una vez más, voy para utilizar esta posición como índice.

Digamos que me atrapa. Además, si ha notado que tan
pronto como he usado esta posición dentro este método onClick, porque estamos dentro de una
interfaz, esta palabra clave final ha sido añadido a la declaración de este entero. Agreguemos
también otro texto aquí, vamos a decir seleccionado. Ejecutemos rápidamente la aplicación. Y
vamos a ver si hemos configurado correctamente el onclicklistener en nuestro diseño relativo. Hagamos
clic en el primero margravine seleccionado romance social arona social. Parece que nuestro onclicklistener
está funcionando bien. De acuerdo, Creo que es un buen punto para detener el video
aquí. queria hablar de esa imagen URL y cómo mostrar eso en nuestra vista de reciclador.
Pero parece que este video está recibiendo una un poco largo Así que voy a hablar de eso en
el próximo video. Además de eso vamos a también hable sobre el uso de una combinación de vista de reciclador
y vista de tarjeta.

La combinación de estos dos generarán un aspecto realmente hermoso para nuestra
vista de reciclador. Bien, nos vemos en el próximo vídeo En el video anterior, hemos creado
una vista de reciclador funcional. por funcional Quiero decir, hemos creado un esqueleto de nuestra
vista de reciclador. Pero ahora mismo, es muy simple. Si observa el elemento de su lista de contactos en
ese archivo XML, puede ver que cada elemento en su vista de reciclador es solo una vista de texto
simple. En este video vamos a trabajar alrededor de esto y vamos a ver cuánta flexibilidad
tenemos cuando estamos trabajando con vistas del reciclador.

Lo primero que voy a hacer
aquí es usar una vista de carrito en su lugar de este TextView simple y su padre, que es un
diseño relativo, vamos a mostrar nuestro contactos en una vista de tarjeta. Para eso, primero que nada,
necesitamos agregar las dependencias de vista de tarjeta en nuestro proyecto. En videos anteriores cuando queríamos
usar la vista de tarjeta en nuestro proyecto, hemos agregado la biblioteca de diseño de materiales.
Y a partir de ahí hemos utilizado el carro de material. vista en lugar de usar la biblioteca de diseño
de materiales. Esta vez voy a usar el nativo Tarjetas Android Vamos a ver dónde podemos encontrar
esa tarjeta ver las finanzas. Así que si buscas para las dependencias de vista de tarjeta, terminará
con un enlace como este, asegúrese de poner Android x en su búsqueda porque si busca Android,
puede obtener algún enlace como este.

Echemos un vistazo rápido a eso. Aquí dentro
de estas dependencias, puedes ver que está utilizando la biblioteca de soporte de Android dot
de com dot. No estamos usando bibliotecas de soporte. en nuestro proyecto ahora mismo, si recuerdas, cuando
hemos creado nuestro proyecto, tenemos agregó los artefactos de Android x. Si quieres
asegurarte de eso, siempre puedes comprobar su archivo gradle. Hagamos eso rápidamente. Entonces, en
mi panel de proyecto dentro de este script de Gradle, en esta compilación de la aplicación del módulo Gradle,
en estas dependencias, puede ver que siempre estamos utilizando Android x. Si por alguna razón está utilizando
las bibliotecas de soporte, puede implementar esta versión de bibliotecas de soporte. Pero debido a
que estamos usando Android x, esta dependencia es no va a ser útil para nosotros. Así que asegúrate
de incluir este Android x en tu búsqueda. Y el primer enlace del sitio web oficial de desarrolladores
de Android es probablemente nuestro necesario Enlace. Luego aquí, puede ver las dependencias,
puede ver que esta vez, vamos a agregue la dependencia de los paquetes de Android
x.

Copiemos esta línea de código. y agreguemos en nuestro proyecto. Entonces, una vez más, dentro de este archivo
de aplicación del módulo Gradle creado. En el interior estas dependencias, vamos a agregar nuestra dependencia.
Hagamos eso rápidamente aquí. Y sincronicemos nuestro proyecto. Ahora que
agregué dependencias cardview a mi proyecto, Puedo usarlo en mis archivos de diseño, por ejemplo, dentro de
este elemento de la lista de contactos en ese archivo XML, en lugar de este diseño relativo, voy a usar
la vista de tarjeta, pueden ver que viene de los paquetes de Android x. Si recuerda en las vistas
de tarjeta, teníamos dos atributos que pueden ser útil aquí. La primera es la elevación
de la carta, esta de aquí, que te dará algunas formas 3d a nuestra tarjeta. Por ejemplo, si
digo cinco dp, obtendremos una elevación de FTP. El siguiente se llama radio de esquina.
Este de aquí, que una vez más, voy para ahorrar cinco dB, cambiaré estos números si
fuera necesario. Y también dentro de este vista de tarjeta, en lugar de este TextView, voy
a usar un diseño relativo.

La razon de la el diseño relativo es porque voy a incluir varios
elementos de la interfaz de usuario y voy a para usar algunos de los atributos como el diseño
debajo del centro, horizontal y atributos como que. Y esos atributos están disponibles dentro de un diseño
relativo. Así que por eso, en primer lugar, aquí, voy a crear un diseño relativo. Para el
ancho y la altura, digamos que coincidan padre. Y creo que eso es suficiente para nuestro
diseño relativo. Dentro de eso, en primer lugar, Voy a mover este TextView. En primer lugar,
centremos este TextView horizontalmente, digamos centro horizontal y pasemos.
Aparte de eso, cambiemos el estilo. de este texto. Eso es un estilo de texto. Y vamos
a cambiarlo a libro. Después de eso, voy a cree otra vista de texto y mostraré el correo electrónico
de los contactos. Agreguemos eso después esta vista de texto. Cambiemos el nombre de contacto a correo
electrónico de contacto.

Y vamos a cambiar el ID al correo electrónico de texto. También vamos a mover esto debajo de
nuestro nombre de contacto. Diseño a continuación, digamos nombre de texto. Vamos a cambiar también el estilo
aquí. Digamos que se agrega, creo que es mejor agregue algo de margen superior margen superior,
digamos siete dp. También voy a borrar el centro. atributos horizontales. Bueno despues de estos dos textos
les voy a mostrar la imagen de los contactos para eso voy a crear una vista de imagen. Digamos
vista de imagen para el ancho y alto de esta vista de imagen porque quiero tener una
vista de imagen consistente voy a poner el números manualmente porque mis imágenes
provienen de Internet. y no se nada sobre su tamaño. Por ejemplo aquí voy
a decir 550 dP, creo que eso sería multa. Por la altura también. Una vez más, 150 dP también
le dan una identificación a esta vista de imagen.

Digamos imagen. Voy a mover estos dos debajo de mi
correo electrónico de contactos. digamos diseño abajo. Y vamos a pasar el correo electrónico. Agreguemos
un margen superior, creo que 10 dP estaría bien. También voy a centrar esta imagen horizontalmente. Así
que digamos centro horizontal. y vamos pasar por. Agreguemos también un marcador de posición,
voy a decir fuente. Y vamos a abordar una de nuestras imágenes en nuestro paquete. Creo
que este fondo del lanzador IC estaría bien. De acuerdo, creo que es suficiente para nuestra vista
actual, no creo que necesitemos nada más, echemos un vistazo rápido a cómo se ve nuestra
vista actual.

Creo que necesito aumentar este radio coronario. Por ejemplo, digamos 10.
Aquí, eso debería ser mejor. Además eso, aumentemos la elevación de esta carta.
Puedes jugar con estos números hasta que estás satisfecho Ya casi he terminado con este archivo
de elementos de la lista de contactos, solo voy a reformatea mi código para que cuando publique este código,
tú y yo tengamos el mismo código base. Para eso, voy a ir a esta pestaña de código aquí.
Y aquí abajo, voy a seleccionar este código
de reformateo, pueden ver que el código tiene sido reorganizado. Bien, ahora que he cambiado este archivo
de diseño, también debemos aplicar el cambios dentro de nuestro archivo de adaptador de vista de reciclador
también. Así que aquí abajo, cuando hayamos creado nuestra clase de titular de vista, debemos abordar todos
los elementos nuevos en nuestra lista de contactos archivo XML de punto de elemento. En primer lugar, hemos eliminado
este diseño relativo y lo hemos reemplazado eso con la vista actual. Así que aquí, en lugar
de usar un diseño relativo, voy a decir vista actual.

Y también agreguemos nuestro texto de correo
electrónico, lo agregaré en la misma línea con este nombre de texto. Digamos correo electrónico
txt. Y vamos a inicializarlo aquí dentro de este constructor. Entonces, digamos que el correo electrónico de txt es igual
a la vista de elemento, punto de búsqueda, vista por ID r.id punto correo electrónico de texto. También necesitamos agregar algunas comillas
dentro de este método de titular de vista de desvinculación. Para ejemplo, vamos a mostrar el correo electrónico de
los contactos, tenemos que hacerlo aquí. Digamos correo electrónico de txt de punto de titular, texto de conjunto de
puntos. Pasemos nuestros contactos, no obtengamos cuál para el índice, Voy a pasar la posición, digamos que no recibas el correo
electrónico. antes de mostrar la vista de imagen, Voy a ejecutar la aplicación.

Y
voy a ver que si todo funciona multa. Así que vamos a ejecutar la aplicación. Puede
ver instantáneamente que con esta vista cambia cuánto hemos mejorado nuestro diseño. Pero ahora
mismo este diseño necesita algunas modificaciones. Por ejemplo, necesitamos agregar un margen entre estas vistas
de tarjeta. Y también tenemos que agregar un margen superior para este nombre de txt. Apliquémoslos
rápidamente. Entonces, si vuelvo a mi contacto archivo XML de punto de elemento de lista, para esta vista de
tarjeta principal, voy a agregar un margen que es un margen top o en lugar de margin top, solo voy a decir
margin.

Creo que 10 dP estaría bien. Además de eso, también agreguemos un margen para este
TextView. Digamos margen superior y eso es un siete dp. Agreguemos también un margen pensado para este correo
electrónico. Así que aquí para este correo electrónico txt, Voy a decir que el margen comience este
aquí y voy a decir cinco dp. Corramos la aplicación una vez más. Puedes ver que es
mucho mejor. Ahora, también puedes ver el dos atributos que hemos agregado para nuestras
vistas actuales mucho mejor aquí. Primero de todo, hemos agregado este radio de esquina,
puedes verlo aquí y también esta forma 3d con una sombra detrás de nuestra vista de tarjeta es
para ese llamado atributo de elevación. Junto a ese la razón por la que vemos dos columnas aquí es
por ese administrador de diseño de cuadrícula que hemos pasado a nuestra vista de reciclador.
Si desea tener una sola columna, puede cambiar eso, por ejemplo dentro de nuestra actividad principal.

Aquí
abajo, en lugar de un administrador de diseño de cuadrícula, podemos pasar un administrador de diseño lineal. Así que
aquí, digamos un nuevo administrador de diseño lineal. Y pasemos nuestro contexto. Antes de ejecutar
esta aplicación, me aseguraré de haber centré mi vista de reciclador. Pasemos a nuestro archivo
de diseño de actividad principal. y centrémonos nuestra visión de recicladores. Digamos centro
horizontal. Y aceleremos. también voy a cambie el atributo de ancho aquí para ajustar el
contenido. Ejecutemos la aplicación una vez más. En este momento puede ver que solo tenemos tres contactos
en nuestra pantalla, pero podemos desplazar nuestra punto de vista del reciclador que podríamos hacer eso.
Puedes ver que si nuestro artículo no encaja en el pantalla. Nuestra vista de reciclador es un desplazador,
pero además de eso, también verifiquemos el onclicklistener Hagamos clic en este enlace. vista de carrito Y se puede
ver que el romance social seleccionado, parece para ser perfecto.

Bien, ahora trabajemos en esta vista
de imagen, veamos cómo podemos mostrar nuestra imágenes Para eso tenemos múltiples opciones,
la más fácil es usar una librería externa llamado deslizamiento. Agreguemos eso a nuestro proyecto.
Y hablaremos de ello. Así que si buscas para la dependencia de deslizamiento, el primer enlace
de esta página de GitHub es el enlace a ese externo biblioteca. Veamos qué aspecto tiene. aquí
abajo, deberías ver las dependencias. En primer lugar, debemos agregar estos dos a
nuestros repositorios. A ver si los tenemos en nuestro archivo gradle. Abramos nuestro panel de proyecto
en los scripts de Gradle dentro de esta compilación que el proyecto Gradle genera en estos repositorios, necesitamos
agregar los repositorios de Maven.

Vamos agregarlos rápidamente. Voy a copiar este
aquí. Y lo voy a agregar dentro de estos repositorios para todos los proyectos. Además de eso, necesitamos agregar estas dos dependencias a nuestro
proyecto. Dentro de este punto de compilación Gradle aplicación de módulo de diseño, necesitamos agregar las dependencias.
Sincronicemos nuestro proyecto. Y mientras se hunde, Hablemos también del SQLite. So glide es una biblioteca
de carga de imágenes en la que se ha desarrollado de Google para que puedas usarlo de forma segura en
tus proyectos. glide tiene muchas funcionalidades en el que uno de ellos es cargar imágenes de
internet. Más adelante en el curso, vamos a ver otras funcionalidades también.

Pero si
quieres saber más sobre por qué tienen documentación aquí, hagamos clic en la documentación
de las luces de este vehículo. Puedes leer esta página si quieres. Pero hablaremos más sobre
el planeo más adelante en el curso. Bien, vamos volver a nuestro proyecto. Y parece que hemos agregado
la biblioteca de deslizamiento con éxito. Cerremos estos dos archivos Gradle. Además, cerremos
este archivo XML de punto principal de actividad. Y vamos a nuestro adaptador de vista de reciclador de contactos.
Ese es el archivo java. Así que dentro de esto desvincular el método del titular de la vista, voy a mostrar
las imágenes de diferentes contactos.

Para eso Voy a usar el deslizamiento dentro de este método.
Veamos cómo podemos usar Glide. Con el fin de mostrar imágenes con la biblioteca Glide, puede
decir algo como esto, puede decir Glide con G mayúscula. Y después de eso, necesita pasar
su contexto, puede hacerlo diciendo que con para el contexto aquí, voy a pasar mi
contexto. Como recordatorio, tenemos el contexto a través del constructor de esta clase.
En el video anterior, estoy hablando de esto. uno aquí. Ahora que tenemos nuestro contexto, podemos
usarlo con este método de ancho. Después eso, voy a decir que esta imagen va a ser un
mapa de bits. Así que digamos que como mapa de bits Después de eso, necesitamos pasar la fuente
de nuestra imagen. En este caso, vamos a pase la URL de la imagen para nuestra imagen de contacto,
digamos carga de puntos. Y pasemos nuestro contexto URL de la imagen para eso voy a decir contactos que
se obtienen una vez más, voy a usar el posición como índice.

Esa es una URL de imagen de obtención
de puntos. Después de eso, tenemos que pasar la imagen. vista en la que queremos mostrar nuestra imagen
dentro de la que voy a guardar eso. Y yo soy voy a abordar mi vista de imagen, que puedo decir imagen
de punto titular. Pero para eso primero de todos, necesitamos agregar esta imagen dentro de esta
clase de titular de vista. Nunca hicimos eso. tan adentro esta clase de titular de vista, en primer lugar,
voy a decir vista de imagen privada. Llamemos es imagen. Y también vamos a instanciarlo dentro del
constructor. Digamos que la imagen es igual a elemento ver punto buscar vista por ID r.id punto
imagen. Esta es la forma más sencilla de usar Glide. En primer lugar, necesitamos pasar nuestro contexto.
Después de eso, tenemos que decir que va ser un archivo de mapa de bits. Después de eso, necesitamos
pasar la fuente de nuestra imagen con este comienzo método de carga. Y después de eso, necesitamos especificar
la vista de imagen que vamos a mostrar a nuestro imagen dentro de que esto va a funcionar bien.

Pero
antes de ejecutar mi aplicación, necesito haz una cosa más. Vamos a cargar diferentes imágenes
de internet. Para eso necesitamos para agregar un permiso en nuestro archivo de manifiesto
para acceder a Internet. Hasta ahora, no hemos habló de pedir permiso. Veamos rápidamente cómo
podemos hacer eso. Así que en nuestro proyecto principal dentro de la carpeta de la aplicación,
dentro de esta carpeta de manifiesto, si abrimos este Android archivo XML manifest dot, podemos agregar nuestro permiso aquí
arriba de la etiqueta de la aplicación.

Aquí, Puedo abrir una etiqueta y la etiqueta será el permiso
de los usuarios, esta financiación aquí y nosotros necesita evaluar Para encontrar el tipo de permiso,
busquemos permiso de Internet, usted puede ver este permiso de Android que internet. Cerremos
nuestra etiqueta. hay muchos mas conceptos con respecto a estos permisos, hablaremos de
ellos más adelante en el curso, para algunos permisos, debe crear una lógica de interfaz de usuario
para pedirle al usuario que conceda ese permiso a su aplicación. Pero este permiso de Internet
es un permiso seguro.

Y si lo agregas su archivo de manifiesto, el sistema Android
lo otorgará automáticamente. Eso es todo tenemos que hacer para solicitar un permiso de Internet.
Más adelante hablaremos más sobre permisos Ejecutemos nuestra aplicación. Y
veamos si podemos mostrar con éxito imágenes diferentes Puedes ver que estamos viendo diferentes imágenes
aquí. Pero hubo un problema cuando corrí esta aplicación después de agregar el permiso por
primera vez.

La primera vez que no estaba capaz de ver las imágenes. Y eso es porque hemos cambiado
nuestro archivo de manifiesto. Cuando sea cambia su archivo de manifiesto, necesita desinstalar
la aplicación e instalarla una vez otra vez. Entonces, si no ve imágenes diferentes,
asegúrese de desinstalar la aplicación y instalarlo una vez más. Después de eso, deberías ver
diferentes imágenes. Revisemos también el otros se puede ver que las imágenes se están cargando
desde internet después de unos segundos. Tú Puede ver que nuestro reciclador ve las vistas de nuestro carrito
y también la biblioteca Glide funciona perfectamente.

La combinación de estos tres crearemos un diseño
realmente hermoso para cuando queramos para mostrar una lista de diferentes elementos. Y probablemente
a estas alturas puedas ver la flexibilidad y todo de las funcionalidades de la vista del reciclador, puede
ver que podemos modificar nuestros archivos de diseño, nuestros archivos de diseño de elementos de lista como queramos.
Bien, creo que es suficiente para este video. solo para ver mejor la vista de nuestro reciclador.
Voy a cambiar el administrador de diseño lineal una vez más a un administrador de diseño de cuadrícula.

Y después
de eso, terminaremos nuestro video. Así que cambiemos vuelva al administrador de diseño de cuadrícula y ejecutemos
nuestra aplicación una vez más. Puedes ver eso nuestro RecyclerView parece perfecto. Bien, creo que
es suficiente para este video. En el proximo video, vamos a ver cómo podemos usar diferentes
fuentes para nuestras vistas de texto, por ejemplo, y fuente externa que no tenemos en Android Studio.
Bien, nos vemos en el próximo video. En este video, vamos a hablar sobre diferentes
fuentes, cómo podemos aplicar diferentes fuentes a nuestro TextView.

Si esa fuente existe
en nuestro proyecto, o si vamos a agregarlo externamente. Creo que este será un
video corto. En primer lugar, veamos cómo podemos agregar una fuente externa a nuestro proyecto.
Antes de eso, voy a ir a este diseño y asigne una ID a este TextView. Vamos a
nombrarlo. txt Hola. Para agregar un fuente externa en su carpeta de Recursos,
necesita crear un nuevo directorio, puede haga clic en su carpeta de recursos. Al seleccionar
nuevo y Directorio de recursos, puede crear ese directorio. Hemos hecho esto cuando hemos
creado un archivo de recursos de menú. aquí, solo necesita definir el tipo de su recurso, puede
buscar la fuente aquí. Y eso es Todo lo que necesitas hacer. Ahora puede ver que
tiene esta carpeta de fuentes y puede copiar su fuentes externas en esta carpeta. Por ejemplo, he
preparado esta fuente. Pero antes de agregar esta fuente en mi proyecto, necesito hacer algunas
modificaciones. Por ejemplo, necesito cambiar el nombre de este. Para agregar esta
fuente a su proyecto, debe seguir algunas reglas. Por ejemplo, debe cambiar
todas las mayúsculas a minúsculas. Y Además, no debe usar guiones, en lugar de eso,
puede usarlos en sus líneas.

Así que aquí, Voy a cambiar un poco el nombre. Cambiemos
esta oportunidad de aprender. Después ha cambiado el nombre, simplemente puede copiar
su fuente y dentro de su carpeta de fuentes, puedes pegarlo. El nombre está bien. Solo presionemos
OK. Ahora en su carpeta de fuentes, usted tener este Amsterdam, el TTF. Si su fuente tiene
alguna vista previa, puede ver eso por doble haciendo clic en su fuente. Bien, ahora que hemos agregado
esta fuente, veamos cómo podemos usar en nuestra vista de texto. Cambiemos a nuestro modo
TextView.

Y en este TextView tenemos un atributo llamada familia tipográfica. Este de aquí. Y ahora
podemos abordar nuestra fuente, que es agregar fuente barra amster. No. Usemos para dividir aquí
y veamos si podemos ver nuestra fuente en la vista previa. Puede ver que en este momento
la fuente no se ha renderizado, pero creo esto cambiará cuando ejecutemos nuestra aplicación.
Ejecutemos la aplicación y veamos si podemos cambiar con éxito la fuente hasta la vista
artix, puedes ver que esta hermosa fuente se ha aplicado en nuestro texto además de usar sus
propias fuentes en su proyecto, también puede use algunas fuentes llamadas fuentes de Google. Veamos
rápidamente cómo podemos usarlos. Entonces por eso, Voy a cambiar a la vista de diseño y buscar los atributos
de la familia de fuentes aquí. Pero antes eso, tenemos que hacer clic en esta vista de texto.
Busquemos la familia de fuentes.

Puedes ver que tenemos este atributo, y además de nuestra fuente,
que ahora mismo está en la fuente Amsterdam, tienes este icono desplegable. Si hace clic
en eso, puede ver que en Android, tenemos algunas fuentes que podemos usar. Pero además de todo
esto, tenemos esta opción de más fuentes. Y cuando hacemos clic en eso, puede ver que
al menos tenemos muchas más fuentes. Además, puede ver la fuente aquí, dice fuentes de
Google, estas fuentes de Google son gratuitas, y puede utilizarlos de forma segura en sus aplicaciones.
Solo necesita agregar una licencia en su aplicación en algún lugar.

Bien, veamos qué tenemos en estas
fuentes de Google. Por ejemplo, tenemos esta caligrafía T o algo así, que podemos
usar. Aquí puedes ver que tenemos dos opciones, crear una fuente descargable y
agregar una fuente a su proyecto. la primera opción significa que no desea agregar la fuente
a su proyecto. Y desea utilizar el en línea fuente cada vez que un usuario utiliza su aplicación.

Si
está creando una aplicación fuera de línea, esta opción aquí podría no ser tan útil.
En lugar de eso, voy a usar el segundo opción que agregará la fuente a mi proyecto.
Pero aumentará el tamaño de la final. archivo apk. Además, aquí, puedes ver esta vista previa
de algunas fuentes, tienes una vista previa más de una vista previa. Y puede seleccionar entre
ambos para esta fuente, solo tenemos esta regular. También aquí abajo, puede ver la licencia
que necesita mostrar en algún lugar de su aplicación. Para la aplicación simple.
No voy a hacer eso porque esto no es va a ser una aplicación comercial.

Bien, agreguemos
esta fuente a nuestro proyecto presionando Bien, puede ver que esta fuente de caligrafía
se ha agregado a mi carpeta de fuentes. Yo creo esto tendrá una vista previa. Entonces, si hago clic
en eso, puedes ver una vista previa de tu fuente. Ahora, si ejecuto mi aplicación, debería ver esta
fuente en lugar de esta fuente Amsterdam. Puede ver que la fuente se ha aplicado correctamente.
Para algunas fuentes, es posible que tenga diferentes estilos, por ejemplo, regular o normal, Italia,
negrita y negrita cursiva. vamos rápido ver una fuente que tiene esos estilos. Y veamos cómo
podemos aplicar esos estilos en nuestro texto. puntos de vista. Una vez más, voy a hacer clic
en este menú desplegable. Y una vez más, voy para hacer clic en este más fuentes. La fuente
que voy a usar aquí se llama langosta.

Dos. Si hace clic en eso, puede ver que en este
panel de vista previa, tiene cuatro opciones, Voy a agregarlos uno por uno en mi proyecto.
A la primera la voy a llamar langosta para subrayar regular. Y también lo voy
a agregar a mi proyecto, no voy a hacer una fuente descargable. Presionamos Aceptar. Y hagamos
lo mismo con las otras tres diapositivas. Puede ver que ahora tenemos cuatro fuentes diferentes
de langosta dos. Si queremos aplicarlos en nuestras vistas de texto, podemos hacer lo mismo que
hicimos con las otras fuentes, que solo teníamos una fuente Por ejemplo, dentro de nuestra vista de texto.
Para esta familia de fuentes aquí, podemos pasar las fuentes manualmente especificando el nombre de nuestra
fuente, o podemos pasar este trabajo de estilo al androide.

Por ejemplo, podemos agregar un estilo
de texto aquí. Y podemos especificar el tamaño que puede ser bastante audaz o normal. En este momento,
si selecciono el estilo de texto como negrita y si cambio esta langosta a Bold Italic a solo
langosta a normal. hagamos rapido que. Si ejecuto mi aplicación, obtendré un estilo
más audaz para esta fuente específica. Vamos a ejecutar eso rápidamente. Puede ver que tenemos
esta fuente en negrita, pero esto aquí no es preciso porque hemos agregado el estilo manualmente. Esto en
realidad aquí está usando nuestra langosta a la fuente normal. Y si queremos usar una fuente específicamente
de langosta en negrita, podemos crear una familia de fuentes para eso.

Veamos rápidamente cómo podemos
crear una familia de fuentes. Así que en mi fuente carpeta de recursos, puedo hacer clic con el botón derecho y,
al presionar el archivo de recursos de nuevas fuentes, podemos crear una nueva familia tipográfica. Para el nombre del archivo,
voy a poner el nombre de la fuente, que en este el caso es langosta dos. Vamos a crear eso. Dentro de
esta familia tipográfica. Voy a definir cuatro fuentes, necesitamos tres atributos aquí. En primer
lugar, vamos a necesitar la fuente en sí. Para el primero, voy a pasar la langosta a la
fuente normal.

Después de eso, voy a pase un estilo para esta fuente, digamos estilo
de fuente. Puedes ver que aquí tenemos dos estilos Italia, y normal. Aquí dentro, voy a
pasar normal. Pero si quieres pasar un estilo más audaz, debe pasar eso como un peso de
fuente. Veamos rápidamente que puedes ver que tenemos este atributo de destino de fuente en el que podemos
pasar un número. Básicamente, para la normalidad fuentes, estos pesos deben ser 400, mostraré
un enlace donde puede encontrar el exacto peso de fuente que necesita. Pero por ahora,
pasemos 400. Y terminemos de crear nuestro fuente. Después de eso, voy a crear tres elementos
de fuente más.

Y voy a pasar las otras tres fuentes, digamos font. Una vez
más, debemos abordar nuestra fuente. Esta vez, digamos langosta a retallick. Para este estilo,
voy a decir italiano esta vez. Y una vez nuevamente, debido a que esta no es una fuente en negrita,
vamos a pasar 400 como el peso de la fuente. Agreguemos rápidamente dos fuentes más para los estilos
en negrita. Puedes ver que para la negrita normal fuente I primero normal como el estilo de fuente. Pero
para la fuente italiana I primero italiano, el La única diferencia entre una fuente en negrita y una de
tamaño normal está en esta espera por la normal. ver las 400 y media tanto para las negritas que tenemos
más allá de las 700. Antes de continuar, vamos ver rápidamente dónde podemos encontrar el peso de fuente
adecuado. Entonces, si busca el peso de la fuente Android desarrollador, puede ver el peso de esta fuente
en developer.android.com. Veamos rápidamente que. Y aquí dentro de estas propiedades complementarias,
podemos ver diferentes pesos para diferentes fuentes Por ejemplo, tenemos más de 400 para las
fuentes normales, que es el número correcto.

Para los atrevidos, también pasamos los 700 creo
en Android, no veréis mucha diferencia. Si pasa, por ejemplo, 500. Cuando se procesan
las fuentes, la única diferencia es entre estos 407 100. Así que si quieres puedes
consultar esta página web. Bien, cambiemos volver a Android Studio. Ahora que hemos creado esta familia
de fuentes, podemos pasarla en nuestra actividad. archivo XML de punto principal. Pero antes de eso,
puede ver que tenemos muchas advertencias aquí. Si pasa el cursor sobre uno de ellos, dice que estos
atributos solo se pueden usar en el nivel de API 26 y más. Entonces, si su aplicación se ejecuta en un nivel
de API inferior a ese, esta familia de fuentes no se aplicará. He visto que algunas personas usan el espacio
de nombres de la aplicación en lugar de este Android. Por ejemplo, puede ver aquí arriba, por supuesto, debe
agregar el espacio de nombres. Presionando ALT más enter, puede ver que se ha agregado
este nuevo espacio de nombres. no voy a hable sobre el espaciado de nombres aquí.

Pero básicamente
es como importar en un archivo XML. En otra lenguajes de programación, también tienes espacios de nombres.
Básicamente, definirá que donde este el atributo proviene. Entonces, algunas personas están usando
este espacio de nombres de aplicaciones. Dicen que si usa este espacio de nombres de la aplicación en lugar de Android,
la familia de fuentes se aplicará en APA inferior niveles también. Pero, sinceramente, no vi
esa diferencia. Así que voy a cambiar esto uno de vuelta a Android. Y en mi actividad, archivo XML
de punto principal, voy a pasar la familia de fuentes.

Así que aquí, en lugar de pasar langosta a normal,
voy a pasar langosta a este archivo XML que acabamos de crear. Y ahora de esta manera le
estamos pasando el trabajo de estilo a Android. sistema. Entonces, aunque estamos usando esta langosta porque
hemos establecido un estilo en negrita en aquí, al final, nuestra fuente se convertirá
en esta langosta en negrita. Corramos nuestra aplicación y veamos si podemos ver una fuente
en negrita. Puedes ver que estamos viendo la fuente en negrita. Una vez más, la diferencia
aquí es que esta vez estamos usando exactamente esta langosta a la negrita. Pero cuando hemos pasado
de bogavante a regular y hemos fijado el estilo en negrita, solo Android Studio aumenta el
tamaño.

A veces puede haber algunas diferencias. entre diferentes estilos de fuente. Cuando el diseñador
creó la fuente, esta forma de crear una familia de fuentes es mucho más precisa.
Bien, justo antes de terminar este video, voy para mostrarle cómo puede aplicar diferentes fuentes en
Java. Por ejemplo, dentro de este archivo de diseño en la vista de diseño, voy a agregar un botón.
Y al hacer clic en este botón, voy para cambiar la fuente de este TextView. Cambiemos
el ID de este botón. Ante todo, digamos btn, cambie la fuente. Y también agreguemos
algunas restricciones. Y cambiemos el texto. Sólo voy a decir cambio en nuestra actividad
principal.

En primer lugar, vamos a inicializar estos dos artículos. Después de eso, configuremos un onclicklistener. Para
nuestro botón. Digamos que se establece onclicklistener nuevo onclicklistener. Antes de este oyente onClick,
voy a crear un tipo de letra. Y después eso, voy a cambiar el tipo de letra de este
TextView dentro de este método onClick. Arriba aquí, digamos tipo de letra, puede
ver que proviene de Android dot paquete de gráficos.

Vamos a nombrarlo tipo de letra
es igual a y aquí vamos a obtener una referencia a nuestra fuente en nuestra carpeta de Recursos. Si
intentara obtener recursos aquí, como podemos ver, que obtiene recursos que obtienen fuente. Y si
paso mi dirección de fuente, por ejemplo, si diga R punto fuente punto, digamos Amsterdam, puede ver
que estamos recibiendo una advertencia roja aquí Y la advertencia dice que este método solo está
disponible en el nivel de API 26 y superior.

Puede superar este problema utilizando la compatibilidad de recursos.
En lugar de este método de obtención de recursos. Veamos rápidamente eso. Así que aquí, puedo decir fuente
de punto de compatibilidad de recursos. Primero de Todo, necesitamos el contexto por el cual les voy a pasar
esto. Después de eso, tenemos que abordar nuestra fuente, digamos nuestra fuente punto punto Ámsterdam.
Entonces, en lugar de obtener recursos, puede usar esto resource compat, que es una buena opción para la compatibilidad
con versiones anteriores. Después de haber definido su tipo de letra dentro del método onClick, puede
decir txt.

Hola, esa es esa tipografía. Y puedes pasar tu tipo de letra. Así de simple
puedes cambiar la fuente de tu texto para ejecutar la aplicación. Y vamos a ver
si todo funciona bien. Ahora mismo el la fuente es langosta también. Si hacemos clic en este botón,
podemos ver que la fuente está cambiando a Amsterdam, parece ser perfecto. Bien, creo que es suficiente
para este video. Y también para el caso para esta sección del curso.

Hay muchos
más conceptos y herramientas que tienes cuando está diseñando sus archivos de diseño. Por
ejemplo, tiene cajones de navegación, tiene tiene vistas de navegación inferiores, tiene animaciones
que puede aplicar en su aplicación. Pero No voy a hablar de ellos en esta sección
del curso porque hay muchos más conceptos de los que aún no sabemos nada sobre
ellos. Más adelante en el curso veremos muchas más herramientas para diseñar nuestros archivos
de diseño.

Bien, en el siguiente video, vamos tener un desafío rápido para esta sección
del curso para asegurarnos de tener aprendido todo lo que hemos hablado hasta ahora. Nos
vemos en el próximo vídeo. Como ya he dicho al final del video anterior, En este video,
vamos a tener un desafío rápido. El propósito de este desafío es asegurarnos
de que hemos aprendido todo lo que tenemos hablado hasta ahora.

Y aquí está nuestro desafío,
quiero que crees este archivo de diseño simple. Puede pensar en este archivo de diseño como un simple
registro en el que estamos recibiendo el nombre del usuario, correo electrónico, contraseña,
sexo y también el país. Aparte de eso tenemos esto vista de imagen aquí más este botón que normalmente
en una aplicación normal, este potencial navega a la galería del usuario, o tal vez
a la cámara para tomar una foto. Pero porque todavía no sabemos nada al respecto, este botón
y esta vista de imagen son solo para mostrar propósitos, estos no van a hacer nada.

Solo si
lo desea, puede mostrar un mensaje de brindis después de hacer clic en este botón de imagen. Además
de eso, tenemos este texto de Acuerdo de licencia que abajo puede ver esta casilla de verificación
si todo funciona bien. Cuando hacemos clic en el registro, vamos a mostrar un snack bar indicando
que el usuario se ha registrado exitosamente. Pero si, por ejemplo, el usuario deja
vacío uno de estos textos de edición, estás va a mostrar una advertencia.

Además de eso, nos aseguraremos
de que el usuario esté de acuerdo con nuestro acuerdo de licencia. Bien, este es nuestro desafío. Como
puede ver, este es un archivo de diseño simple. Estoy seguro de que puedes hacerlo tú mismo. Pero
como puedes ver, vamos a practicar un muchas cosas que hemos aprendido en En este
apartado del curso, vamos a trabajar con una gran cantidad de elementos de interfaz de usuario además
de eso, como puede ver, estamos implementando temas de materiales. Además, vamos a mostrar unas cafeterías.
Y además vamos a ver cómo podemos inicialice y trabaje con nuestros elementos de interfaz de usuario
en el archivo Java. Siéntete libre de usar cualquier tipo de diseño para el que desea diseñar el archivo
de diseño simple aquí que he usado en el diseño de restricciones.

Pero si lo desea, puede
usar un diseño lineal o un diseño relativo. Bien, pausa el video aquí y ve a resolver
el desafío. Cuando termines, ven volver a ver mi solución también. De acuerdo, Espero que resuelvas el desafío, veamos rápidamente
mi solución también. Voy a comenzar mediante la creación de un nuevo proyecto. Para el nombre de
este proyecto, voy a decir desafío de interfaz de usuario.

Voy a guardarlo API nivel 19. En esta aplicación
simple, no debería importar. De acuerdo, comencemos a trabajar en nuestro archivo de diseño.
Pero antes de eso, voy a cerrar todos mis archivos y paneles adicionales. Como dije, voy a trabajar
con un diseño de restricción. pero si tu Si lo desea, puede trabajar con diseño lineal o diseño
relativo. Antes de todo, quitemos esto Vista de texto. Y arrastremos todos nuestros elementos. En
primer lugar, necesitamos una vista de imagen para el perfil de imagen Para los datos de muestra, voy a seleccionar
uno de los avatares, también necesitamos un botón. Además de eso, vamos a necesitar componentes
de diseño de materiales. Agregaremos eso en un minuto. Pero antes de eso, arrastremos rápidamente todos los
elementos de nuestra interfaz de usuario, necesitamos cuatro editar textos aquí, los dos primeros van a estar
en texto sin formato, y los siguientes son va a ser contraseña. Los dos primeros son para el nombre
y el correo electrónico. Agreguemos rápidamente dos contraseñas aquí. La diferencia entre esta contraseña
y este texto de edición de texto sin formato es que cuando escribe algo dentro del texto de edición
de contraseña, no mostrará el texto mismo, pero verá algunos puntos.

Además de eso, necesitamos
un TextView para nuestro texto de género. Después de eso necesitamos un grupo de radio. Agreguemos rápidamente
que dentro de este grupo de radio necesitamos cuatro botones de radio. Además, no estoy seguro de que si
has visto esta forma de arrastrar los botones de radio en su grupo de radio en la vista de diseño. Anteriormente,
hemos visto cómo agregar botones de radio dentro un grupo de radio en TextView. Pero así es como
puede hacerlo en la vista de diseño. Básicamente, puede usar estos componentes tres, por ejemplo, puedo arrastrar
mis botones de opción dentro de este grupo radiofónico. Agreguemos dos más. También cambiemos
rápidamente la orientación de esta radio. grupo. Busquemos la orientación en
los atributos. Este de aquí, voy para cambiarlo a horizontal.

Además de eso, necesitamos
un TextView para los países. Y también necesitamos una rueda giratoria aquí para seleccionar
uno de los países que buscan una rueda giratoria. Cambiemos rápidamente los viets de este control giratorio para
ajustar el contenido en lugar de emparejar el padre, esto no coincide con el padre aquí, son solo algunos
ntps que vamos a cambiar para envolver deseado. También creo que es mejor ponerlo aquí arriba al
lado del texto de nuestro país. Y después todo. Si recuerdas teníamos el botón. Agreguemos
rápidamente que esto va a ser nuestro botón registrarse. Además de eso, necesitamos
un TextView aquí para nuestro acuerdo de licencia. Y también necesitábamos una casilla de verificación.
Busquemos checkbox. Y vamos a cambiar el marcado valor de esta casilla de verificación a verdadero
vamos a buscar marcado. O puedes verlo aquí abajo.

Además, voy a cambiar el valor marcado de este
botón de opción a marcado también. También, cambiemos rápidamente la idea de nuestros elementos de UI para
que podamos usarlos en nuestro archivo Java. Voy a acelerar el proceso de darles una identificación
básicamente, puede seleccionar su Elemento de interfaz de usuario y puede cambiar los atributos
desde este panel superior derecho aquí. Solo una revisión rápida, veamos rápidamente el
ID de cada uno de ellos porque más adelante estás vamos a usarlos en nuestro archivo Java. Este es el
perfil de la imagen. Esta es la imagen máxima btn, editar texto nombre editar texto correo electrónico, editar
texto contraseña editar texto pasar repetir. txt género esta mañana aquí está nuestra agenda para nuestro grupo
de radio. Los tres botones de radio se nombran o ser hombre o ser mujer y/o el otro. Este TextView
se llama txt country. el cribador se llama un país evaluador y este botón es
registro btn.

Este TextView aquí es llamado un acuerdo de txt. Y esta casilla de verificación
se llama verificación de acuerdo. también vamos para necesitar cuatro vistas de texto más. Si recuerdas
dije que cuando hacemos clic en este registro botón, vamos a asegurarnos de que hemos
recibido alguna entrada del usuario. Y si por alguna razón el usuario no ingresa nada en nuestro
texto de edición, mostraremos algunos advertencias y vamos a utilizar vistas de texto para esas
advertencias. Así que agreguemos rápidamente cuatro más vistas de texto.

Agregaré Advertencia para cada
uno de los textos de edición arriba de los editores. Démosle rápidamente alguna identificación a estos. Por
ejemplo, para el primero, voy a decir txt var nombre. Ya te imaginas el resto de ellos. Este es un correo electrónico
de txt. Este txt one pass. Y el último es txt var se repite. Bien, ahora que tenemos el ID de todos
estos elementos de la interfaz de usuario, vamos a cambiar rápidamente los valores iniciales. Por ejemplo,
para este TextView, no voy a cambiar cualquier cosa, pero para este texto de edición,
voy a eliminar el texto y voy a agregar un insinuación. Busquemos la pista. Eso es solo un
nombre. A veces como esta, puedes ver algunos opciones, que pueden ser molestos al presionar
la tecla Escape en su teclado, puede obtener deshaciéndonos de esa sugerencia, hagamos lo
mismo con estos tres editores restantes.

Para este TextView, voy a cambiar su valor a digamos
género. Para los botones de opción, cambiemos el primero para que el siguiente
sea femenino. Y el otro, voy a nombra este TextView aquí, cambiémoslo
a países o país. Cambiemos estos texto de los botones a la imagen máxima. Y esta fuente para registrarse.
También esta casilla de verificación para Acepto. Además de eso, necesitamos cambiar el valor de
esta vista de texto. pero vamos a hacer eso más tarde cuando creamos nuestras restricciones.
No voy a hacer nada al respecto todavía.

Además, voy a cambiar el color de estas cuatro vistas
de texto de advertencia. hagamos rapido que. Busquemos el color. Y cambiémoslo a
un color rojo, creo que este sería estar bien. Ahora comencemos a restringir nuestros elementos
de la interfaz de usuario. Por ejemplo, para esta vista de imagen, Voy a restringirlo a la izquierda de mi pantalla y
también a la parte superior de mi pantalla. Pero por supuesto, necesito algo de fusión. Agregaré
que en un minuto además de que el derecho de esta vista de imagen a la izquierda de mi botón,
y también a la derecha de este botón a la derecha de mi pantalla. Además de eso, voy a restringir este botón
a la parte inferior de la vista de mi imagen. Algo similar para la parte superior de mi vista de imagen.
Además, agreguemos un poco de margen para esta imagen.

Vista. Por ejemplo, margen superior, digamos 32, creo
que está bien. Y vamos a moverlo a la izquierda. Pero como puede ver, cuando muevo esta vista de
imagen a la izquierda y este botón no se mueve, Voy a eliminar esta restricción correcta. Y
voy a arrastrarlo desde la izquierda de este botón a la derecha de mi vista de imagen.
Ahora restrinjamos esta vista de imagen a la derecha de nuestra pantalla. Y ahora podemos moverlo.
Parece mejor ahora para estas vistas de texto. En primer lugar, voy a agregar una guía horizontal.
Así que hagamos clic derecho en nuestro diseño, y vamos a estos ayudantes. Y agreguemos una línea
de video horizontal. Vamos a mover esta directriz a algún lugar por aquí. Creo que está bien. Además
de eso, necesitamos una guía vertical. Agreguemos rápidamente que los ayudantes agregan
una guía vertical. Y vamos a moverlo un poco.

Ahora restrinjamos nuestros textos de edición. Por ejemplo,
este a nuestra directriz, voy a restringir este TextView a esta guía también. Además, voy a agregar
una restricción desde la parte superior de este texto de edición en la parte inferior de este TextView.
Pero como puede ver, estos están demasiado cerca de El uno al otro. Lo que puede hacer es que presionando
la tecla CTRL, puede seleccionar ambos a ellos. Y al hacer clic derecho, puede usar este
menú contextual, puede ir a esta restricción, digamos Editar nombre de texto, digamos de arriba a abajo
de nuestro nombre de advertencia de txt, podemos ver que ahora tenemos una restricción.

Además
de eso, voy a agregar una restricción de la parte superior de este TextView a nuestra guía horizontal.
Entonces, una vez más, seleccionemos ambos. Y hagamos clic derecho en el nombre de advertencia de texto
de restricción de arriba a abajo de nuestra guía, creo Voy a eliminar el margen aquí, pueden ver que
tenemos un margen de 80. vamos a disminuir eso a cero, creo que está bien. Hagamos lo
mismo para el resto del texto de edición y vistas de texto. Para estas tres vistas de texto
restantes, agregaré un margen superior al texto de edición superior pero también voy a agregar un margen.

Hagamos
clic con el botón derecho en la advertencia de texto de restricción envíe un correo electrónico desde la parte superior hasta la parte inferior de
nuestro nombre de texto de edición. A ver cual es el margen aquí 15 creo Voy a guardarlo 16 De acuerdo, hagamos lo mismo
con los dos restantes edite el texto y vistas de texto. Podemos ver que todo se ve mejor. Ahora. Además,
si por alguna razón su computadora es lenta, siempre puede ir a este ícono aquí y puede deshabilitar
esta representación en vivo, o alternativamente, puede trabajar con la vista de plano, que puede
mostrar desde esta opción de plano aquí.

Veamos rápidamente que también puedes trabajar
con este. Pero como antes, voy a guárdelo en la vista de diseño. Bien, agreguemos una
restricción para este texto de género. Primero de todo, voy a construirlo en la parte superior de este
texto de edición, restricción. txt género, de arriba a, digamos, al final de nuestro texto de edición,
agreguemos también un margen, creo que un margen 24 estaría bien, parece demasiado, digamos 60.
Agreguemos también un margen a la izquierda de nuestra pantalla, agreguemos un margen aquí
como para el grupo de radio, voy a seleccionar el grupo de radio de este árbol de componentes.
Para la restricción izquierda, voy a agregar a esta directriz.

Además, voy a agregar una restricción
desde la parte superior de este grupo de radio a la parte inferior de este género TextView.
Una vez más, voy a usar el menú contextual, digamos restricción. Parece que no seleccioné
el grupo de radio, siempre puedes usar este componente tres si quieres. Seleccionemos ambos.
hagamos clic derecho en la restricción, digamos género de grupo de radio, de arriba a abajo
de RT x d género, eso parece ser mejor, agreguemos también un margen, creo que 16 estaría
bien. Para el texto del país, voy a hacer la misma cosa. Para el margen izquierdo, digamos
16. Limitémoslo a nuestro grupo de radio. restricción.

Txt país habla al fondo de
nuestra radio por el margen, digamos 16 Meses nuevamente, para la rueda giratoria,
la limitaré a la derecha de mi país TextView. Y también su parte inferior y superior a la inferior en
la parte superior de este país TextView también. De Por supuesto, necesitamos un margen a la izquierda. Agreguemos
eso rápidamente. Para este botón de registro, voy para restringirlo a los tres bordes de mi pantalla.
Pero necesito un botón de margen. Vamos suma 32. Por ejemplo, creo que está bien.
Para este TextView. voy a agregar otro guía aquí. Agreguemos rápidamente esa
primera guía vertical agregada, voy a mueva esta guía, vamos a moverla a algún lugar
por aquí.

Y concentremos nuestro TextView a este de aquí. Para la parte superior,
la limitaré a la guía vertical. También restrinjamos esta casilla de verificación. También voy a
restringir la parte superior de esta casilla de verificación. al final de nuestro TextView. Agreguemos
otra guía aquí. este va a ser una directriz horizontal. Y movámoslo hacia abajo
debajo de este texto de edición. ahora voy a agregue una restricción desde la parte inferior de esta casilla
de verificación a esta guía horizontal, parece como si no tuviéramos una restricción adecuada
aquí. Por eso voy a borrar este top restricción, podemos eliminar la restricción seleccionando
la restricción y presionando hacia abajo para eliminar la clave.

Agreguemos también una restricción
desde la parte inferior de este TextView hasta la parte inferior directriz horizontal. Además, lo voy a mover
un poco más arriba. Eso parece mejor. Ahora, cambiemos también el texto de este TextView. Y
también vamos a cambiar la visibilidad de estos Cuatro mensajes de advertencia para desaparecer. En primer lugar,
agreguemos el texto para este TextView. Pero puedes ver que tan pronto como escribí el TextView aquí,
el texto de nuestro TextView de alguna manera ocupa otros archivos de diseño. Y tampoco cabe en
la pantalla. Si quieres arreglar eso tu puede hacer clic en esto para la flecha aquí. Y puede
cambiar la restricción a una restricción de coincidencia lo que también necesitamos un margen. Agreguemos rápidamente
ocho aquí. También por la derecha. De acuerdo, eso parece con eso. Además, creo que es mejor mover esta
casilla de verificación un poco más arriba.

Hagamos clic en eso. Y vamos a moverlo arriba. Está
bien, eso parece mejor. Cambiemos rápidamente la visibilidad de esto para una nueva vista de texto
también. Busquemos la visibilidad. Y cambiémoslo para que se haya ido. Del mismo modo para las
próximas tres vistas de texto. Pero ahora que he hecho eso, puede ver que tenemos dos pequeños márgenes,
puede aumentar eso. Por ejemplo, vamos digamos ocho aquí. Del mismo modo para los próximos
dos editores, perdón por la repetición. De acuerdo, eso es aproximadamente el tamaño de nuestro archivo de diseño.
También necesitamos agregar alguna entrada para nuestro explicador. Vamos a agregarlos rápidamente en nuestros valores de cadenas
en nuestros recursos en la carpeta de valores dentro del instrumentos de cuerda. Voy a agregar una cadena de matriz, digamos matriz. Vamos a nombrarlo países. Y agreguemos
nuestros artículos.

Ahora en nuestra actividad archivo XML de punto principal, podemos pasar esto como
las entradas de nuestro espinar. Digamos para las entradas, y abordemos la matriz de nuestro país. Está bien,
eso parece mejor. Además de eso, por esto vista de imagen, también necesitamos una fuente. Busquemos
la fuente aquí. Por alguna razón no podemos vea la fuente aquí, cambiemos a la vista de texto
o esta vista dividida. Y vamos a agregarlo aquí. digamos fuente. Y pasemos este archivo de mapa
medio que tenemos en nuestro proyecto. Antes probando la aplicación, agreguemos rápidamente
el equipo de diseño de materiales. Por eso voy para ir a material.io. Vayamos a esta pestaña Desarrollador.
Hemos visto todo esto antes en este Android en la documentación para empezar. aquí
abajo puedes ver la dependencia. Vamos agregue eso en nuestro proyecto Gradle script
build dot Gradle module app.

Aquí dentro las dependencias Agreguemos que también necesitamos
agregar una versión aquí que, como puede vea en la advertencia, la última versión es 1.1
punto oh, sincronicemos nuestro proyecto. Y vamos a nuestros estilos y cambiamos el tema
de nuestra aplicación. voy a borrar esto tema aquí. Y voy a usar componentes de material
de puntos del equipo que iluminan este. Los hemos usado anteriormente en videos anteriores,
volvamos a nuestra actividad. archivo principal, puede ver que el estado de nuestros
botones ha cambiado. Probemos todo rápidamente Voy a ejecutar la aplicación en el píxel
tres API 29. Parece que hemos hecho un relativamente buen trabajo, solo necesitamos aumentar
el tamaño de esta imagen.

Para eso voy para cambiar el ancho y el alto de esta vista de
imagen. Voy a agregarlos manualmente, vamos digamos 130 dP, creo que estaría bien. Ejecutemos
la aplicación. Una vez más, si quieres, también puede disminuir el tamaño de este TextView.
Sí, eso parece ser mejor. Su El diseño puede ser diferente al mío. Está
bien. Probablemente sea mejor que yo. no soy un diseñador, pero solo queríamos practicar
todo lo que hemos aprendido. Bien, creo eso es suficiente para este video. En el siguiente
video, vamos a cambiar a nuestro Java archivo y vamos a trabajar en la lógica de nuestra
aplicación. Nos vemos en el próximo vídeo. En el video anterior, hemos creado este archivo
de diseño, que no es tan malo. En esto video, vamos a trabajar en el archivo Java y la lógica
para esta aplicación. Entonces para eso, vamos a cambiar a nuestro archivo principal java de punto
de actividad. Y cerremos nuestro archivo de diseño. En primer lugar aquí, voy a inicializar todos los elementos
de mi interfaz de usuario.

Antes de eso, vamos agregue rápidamente un candado, creo que será útil, digamos
texto de edición privado que teníamos para editar texto, voy a acelerar el proceso de definición e inicialización
de estos elementos de la interfaz de usuario, se puede ver que es muy aburrido. También voy a
definir un elemento de diseño de restricción aquí, digamos diseño de restricción privado.
Voy a nombrarlo padre, creo más tarde. encendido, usaremos este diseño de restricción para mostrar una
barra de bocadillos, también necesito dar una identificación a mi diseño de restricción. Entonces, para eso, cambiemos
a nuestro archivo XML de punto principal de actividad en nuestra vista dividida, en el diseño de restricción principal,
le daré una ID. digamos identificación, Voy a decir padre. Bien, ahora vamos a inicializar todos estos
elementos de la interfaz de usuario. voy a hacer que dentro de otro método. Vamos a nombrar ese
método que necesita ser usado.

Ante todo, vamos a crear ese método aquí abajo, vacío privado
en las entrevistas. En primer lugar, agreguemos una mirada. Empecemos. Minimicemos esto del
proyecto. Y vamos a inicializar una vez de nuevo, voy a acelerar el proceso de inicialización de
estos elementos de la interfaz de usuario. pienso Tengo un error tipográfico aquí. Pero he establecido una identificación
para este registro ficticio. Arreglemos rápidamente eso en nuestro archivo de diseño. Si hago clic en
este botón de registro aquí, puedes ver mi tipo Lo siento por eso, también necesito cambiarlo
aquí. Bien, ahora que hemos inicializado todas nuestras vistas, voy a establecer un onclicklistener. En primer
lugar, por mi imagen de pico btn, estoy hablando sobre este de aquí. Entonces, después de este método,
voy a decir btn peak image dot set onclicklistener nuevo onclicklistener. Vamos a mostrar un mensaje de brindis. No hemos visto
cómo elegir una imagen, por ejemplo, de una galería, o para el caso tomar una foto usando la
cámara del dispositivo para eso.

Estamos solo voy a mostrar este primer mensaje. Después de
eso, definamos un onclicklistener para nuestro btn finalizar o btn registrarse. Creo que lo nombré
set onclicklistener new onclicklistener. Voy a hacer el trabajo dentro de otro método,
digamos en su registro. Vamos a crear eso método aquí abajo. Digamos vacío privado, necesitamos
registrarnos Una vez más, agreguemos una mirada.

Digamos que empieza aquí. En primer
lugar, voy a comprobar que si el usuario tiene ingresé todos los datos para eso, voy
a decir si voy a crear otro método, Lo crearé en un minuto. Pero digamos
si valida datos. Si ese es el caso, vamos a continuar. Vamos a crear rápidamente
este método aquí abajo. Y veamos qué vamos a hacer dentro de este método. Privado,
el tipo de retorno será un booleano, digamos privado, booleano, validar datos. Una
vez más, agreguemos mucho. digamos si edite el nombre del txt, obtenga text.to string si es igual
a una cadena vacía. En primer lugar, nosotros van a mostrar el texto de advertencia. Así que digamos advertencia
de txt, nombre de advertencia de txt, conjunto de puntos visibilidad. Seamos rápidos Zeebo. Creo que
has visto esto anteriormente en el curso. después de eso vamos a devolver falso, significa
que no validamos los datos, así que no deberíamos continuar con nuestro código.

En este método
dentro de esta declaración if, vamos a crear tres más declaración if para los otros tres textos de edición. Si
edita texto, envíe un correo electrónico a obtener texto.to cadena es igual a una cadena vacía. correo electrónico de advertencia
de txt, visibilidad de conjunto de puntos, una vez más, es también va a devolver falso aquí también. Asimismo,
en cada uno de estos casos, antes de volver falso, vamos a cambiar el texto de nuestra
advertencia de txt. porque si te acuerdas en el archivo de diseño, no cambiamos el texto de esa
vista de texto en llamas. Entonces puedo decir txt nombre de advertencia, por ejemplo, punto txt, digamos
que ingrese su nombre. Del mismo modo para el otros tres casos. Y después de todos estos enunciados
if después de todos estos casos, if llegamos a este punto vamos a devolver verdadero,
significa que el usuario ha ingresado todos de los datos Entonces, dentro de estos métodos de validación
de datos, estamos validando que el usuario llenó todos los espacios en blanco después de eso dentro de este método
de registro de inicio dentro de esta declaración if, vamos a verificar que si el usuario está de acuerdo con
nuestro acuerdo de licencia.

Así que digamos si verifique el acuerdo que está marcada esta
opción aquí. Si ese es el caso, vamos continuar. Pero en el caso contrario, solo
mostraremos un mensaje de brindis. Vamos diga que necesita aceptar el acuerdo de licencia.
Pero si el usuario llega a este punto donde el usuario ingresa todos los datos y también
acepta el acuerdo de licencia, vamos a mostrar un snack bar. Hagámoslo con otro método,
digamos mostrar una barra de bocadillos. Vamos crea ese método aquí abajo. Snack-bar privado al
vacío. Una vez más, agregue un registro. Y luego aquí dentro de este método, primero que
nada, necesitamos cambiar la visibilidad de todos de nuestros textos de advertencia, porque esas advertencias
ya no son válidas. Así que digamos advertencia de txt nombre que dice visibilidad, digamos desaparecido
Esta vez, hagamos lo mismo para el otros tres restantes textos en llamas.

Después de eso,
tenemos que mostrar nuestro snack bar. Si usted recuerda, podemos hacer algo como esto, podemos
decir snack bar que hacen En primer lugar, necesitamos pasar nuestro diseño de restricción, que
es nuestro padre en este caso, después de eso necesito enviar un mensaje de texto aquí ahora mismo.
Voy a mostrar un texto ficticio. por ejemplo voy decir usuario registrado. Pero más adelante, cambiaré
este texto, por ejemplo, mostraré los datos del nuevo usuario registrado. Por
ahora digamos usuario registrado. Después necesitamos la constante para la longitud de nuestra barra de refrigerios,
voy a decir el punto de la barra de refrigerios longitud indefinida. Definamos también un botón de
acción para nuestro snack bar. voy a decir eso es una acción. Para el texto, solo voy a decir
descartado. También vamos a crear un onclicklistener, digamos
nuevo onclicklistener. Siendo por el momento No voy a hacer dentro de este método onClick. Más adelante,
borraremos nuestro texto de edición.

Vamos terminar de crear nuestro snack bar. Pero antes
de eso, solo tenemos que mostrarlo. digamos punto mostrar. Ejecutemos la aplicación. Y vamos
a ver si acertamos todo correctamente. En primer lugar, hagamos clic en el botón Hablar Imagen,
deberíamos ver un mensaje de brindis. Tú Veo que hay que hablar de ti. Ingresemos
algunos datos. y registrémonos un nuevo usuario Digamos Mesa, agreguemos un correo electrónico.
Ingresemos una contraseña. Volvamos a escribir nuestro pasaporte. También tenemos que comprobar que si
estos dos son iguales. Olvidé hacer eso. voy a hágalo después de probar esta fase de la
aplicación antes de registrar al usuario.

Voy a desmarcar esto solo. Casilla de verificación del Acuerdo
de licencia, digamos registrarse, puede ver que necesita aceptar el acuerdo de licencia. Comprobémoslo
una vez más. y registrémonos esta vez deberíamos ver este registro de usuario
de red, parece que nuestra aplicación está funcionando bien. Si pulsamos cerrar, se cerrará
el snack bar. Además, eliminemos este correo electrónico aquí. Y veamos si obtenemos el
texto de advertencia. Si hacemos clic en este registro botón, puedes ver que inserta tu correo electrónico,
estás validando con éxito nuestros datos. Si ingresamos un correo electrónico aquí, por ejemplo,
puede sonar@gmail.com. Y si hacemos clic en Registrar botón, deberíamos ver que el texto de advertencia del correo
electrónico desaparece.

Bien, ahora voy a cambiar la aplicación. En primer lugar, voy a comprobar
que estos dos son iguales. Después, También voy a vaciar todo esto para cualquier texto.
Cuando hago clic en este botón de descartar para que podamos agregar un nuevo usuario. Además,
voy a cambiar el texto de este snack bar al detalles de nuestro nuevo usuario registrado. Hagamos
eso rápidamente. En primer lugar, dentro de este validar el método de datos, voy a agregar otro caso de
uso, digamos si edito el pasaporte de texto, este punto de fuente obtiene texto en cadena. Si eso es igual
a nuestro texto de edición, contraseña, repita eso obtener texto en cadena. Si ese es el caso, o
cambiemos nuestra lógica, digamos si ese es no es el caso. En primer lugar, vamos a cambiar
la visibilidad de esta advertencia de txt. Repite la contraseña. Y después de eso, vamos a
devolver falso, digamos p x la advertencia.

Contraseña repetir punto establecer visibilidad,
digamos visible después de eso, voy a cambiar el texto voy a decir txt advertencia, repita ese texto
establecido. Digamos que la contraseña no juego. Arriba. Después de eso voy a devolver
falso. Bien, ahora que hemos validado esto datos con éxito, vamos a este método onClick.
Y aquí, aclaremos nuestra edición. texto. Voy a decir Editar correo electrónico de texto
o cualquier nombre de texto, eso es un texto. Solo pasemos una cadena vacía. Del mismo modo, para los otros tres,
edite el texto. Lo siguiente que voy a hacer es que voy a cambiar el texto de este chiringuito.
En primer lugar, voy a crear ese texto de arriba aquí, dentro de este breve
método de barra de bocadillos. Antes de todo voy para obtener los datos del usuario. Por ejemplo, digamos que
el nombre de la cadena es igual a editar el nombre del txt, dot get text.to string. De manera similar, para el correo electrónico,
voy a decir que una cadena de correo electrónico es igual a editar texto correo electrónico punto obtener texto.

A cadena,
también voy a obtener el género de los usuarios y también país, digamos que un país de cadena es igual a los países
una rueda giratoria que obtiene el elemento seleccionado. cadena para obtener el género del usuario, voy
a crear una declaración de cambio antes que voy a crear una cadena, digamos que el género
de la cadena es igual a una cadena vacía. Después de eso, creemos una declaración de cambio en nuestro
grupo de radio o género de grupo de anuncios que obtenga la identificación del botón de radio verificado. Digamos que
en caso de que sea nuestro botón de radio de punto id macho, nosotros vamos a cambiar el valor de esta cadena de género,
digamos que el género es igual a hacer Lo lamento. Agreguemos también un descanso aquí.
Otro caso nuestro.id dot hembra.

Vamos decir que el género es igual a la mujer. Este caso predeterminado
nunca debería ocurrir. pero solo por seguridad propósitos, si algo sale mal, estoy asignando desconocido
al género una cadena. Así que después de la switch, tenemos todos los datos sobre nuestro
usuario. Ahora podemos crear el texto. que queremos mostrar dentro del snack bar. Digamos
que bebamos un bocadillo de texto es igual a y vamos a crear nuestro texto. En primer lugar,
voy a decir el nombre, más el nombre que creamos, o lo obtuvimos del nombre Editar texto. Después de
eso, agregaré una barra invertida n para vaya a la línea siguiente, digamos correo electrónico, más el
correo electrónico. Una vez más y barra invertida n.

Vamos también muestra el género y el país, digamos género,
más el género, una vez más, barra invertida n y también vamos a mostrar el país. Ahora que
hemos creado este texto, podemos mostrarlo en nuestro chiringuito. Así que esta vez, en lugar de
este texto, voy a guardar el texto de la merienda. Ejecutemos la aplicación una vez más. Y a
ver si hemos arreglado nuestra aplicación exitosamente.

Probemos los diferentes casos. En
primer lugar, comprobemos que si vemos el avisando si introducimos contraseñas diferentes en estas
para editar texto. En el campo de contraseña, Voy a ingresar 123456 pero en el texto de edición de contraseña
para volver a ingresar, voy a decir 12345. Si hacemos clic en este botón de registro, deberíamos ver
el texto de advertencia que la contraseña no coincide. Bien, agreguemos seis aquí. Ahora sí coinciden,
cambiemos el país a, por ejemplo, Suiza. Y también cambiemos el género aquí
a femenino. Y a ver si podemos reducir allí cualquier usuario. Aquí puede ver que
estamos viendo el texto de la merienda que Haber creado. Pero no lo estamos viendo todo,
estamos viendo solo las dos primeras líneas. Si desea cambiar el atributo de línea máxima de
su snack bar, puede hacerlo. Primero de todos, necesita obtener la instancia de su snack
bar. Después de eso, debe obtener el vista de texto de su snack bar. Y después de eso,
puede cambiar el atributo de línea máxima en su vista de texto.

De esta forma, puede anular los atributos
de línea máxima de la vista de texto de tu chiringuito. Pero eso parece mucho
trabajo. Y no vamos a hacer eso en aquí. Lo haremos más adelante en el curso en otros
lugares cuando usemos un snack bar. Pero aquí, si quiere asegurarse de que ha
creado sus snack tics con éxito, simplemente puede iniciar sesión. Por ejemplo, aquí,
voy a agregar una mirada. Digamos registro D, digamos un mensaje de texto de un snack bar. Pasemos nuestro
texto de merienda. Pero antes de ejecutar mi aplicación y probar esto, voy a hacer clic en este botón
de descartar. Si te acuerdas, escribimos la lógica para que borre todo nuestro texto de edición.
Hagamos clic en eso. Y puedes ver que nosotros ahora están listos para registrar un nuevo usuario.
Ejecutemos la aplicación una vez más.

Y vamos prueba este texto de merienda. Para eso voy a abrir
el logcat. Ingresemos algunos datos en aquí. Y hagamos clic en este registro. Puede
ver el texto de la merienda aquí. puede ser some@gmail.com género masculino país,
Noruega, parece que hemos creado nuestro texto con éxito. Bien, creo que es suficiente
para este video, espero que hayas resuelto el reto. En la siguiente sección del
curso vamos a crear el primero de cuatro de nuestras aplicaciones. Ahora sabemos sobre Java.
Ahora sabemos acerca de la interfaz de usuario. Y en la próxima sección del curso vamos
a combinar estos dos y vamos a crear nuestra primera aplicación del mundo real. Además de practicar
todo lo que hemos aprendido hasta ahora, también van a aprender muchas cosas nuevas.

Así
que estad atentos a la siguiente sección. del curso Y como siempre nos vemos en el próximo
vídeo. Que tal a todos, espero que esten divirtiéndose. Antes de comenzar a crear nuestra aplicación
de muestra, me gustaría recordarle que hay una versión extendida de este curso que
puedes ver. al inscribirse en la extensión Por supuesto, tendrá acceso de por vida a más de
60 horas de videos, puede preguntar a su preguntas directamente de mí y le responderé
en unas horas, tendrá acceso a todos los códigos fuente que escribí en los
videos. Y también puedes tener acceso a todos los videos nuevos que subo, simplemente consulte
mi code.org para obtener más detalles sobre el curso. Y no olvides usar Free Code Camp como código
de cupón para obtener un 20 % de descuento. Si quieres tomarte en serio el desarrollo de aplicaciones
para Android. Tomar el curso extendido es casi una necesidad. Bien, todos, solo quería
recordarles que hay una extensión versión de este curso que puedes tomar sin más preámbulos,
comencemos a crear nuestra muestra solicitud. Diviértete aprendiendo.

Hola a todos, y bienvenidos de nuevo. En
esta sección del curso vamos a crear la primera aplicación de la aplicación para
el mundo real que prometí. Es importante decir que al crear esta aplicación además de
practicar todo lo que hemos hablado hasta ahora, también vamos a aprender muchas
cosas nuevas. Los verás en acción cuando creamos la aplicación. Bien, ahora hablemos
de la aplicación en sí, vamos para crear una aplicación que ayude al usuario
a gestionar su biblioteca.

En esto aplicación, vamos a mostrar una lista de diferentes
libros al usuario. y el usuario puede ver los detalles de ese libro. mas tarde.
Si el usuario quiere puede agregar ese libro a diferentes listas, por ejemplo, al menos
eso indica que el usuario ya ha leído este libro, o tal vez una lista de deseos o también
una lista de favoritos. Los veremos todos más tarde. en el curso. En el proceso de creación de
esta aplicación, vamos a practicar todo nuestro conocimiento sobre la interfaz de
usuario y Java. Y además de eso vamos a aprender muchos conceptos nuevos. Después de ver
esta sección del curso, puede cambiar la aplicación que creamos juntos e incluso
puedes publicarla en Play Store.

Así que le sugiero que vea esta sección
del curso y no se la salte. Bien, sin Hablando más, creemos nuestro proyecto y comencemos
a escribir nuestra aplicación. Voy para empezar con actividad vacía como antes. Cambiemos
el nombre de esta aplicación a mi biblioteca. Para los otros campos aquí,
no voy a cambiar nada Para el paquete nombre, una vez más, voy a poner el nombre de mi sitio
web al revés, o dot maker dot project nombre, que es mi biblioteca para guardar la ubicación
es lenguajes finos Java, y vamos a guarde con API nivel 19. Para el SDK mínimo, tampoco
estamos usando la biblioteca de soporte, así que no voy a marcar esta opción aquí.
Creamos nuestro proyecto. y comencemos trabajando en nuestro archivo de diseño. Antes de todo, voy
a agregar dependencias de la biblioteca de diseño de materiales en mi proyecto, porque los vamos a necesitar
para eso, vamos a material.io. Vamos vaya a esta pestaña Desarrollador.

Seleccionemos Android
desde aquí, documentación para comenzar. Copiemos esta línea de código. Hemos hecho esto
anteriormente. Entonces no voy a exportar cualquier cosa aquí en nuestros scripts de Gradle, cree
esa aplicación de módulo de Gradle en dependencias. Agreguemos eso. Y también la última versión es
1.1. Punto. Oh, así que vamos a cambiar este. Y sincronicemos nuestro proyecto. Parece que hemos
agregado los componentes de material con éxito. En primer lugar, cambiemos el estilo de nuestra aplicación
en valores como los que XML en su lugar del tema de compatibilidad de esta aplicación, voy a usar
el tema que materializa los componentes que se iluminan. Cerremos esto. Y cambiemos a nuestro archivo XML de
punto principal de actividad. nuestra aplicación va a tener varias páginas más adelante,
veremos cómo podemos crear varias páginas o para ser actividades múltiples específicas. Pero
por ahora, esta va a ser la primera página. o la primera actividad de nuestra aplicación.
Y diseñemos eso rápidamente. Ante todo, Voy a tener una vista de texto para el nombre
de esta aplicación.

Después de eso, me voy para agregar algunos botones. Uno para la lista de
todos los libros, voy a mostrar la lista de todos de libros haciendo clic en este botón. Voy a
agregar cinco botones más y hablaré sobre a ellos. Agreguemos también una vista de imagen arriba
aquí para nuestro logotipo. por ahora me voy a quedar con uno de nuestros avatares. Y también voy a agregar
una vista de texto aquí para obtener licencias. Vamos a dar algunas ideas a nuestros elementos.
Para este, voy a llamarlo logo IMG, porque va a ser nuestro logo. Para TextView voy
a decir txt name, pero no estoy seguro que necesitamos una identificación para este. Este
botón aquí va a mostrar una lista de todos nuestros libros. Así que digamos btn todos los libros. Además,
cambiemos su texto para mostrar todos los libros o ver todos los libros. Aparte de eso, no me gusta que
este texto esté en mayúsculas. si quieres, tu puede cambiar que necesita buscar todo en mayúsculas,
este texto todo en mayúsculas, y puede cambiar es valioso.

Vamos a cambiarlo a falso. Ahora puedes ver
que este texto es mucho más mejor. Para el segundo botón, voy a cambiar su ID a btn
actualmente leyendo porque este botón va a mostrar la lista de los libros que el usuario
está leyendo actualmente, digamos btn Actualmente leyendo. Y cambiemos el texto a libros
que leemos actualmente también. Como antes, cambiemos el valor del texto en mayúsculas a falso
también. Para el tercer botón, voy a cambie su ID a btn ya leído porque este
botón mostrará la lista de libros que el usuario ya leyó. Así que digamos
btn ya leído. Cambiemos el texto a ya leer libros. Una vez más, cambiemos el atributo de
texto en mayúsculas a falso.

Por el cuarto botón, voy a cambiar su ID a btn quiero
leer el libro. Digamos btn quiere leer porque este botón va a mostrar la lista de diferentes
libros que el usuario quiere lista. Básicamente, esta es la lista de deseos. También
cambiemos el texto. digamos tu deseo lista. Cambiemos los atributos de mayúsculas.
Eso parece mejor. El quinto boton que voy para cambiar su ID a btn libros favoritos,
digamos btn favorito.

Y por su texto, voy para decir ver tus favoritos. Una vez más, cambiemos
el atributo de mayúsculas. y para el último botón, voy a cambiar su ID a btn. Acerca
de haciendo clic en este botón Acerca de, vamos a mostrar un diálogo en el que mostraremos
información sobre esta aplicación, digamos dentro de aproximadamente, y cambiemos su
texto a aproximadamente. Por este boton no voy para cambiar sus atributos en mayúsculas, porque
creo que es mejor así. también demos una identificación para esta vista de texto también.
Vamos a ver. txt licencia, voy a cambiar su texto desarrollado por mesa@miko.org. También voy a
cambiar el estilo de este libro a atelico. Busquemos el estilo de texto. Cambiemos esta
fuente a su ático. Además, cambiemos el texto de la primera vista de texto al nombre
de nuestra aplicación. solo voy a poner mi biblioteca aquí. Más adelante, también cambiaremos
la fuente de este TextView.

Bien, vamos añadir nuestras restricciones. Además, puede ver que
estoy usando el diseño de restricción aquí, pero siéntase libre de usar el diseño relativo o el diseño
lineal. Me siento más cómodo con la restricción. diseño. Así que estoy usando el diseño de restricciones,
agreguemos nuestras restricciones. voy a agregar un margen la parte superior de quizás 70 dP para esta vista de
imagen. Pero antes de eso, voy a mover mi TextView porque ahora mismo no puedo ver eso. Bien, ahora
agreguemos el margen superior, creo que 50 dP seria mejor.

Ahora concentremos nuestro TextView en
la parte inferior de nuestra vista de imagen. Y también a ambos lados de nuestra pantalla. También
necesitamos un margen superior. pienso una vez más 50 dP estará bien. Parece demasiado, digamos
40 dP, concentremos todos estos botones. Para este, lo limitaré a la parte
inferior de mi TextView. Y también a ambos lados de mi pantalla, necesito el margen superior,
digamos 30 dP. Después de eso, restrinjamos el segundo, voy a acelerar el
proceso aquí. A veces así, si los elementos están demasiado cerca uno del otro
como antes, podemos seleccionar ambos elementos. Y haciendo clic con el botón derecho podemos usar este menú
contextual. Digamos que actualmente podemos leer arriba al fondo entre todos los libros. Agreguemos un margen aquí
seleccionando nuestro botón margen superior Creo que 16 estaría bien. parece demasiado Digamos
10 db.

También para el segundo mes. Para este último TextView aquí, en primer lugar
voy a limitarme a la parte inferior de mi pantalla Y además de eso, voy a
concentrarlo en ambos bordes de mi pantalla para que quede centrada. Además, agreguemos
un margen inferior de quizás 16 db, eso parece mejor Para esta vista de imagen, no
voy a usar datos de muestra. En cambio, estoy va a mostrar la imagen real. He preparado una
imagen aquí en mi escritorio. usemos que voy a copiar esta imagen.

Vamos a agregarlo a nuestra
carpeta de mapa medio. mapa de recursos, clic derecho y pegar Creo que el nombre está
bien. Y cambiemos a nuestra vista dividida. Para esta vista de imagen, si hace clic en eso,
en primer lugar, eliminemos este último atributo esta herramienta es compatible con la fuente y, en lugar
de eso, usemos la fuente. abordemos la imagen que acabamos de agregar a nuestro proyecto. Parece demasiado
grande, tenemos que pasar el ancho y la altura a mano. Veamos 150 dP creo que está bien.
Y también 150 dP para la altura. Que parece un poco mejor. Para esta biblioteca mental. Si
recuerdas, teníamos un atributo llamado Familia tipográfica. Busquemos eso en la vista de
diseño. familia de fuentes si hacemos clic en esto flecha más fuentes. Busquemos una buena fuente.
Una vez más, estas son las fuentes de Google, y puedes usarlos en tus proyectos de forma gratuita.
Creo que esta fuente de limón es buena, agreguemos fuente a nuestro proyecto.

Y presionamos
OK. Puedes ver que la fuente ha cambiado. También vamos a aumentar el tamaño un poco. Busquemos
el tamaño del texto. y en lugar de 14 sp, digamos 18. Eso parece mejor.
Lo siguiente que voy a cambiar en este archivo de diseño es el ancho de todos estos botones.
Quiero que mis botones tengan el mismo de ancho ahora mismo se puede ver que estos tienen una
forma fea. Si hacemos clic en uno de nuestros botones, vamos a cambiar a una vista dividida. Una vez más,
hagamos clic en eso. Por el ancho. Si nosotros digamos 200 DPI, creo que estaría bien. Sí. Para
todos nuestros botones para el video, estoy voy a decir 200 DPI, se puede ver que es mucho mejor ahora. Bien,
este va a ser el diseño para la primera página de nuestra aplicación. Inicialicemos rápidamente los
elementos necesarios en nuestro archivo Java. Presionando turno doble, puede buscar el archivo java del punto de
actividad principal. Y aquí, vamos a inicializar nuestros elementos de interfaz de usuario. También inicialicemos estos botones abajo dentro
de este método onCreate.

Voy a haz eso dentro de otro método, digamos que necesitas
ser usado. Y vamos a crear ese método. presionando ALT más enter. Una vez más,
voy a acelerar el proceso de inicialización estos botones. Al hacer clic en cada uno de estos botones al lado de este
dentro de aproximadamente voy a navegar por el usuario a otra actividad. Hasta este punto, nuestras
aplicaciones tenían solo una actividad, que fue nombrada actividad principal.

Pero si queremos,
podemos crear otra actividad en nuestra aplicación. también. Vamos a hablar de actividades y fragmentos
en el siguiente video. pero creando una actividad es realmente simple. Hay muchos más
conceptos con respecto a las actividades, nosotros hablará de ellos más adelante. Pero aquí,
si quieres crear una actividad, puedes haga algo como esto en su proyecto dentro de la carpeta
Java. Dentro de la carpeta de su proyecto, usted puede hacer clic derecho en eso diciendo nueva actividad.
Aquí puedes ver que tienes pocas opciones. Los nombres de algunas de estas actividades pueden resultar
familiares de esa vista de galería desde donde creamos nuestro proyecto. Pero básicamente aquí, necesitamos
esta actividad vacía.

Tú también puedes seleccione esta galería, en la que obtendrá
el mismo diálogo cuando creó su aplicación. Seleccionemos una actividad vacía. Una vez más. Aquí
podemos nombrar nuestras actividades. La Convención aquí es que para usar la actividad de palabras clave en
la denominación y también, no puede usar espacios y también otros personajes extraños. Para
el nombre de esta actividad aquí, voy a nómbralo actividad de todos los libros, porque
esta va a ser la actividad que vamos a hacer para navegar por el usuario cuando el usuario hace clic en
ese botón para ver todos los libros. entonces digamos toda la actividad de los libros.

También puede ver una casilla de verificación aquí que
dice que si desea generar un archivo de diseño para sus actividades, es posible crear una
actividad con solo el archivo Java y no el archivo XML. Hablaremos de eso en la siguiente
sección del curso. Pero aquí, nosotros necesita un archivo de diseño. Así que voy a dejar
este registrado aquí. Puedes ver eso cuando cambié el nombre de mi actividad, también
cambió el nombre del diseño. en el diseño nombre, no puede usar letras mayúsculas. Y como
pueden ver todas las letras cambian a menor casos. Aparte de eso no puedes tener espacios.
Tienes otra opción aquí para indicar que si esta actividad va a ser una actividad de lanzamiento.
Básicamente, en cada aplicación, una de las actividades puede ser lanzador. Ahora mismo
la actividad del lanzador en nuestra aplicación es esta actividad principal. Significa que cuando lanzamos
nuestra aplicación, esta actividad principal se va a mostrar.

Y por eso no voy a marcar
esta opción aquí. También, si no marca esta opción aquí, si cambia
de opinión, puede cambiar en su archivo de manifiesto más adelante, pero más adelante
en el curso, el nombre del paquete está bien, vamos a crear esta actividad en nuestro paquete.
Y para el lenguaje de esta actividad una vez más, voy a usar Java.

Terminemos de crear
nuestra actividad. Y veamos qué sucedió en nuestro proyecto. En primer lugar, se
ha agregado una nueva clase de Java a nuestro paquete, puede ver que tenemos este archivo java de punto de actividad de
todos los libros. Además de eso en nuestros Recursos carpeta, en la carpeta de diseño, tenemos esta
actividad todos los libros punto XML. Ambos ha sido creado por Android Studio. Además de eso,
si echa un vistazo a su archivo de manifiesto, este manifiesto de Android dot XML, puede ver que
aquí tenemos una nueva línea, tenemos un nueva etiqueta de actividad en nuestra etiqueta de aplicación,
significa que ahora nuestra aplicación tiene dos actividades. Si desea crear sus actividades usted mismo
sin la ayuda de Android Studio, eso es posible. Básicamente, puede crear un archivo java.
Después de eso, puede crear un nuevo diseño. expediente. Y además de todo esto, debe agregar esta
etiqueta en la etiqueta de su aplicación dentro el archivo de manifiesto.

Además, debe vincular el
archivo Java y el archivo de diseño en su onCreate método. Echaremos un vistazo a eso en un minuto.
Pero en lugar de todo esto, hemos usado la ayuda de Android Studio. Bien, cerremos este
archivo de manifiesto. Y pasemos a la actividad todos los libros puntúan el archivo XML, puede ver
que aquí tenemos otro diseño en el que podemos diseño para esta actividad. En este video, no
voy a diseñar el diseño para esta actividad, en cambio, solo voy a cambiar su color de fondo.
Si cambiamos a una vista dividida aquí, una vez más, puede ver que tenemos un diseño de restricción.
Y dentro de la etiqueta de apertura de este diseño de restricción, voy a decir fondo
y voy a pasar un color. Por ejemplo, Creo que voy a pasar este acento de color.
Estoy haciendo esto porque solo voy a indicar que hemos navegado al usuario desde la actividad principal
a esta actividad de libros de arte.

De acuerdo, Ahora veamos cómo podemos navegar el usuario.
Cerremos ambos archivos. Estos son todos los archivos XML de punto de actividad de libros, y también
este archivo java de punto de actividad de albox. Yo dije que vamos a navegar al usuario a la otra
actividad haciendo clic en este botón toda la actividad de los libros, por lo que necesitamos
crear un onclicklistener aquí, digamos btn. Todos libros que establecen onclicklistener. Pasemos
al oyente onClick. Y dentro de este onClick El método es el lugar para escribir la lógica
para navegar por el usuario. Aquí, voy a usar un objeto que nunca he usado hasta ahora, y ese
objeto se llama intención. Puedes ver que proviene del paquete de contenido de puntos de
Android. Importemos eso. vamos a nombrarlo intent es igual a new intent. Es una clase
Java simple que hemos definido. Es como cualquier otra clase de Java. El constructor de esta intención
necesita dos cosas. En primer lugar, nosotros Necesito pasar un contexto aquí, porque estamos
dentro de esta actividad principal.

Y con suerte a estas alturas sabemos que las actividades son contexto,
necesitamos pasar la actividad principal punto esto. Vamos pase esa actividad principal puntee esto. Después
de eso, debemos pasar la actividad de destino donde desea navegar al usuario a, por ejemplo, puedo decir todos
los libros de clase de punto de actividad. Entonces, de esta manera, estamos diciendo que esta
intención nos llevará desde la actividad principal a toda la actividad de los libros. Después de eso, cuando
creamos nuestra intención, podemos llamar a un método interno aquí llamada actividad de inicio, puede ver que esta
actividad de inicio necesita una intención.

Y podemos pasar nuestra intención de forma segura. Esta actividad
de inicio es un método interno como este bien ver por ID que existe dentro de cada actividad. Ahora,
si ejecutamos nuestra aplicación, deberíamos ver que cuando hacemos clic en este botón, el usuario
navegará a toda la actividad de los libros. Vamos rápidamente probar eso. En este momento puede ver que tenemos
algunos problemas con nuestro diseño. Primero de todos, no podemos ver esta licencia TextView por
lo que necesitamos disminuir los márgenes de aquí. Y además de eso, este texto de libros
de lectura actual no cabe en nuestro botón. También aumentaremos el ancho de todos nuestros botones.
Pero por ahora, si hacemos clic en este botón ver todos los libros, podemos ver que estamos
navegando a la otra actividad. Junto a ese si presiona este botón Atrás. Una vez más seremos
navegados a nuestra actividad principal. Parece estar funcionando perfecto. Arreglemos rápidamente
los problemas con nuestro diseño y vamos a Termine este video en nuestro archivo XML de punto principal
de actividad.

En primer lugar, disminuyamos los márgenes Por ejemplo, este margen superior,
voy a cambiarlo a 30 dP al lado margen superior de este texto de mi biblioteca.
Reduzcamos eso a 30 dP. eso parece mejor para todos mis botones. En lugar de 200 dP,
voy a decir 230 dP. por ejemplo, para el primero, digamos 230 dP. Ejecutemos la
aplicación una vez más. y veamos si hemos solucionado los problemas con éxito.
El diseño parece mejor. Bien, creo que eso es suficiente para este video. Justo antes de terminar,
les voy a decir que pueden revisar el código fuente para este código de barra application@maker.org.
Así que siéntete libre de comprobar que si necesitas que suba el código fuente al final de
cada video.

Además, estaremos muy felices de ver sus comentarios. Bien, en el próximo video,
primero que nada, vamos a crear un modelo para nuestros libros, además de eso, crearemos una vista
de reciclador y un adaptador de vista de reciclador para mostrar una lista de diferentes libros dentro de la
segunda actividad. Nos vemos en el próximo vídeo..

As found on YouTube