Hola, buenos días a todos. Te
asientos. Como cortesía a los presentadores,
silenciar sus dispositivos en este momento.
atrás. A todos, buenos días. ¿Podrías darle
escenario, dan DPAN dan. Gracias
luminoso y temprano en la mañana. Dijimos
media hora antes. Bienvenidos a todos
todas las personas que estaban mirando en nuestras
Hoy no tenemos conversaciones relámpago.
Por favor, ya sabes, intenta quédese en ambas sesiones de
20 minutos, si puede. Compruebe el programe, una vez más, para asegurarse
favorito. Como
cambio de horario. La conversación entre
El señor Wharton tiene un proyecto
de esto.
En lugar de eso, tendremos Charla
Pero la parte emocionante, en este momento,
grupo hablando de plegable. [Aplausos]
Su nombre es Adrián Roos. Soy ingeniero
de software. Soy Andrii y trabajo en multipantalla.
Soy Jisun, soy director de ingeniería.
Estoy seguro de que ya habrás visto
asociarnos con Samsung y estamos
eso significa, lo que estamos haciendo para
dispositivos. Jisun está aquí para hablar
haciendo. Entonces, con eso, se
lo entregaré a Jisun. Gracias. Entonces, nuevamente, soy Jisun
Voy a hablar sobre el nuevo dispositivo
anunciado en la Conferencia de Desarrolladores
Entonces, cubriré más información
en sí, y además, hablaremos de
dispositivo plegable traerá a los
Todos sabemos que el teléfono inteligente ha
experiencias de los últimos 10
la forma en que las personas piensan, actúan
y también se comunican. Además, También abrió muchas nuevas oportunidades
desarrolladores. Ahora, creemos que un
próximos revolucionarios, que brindarán
una experiencia única para los usuarios y también nuevas
oportunidades para los desarrolladores para impulsar innovaciones.
Bueno.
el primer teléfono plegable de Samsung.
La primera El teléfono plegable de Samsung está diseñado
con dos pantallas y también
Entonces, echemos un primer vistazo a
cuál es la configuración real en cómo se ve realmente la pantalla. Entonces,
cuando el dispositivo está desplegado. La pantalla
principal es lo suficientemente grande para brindar una experiencia
se vuelve más rico y más
Difícilmente alcanzable, incluso desde los teléfonos
Además de la experiencia desde una
única pantalla más grande, dos La multitarea estará disponible
para utilizar este mayor Pantalla con hasta tres ventanas
Cuando el teléfono está realmente
Pantalla de cubierta útil y portátil
la experiencia es muy similar al uso diario
pero en comparación con la pantalla
estar enfocado y tener una interacción
aprovechar la pantalla pequeña. Entonces,
algunos números que te pueden
especificaciones y las dimensiones de las pantallas
La pantalla de la cubierta proporciona una resolución
320DP. Pantalla
resolución con el mismo 420DP con
ancho. Estos son los números que quizás
Ahora les mostraré algunas experiencias
algunos ejemplos. Entonces, comparando
teléfono inteligente y pantalla principal
plegable y puede ubicarse más grande
realmente permite que los contenidos,
más detallado, como puedes ver
En la pantalla de portada, cuando el dispositivo
está plegado, dije la experiencia.
Se puede optimizar para proporcionar
interacción. Si bien el dispositivo es
teléfono inteligente normal.
notificación o llamada o
la pantalla de la cubierta. Sabemos que
teléfono para atender una llamada entrante. Si bien la pantalla de portada y la pantalla
propia experiencia única. Es
ni desconectado. Más bien, la experiencia
pantalla, es muy continua y está conectada
Por ejemplo, si desea buscar
centro desde un mapa, puedes hacerlo
Sin embargo, si abres tu teléfono,
continúa corriendo. Aún más, desplegar
proporcionar más información con más
cerca y cuál es la ubicación
Usar la aplicación de galería es similar.
continúa entre el modo plegado
y también el modo desplegado. Las ventanas multiactivas para realizar
múltiples tareas también son una de las características clave. Entonces,
mientras miras un video de YouTube, si desea navegar por un sitio web, puede simplemente
abra un navegador y navegue por el sitio
jugando. Además,
mensajes y aparece la notificación,
notificación y arrástrela a una tercera
continúa chateando y navegando, mientras
jugando.
Entonces,
experiencia con el nuevo dispositivo plegable,
Google, hablará sobre la guía para
Compatibilidad con Android para que
plegables. Gracias
Jisun. [Aplausos] Entonces,
sobre cómo puedes aprovechar los elementos
tipo de pautas que podríamos recomendar
arriba es la continuidad de la pantalla.
continuar con lo que estás haciendo actualmente
el dispositivo. Y aquí tenemos
un ejemplo: tienen un mapa. Estás mirando en un dispositivo
ver tal vez un poco más sobre los
alrededores del lugar donde estás mirando.
Entonces, como usuario, despliegas
experiencia continua, seguimos
mirando al mismo lugar, su estado se mantiene y el teléfono
ventaja del factor de forma. Y esto
algo nuevo en Android, ¿verdad? Hemos tenido
situaciones anteriores, con cosas como la
rotación de la pantalla o el cambio — cambiando el tamaño de la pantalla o — lo
siento. Cambiar el tamaño de las ventanas en ventana múltiple. Entonces,
¿Continuidad cuando construyes tu aplicación?
dispositivos por una razón y generalmente
es porque quieren bucear profundizar más en la tarea que están realizando
realmente funciona mejor cuando no
experiencia al hacerlo y pueden
antes de desplegarse.
Entonces,
experiencia, es muy importante
Eso parece genial. Ahora bien,
Bueno, como dije, Android está
construyó un sistema para lidiar
con eso. Plegar y desplegar el dispositivo será tratado como un
Tamaño de pantalla y categorías de
diseño de pantalla. Y para apoyarte con eso, el sistema Android,
actividades cuando ocurre un cambio de
Esto tiene la ventaja de encargarse de cualquier
podría querer hacer al aprovechar
configuración. Pero también significa
responsable de restaurar el estado en el que
se encontraba el usuario después de eso La actividad se recrea. Para
instalación estatal y la introducción de una
ViewModel para ayudarte con eso.
Alternativamente, también podría
la configuración cambia tú mismo simplemente
su diseño. Para ello, puede
el cambio de configuración en su manifiesto,
tendrá que ajustar manualmente el tamaño
Asegúrese de implementar correctamente
actividad como redimensionable. Ahora,
cambios en el ciclo de vida en ventanas
Comportamiento actual de la izquierda.
que el usuario tocó por última vez está en
otros están en estado de pausa.
Esto
porque no es capaz de ver inmediatamente
Estado menos interactivo y es una
Tenga en cuenta, como desarrollador, cuando
introduciendo el modo de reanudación múltiple.
Es bastante simple, de verdad. Todo las actividades en multiventana que están
visibles están todos en el estado de currículum.
Ahora, Android Pie no venía con este
Por eso vamos a hacer de esto un comportamiento
Solo se aplicará con las operaciones del desarrollador
El fabricante del dispositivo realmente implementa
según nuestras especificaciones. Pero
tenga en cuenta que en futuras versiones de Android, esperamos que este comportamiento
Entonces, digamos que tienes una aplicación
Este ciclo de vida simplificado, ¿cómo
una bandera a su manifiesto de
Sin embargo, debido a que hay múltiples
se reanudó al mismo tiempo.
Tenga
mucho cuidado con el código que almacena la actividad reanudada porque
que uno de esos. Tenga cuidado con
que podrían hacer las mismas
Y con eso se lo voy a pasar
para hablar de ventanas
múltiples / pantallas múltiples. Entonces, hablemos un poco más sobre los dispositivos
multipantalla. A Se puede iniciar una actividad en una
realmente significa para su actividad.
En primer lugar, cuando un actividad está en una visualización no predeterminada,
el contexto de la actividad es diferente del contexto de la aplicación
disponibles en receptores de radiodifusión
y proveedores de contenidos. El contexto de una entidad visible se
ajustará para la visualización. zona donde se muestra. Si utiliza la
visualización actual y usar un tipo
para ello, obtendrás resultados diferentes.
puedes conseguir, es desde la
El contexto siempre le dará la visualización
Un contexto diferente también significa
configuraciones.
Se actualizará
Todo lo que necesitas hacer es solicitarlos
Cuando quieras ajustar tu UX, deberías
utilizar una actividad. Tenga en cuenta que el usuario puede
pantalla a otra en cualquier momento. En la
este lugar tiene diferentes tamaños,
resoluciones. Esto significa que la actividad
que fue silenciada se volverá el cambio de configuración. Si se
cambio, será notificado con la nueva
ser lanzado. Para
Le recomendamos que maneje los cambios
es posible y si su aplicación necesita
Puede encontrarlo en pantalla. ¿Qué
ventaja de estas pantallas adicionales?
El primer paso es para obtener información sobre las
Puedes consultar sus banderas,
métricas y estados.
Por ejemplo, puede buscar una pantalla en vivo para proporcionar
apaga las pantallas que están actualmente
Una vez que haya determinado qué
pantalla desea utilizar, puede inicie su actividad allí usando la API
disponible en Android E/S. Si desea
actividad, es posible que desee utilizar las
tarea para este lanzamiento.
restringir los lanzamientos de actividades a algunas
ejemplo, exhibiciones privadas. Puedes
Recuerda que existen varias plataformas
dispositivos multipantalla. Los teléfonos
hoy. A continuación,
Cuando conecta su teléfono a una pantalla
productividad o entretenimiento. Aplicaciones
SO. En ambos casos, las aplicaciones
modo de forma libre y el usuario
redimensionable sin problemas. Por último,
pero no menos importante, está el automóvil. Androide. Puede que haya muchas pantallas
Los niños en los asientos traseros pueden
mientras el conductor utiliza la
Para las aplicaciones, en general, no
diferentes. Para verificar el comportamiento de su
ejecutando O o superior, puede crear
Inicie su actividad allí. En
La pantalla no soporta el tacto. Estamos
trabajando para mejorar esto. y vamos a agregar nuevas herramientas
Con todas estas plataformas nuevas
Optimice su aplicación y cree una
Puede probar su aplicación y configurar
No olvide que en este caso pueden realizarse
enfocado.
Considere también el uso de
ventaja de otros componentes de la arquitectura.
[Aplausos] Entonces,
disponible hoy. Veamos
el futuro con dispositivos plegables
A corto plazo, para Android Pie, estamos
pautas y le mostraremos cómo
Dispositivos plegables y multipantalla.
una publicación de blog que se publicará
información sobre todo lo que hablamos.
trabajando con Samsung para lanzar un
emulador donde podamos desarrollar y pruebe sus aplicaciones contra los comportamientos
y los comportamientos de reanudación múltiple
tener. Mirando
futuro, con futuras versiones de Android,
soporte para dispositivos plegables
parte de esto, también vamos a
tendrá soporte para simular todos
comportamientos de múltiples pantallas,
Finalmente, algunos consejos sobre dónde
En los próximos días publicaremos
esta entrada en el blog.
hay un sitio para desarrolladores de Samsung
sobre los dispositivos de Samsung y
sus directrices y para realizar pruebas sus aplicaciones, el emulador de Samsung
sitio web en algún momento del cuarto
También me gustaría agradecerle por todas
Los desarrolladores están creando para
Android y estamos muy emocionados. para ver qué harás a continuación y qué
próximo factor de forma de dispositivos
plegables. Gracias. [Aplausos] esté
en el área de preguntas y respuestas donde pueda Habla con nosotros más tarde, en el próximo
Está bien. Sólo quería tener
algunas cosas menores. uno es Que hayas notado que vamos a tener estas
Estos tienen estos códigos QR
las sesiones aquí en la Android Dev Summit.
Por favor háganoslo saber. Esta vez experimentamos mucho
Lo segundo es que sé que no tuvimos
pero tenemos el líder de ingeniería
Si está interesado en R8, salga
zona de arenero. Puedes valorar todas las
hoy, desde el código QR único. Entonces,
el resto de tu día. Todos, la próxima sesión, en esta
10:20 a.m. Gracias. Todos, bienvenidos de nuevo. Os
Nuestro programa estará en marcha
Cortesía de nuestros presentadores,
Bienvenidos a todos.
por favor sea sentado. [Aplausos]
Buenos días. Soy Chris. Y yo soy Alan. Estamos
píxeles. Necesitamos pensar en las
Son dos las tecnologías predominantes, LCD.
son pantallas, desde el nivel medio hasta
de alto nivel. E incluso en las plataformas,
eso también. LCD
mostrar. Trabajan con lo que ellos llaman
Cada píxel se compone de un canal
retroiluminado. Entonces esos cristales
ellos mismos.
Ahora, la mayor parte de la
en esa retroiluminación. Entonces,
Las pantallas Olet son diodos que, en realidad,
por lo que no hay necesidad de
aquí, es que permiten un negro verdadero.
logras el negro es encendiendo todos
Realmente nunca consigo ese negro oscuro.
Los olets son diferentes. No encienden
el pixel y así es como te pones negro. Ahí es donde está
y el El poder se alimenta mediante la emisión
Ahora bien, hay una serie de arreglos, tienes R, G y B. Entonces,
directo y mentalmente simple. Los hay
Cada píxel solo tiene dos canales.
ampliar el tamaño de píxel sin
En términos de energía, más LED equivalen
estadísticas realizadas durante el último
el mayor usuario avanzado de su dispositivo.
pantalla, más energía utiliza.
caso. Pero la cuestión es que en realidad
algo simple. Pero
luego empezamos a comparar oled dispositivos versus pantallas LCD y
tener una captura de pantalla de mapas en un modo
modo. La razón por la que usamos
Quiero que las diferencias sean iOS o Android para mostrarlo.
y el día es el mismo. Eso
Pantalla LCD.
Pero en el píxel
En la pantalla, la potencia cae un 63%.
su dispositivo, usando un tema oscuro.
Profundizando más en ello, cuando tienes
entonces, hicimos una prueba en la
mostrar. Y el color real, en sí mismo,
fuerza. El azul tiene un 24% más de poder
luego, otro gráfico, que es más
gráfico anterior, pero puedes ver que el negro
cantidad de poder. Sube y sube hasta
El blanco usa canales para cada uno, es completamente
azul completo, requiere la mayor cantidad
¿Cuál es el color hacia el que te hemos
estado empujando? Cambiamos de hueco a este tema blanco y nos disparamos
de poder. Veamos
el último año y los ahorros de
tener. Aquí YouTube, brillo total. Ahorras
uso. Cuando estás reproduciendo
de todos modos.
aún más, es el 60%. Supongo que aquí
el video en realidad oscurece el video,
color más oscuro así ahorramos más energía.
Depende mucho del contenido del
que sea completamente blanca, no
Gboard es un buen ejemplo. Los usuarios pueden
controlar esto y ahorrar el 20% de su batería o el uso de la pantalla de
cambiando a un tema oscuro.
Finalmente,
ejemplo de tema oscuro y donde
Tiene los beneficios obvios de la
siendo un tema muy blanco cuando conduces
El tema oscuro, aquí, hace que la aplicación sea
configuración.
Y ahora Alan va a hablar. Está bien. Entonces, ¿cómo podemos abrazar
¿Implementar el modo oscuro en nuestras aplicaciones?
No nos ahorrará batería aquí,
dispositivos. Entonces, quizás recuerdes
vista previa de Android el año pasado
o el año anterior o el año antes de eso o el año anterior a
Soporte día/noche en compatibilidades
artículo al respecto. Nuestra
Modo oscuro en tu aplicación y
Día/Noche. Puedes conseguirlo
Los widgets responderán a los cambios
Modo y puede alternar entre el modo
la demostración de la caja
AOSP, puedes echarle un vistazo. Es
entre cualquier tema que estés usando antes
Simplemente tomas el tema de tu
inherente a uno de los
podría funcionar. También
tema dinámicamente en tiempo de ejecución.
Temas oled negros, hay algunas
o un tema rosa de Hello Kitty, puedes hacerlo
en tiempo de ejecución.
Si usted Si quieres aprender más sobre temas superpuestos,
Chris y yo hablamos sobre aquellos en I/O hace unos años. Esto
garantiza que cada vez que un tema sea configurado, lo superpondrá inmediatamente
o un tema de Hello Kitty y cualquier
usando ese tema correctamente. Está
Querrás estructurar tu aplicación según
los atributos del tema. Todo Los elementos de diseño de la plataforma
dependen en gran medida de los atributos del tema. para obtener sus colores. Color de primer
acento de color normal.
El pulgar…
Puede arrastrar hacia la izquierda y hacia
de color gris claro cuando está habilitado.
está deshabilitado. La
implementación de eso es sólo una selector de color, una lista de estados
atributo, que es blanco bajo un tema
tema y un alfa. Variamos eso según
temas. No
aquí. Hablaremos más sobre esto
con Nick Butcher sobre temas y
Está bien. Entonces, mencioné que
El calificador ha estado ahí desde
uso general en Android N, por lo que la posibilidad
calificador en todo el sistema, hay algunas aplicaciones
él. Messenger ha estado haciendo
fijado. Es
similar al retrato o al paisaje.
dibujable/noche y si tienes recursos
extraiga los colores del tema, digamos que tiene
eso es complicado, puedes obtener
demasiado complicado para ponerlo en
un dibujable vectorial, puedes soltarlo en la noche dibujable. Recogerás ese
Lo mismo ocurre con los colores, si
dice que su color de acento es más oscuro,
recurso de color, tiene una versión
en colores, una versión en valores noche. Entonces,
cómo puede verse la implementación.
tema principal basado en el calificador
nocturno, lo defines una vez en valores y una vez en valores noche
Cuando no sea el modo nocturno,
cuando se hace referencia en modo nocturno,
está activado, retomarás el tema nocturno.
Tenemos el mismo color referenciado
Se iluminará en negro en el
blanco en el modo nocturno.
Cuando
puedas actualizar tu aplicación, tal vez hacer un poco de reestructuración.
captura de pantalla de su aplicación, inviértala
idea de si hay imágenes que
versión alturniva de. Tenemos avatares,
tal vez queramos cambiar. los colores de fondo un poco, por lo
que eso puede significar extraer atributos de tema o diferentes conjuntos
noche dibujable. A continuación,
del uso de colores en su diseño
Configura el padre de tu tema para que
theme.appcompat o theme.material.
Mire y vea si está perdiendo contraste.
lo que tu Verás, debería verse así.
Todos
Los colores de primer plano estaban
Lo único que no estaba
codificado (y casi se puede véalo aquí: es la etiqueta del
invisible porque es lo único
en los atributos de color del
requerir mucho trabajo. lo
trabajar. Entonces, querrás refactorizar
posible. Tome cualquier diseño codificado
a recursos de color con nombre. Puedes
valores/noche de valores. Si
querrás extraerlos para colorear
algún tipo de significado en su
aplicación.
Tenemos color de texto primario, tenemos color hacha enviado,
debería usarlos tanto como sea posible
ventaja de los atributos del tema para
propagarlos en sus listas
Puede convertir sus PNG en máscaras
alfa y convertir tintes. Puedes envolver aquellos donde hay un mapa
de bits. Hablaremos, de nuevo, un un poquito más sobre esto en la
hoy. A continuación,
te mueves y obtenga cambio automático en modo nocturno.
Aquí tenemos el Twitter. aplicación, que tiene una posibilidad
muy obvia para cambiar entre día y noche. Entonces, si tocas
Hay un nodo oscuro especificado en la plataforma,
por lo que es posible que tengas un triestado. Tú
que su aplicación funcione cuando cambie
el Modo nocturno. puedes usar ABD, abre tu aplicación, una vez que hayas
implementado el tema día/noche, cambiarlo a noche, sí. Va a
visualización, recreación y conservación
En dispositivos Pixel 3 que ejecutan
entra en modo de ahorro de batería. Puedes
opciones y empujar el nodo might para que esté
de las cosas heredadas que tenemos está
día. Puedes
aprender más en los temas. Y la charla de estilos que daré
hoy.
Si desea obtener más información
cosas, Chris y yo dimos una gran charla
Cubre todo lo que quieras saber, pero
Pregunta por temas y estilos. Estaremos
Android Lounge para responder a cualquiera
Gracias a todos por venir. Por
favor abraza el lado oscuro. [Aplausos] Hola, bienvenido a Cómo mejorar la duración
Mi nombre es Jingyu Shi, soy socio
desarrollador. Hola, soy Amith Yamasani.
Esta notificación la hemos recibido
todos, ojalá nunca aparezca. esta hora del día. Saber que nuestra
batería se está agotando puede ser Realmente frustrante y a veces aterrador
y lo que estamos haciendo en este momento.
mucho en nuestros dispositivos para
amigos y familiares, tomar fotografías
nosotros cuando viajamos a un país
Pero todas estas funciones interesantes y aplicaciones
no puede ayudar al usuario si su batería
hoy estamos hablando de cómo vamos
Con tu ayuda, espero. Y esto
cubrir. Primero, hablaremos sobre
medimos el consumo de energía
las funciones de ahorro de energía que hemos
Cómo se verá afectada su aplicación por
A continuación, se lo pasaré a Amith para
fuerza. Hola.
De hecho, estimamos cómo consume energía
está consumiendo en el dispositivo.
Estos
Componentes, componentes de hardware
destacaron los principales consumidores. Tienes
Funcionar a altas frecuencias también
transferir datos a través de la red celular
Bueno. Entonces,
Fabricado, el OEM tiene un perfil
de potencia. que contiene es la corriente promedio consumida por
medir en tiempo real y, por ejemplo,
encendido, con brillo mínimo, podría
súbelo al brillo máximo, digamos
Entonces, hacemos un seguimiento de eso en
consumos de energía. En tiempo
Hay un subsistema llamado estadísticas
cada aplicación está haciendo. Mide cuánto
estos recursos, como cuánto tiempo
de CPU, a qué frecuencia, cuánto muchos paquetes de datos se están transfiriendo
multiplicamos por el coste de energía de
estimación aproximada de cuántas horas
agotado y clasificamos las aplicaciones,
pueden ver eso en los entornos y aprender
realmente agotando su batería.
Entonces,
está tratando de ayudar al usuario a extender
la duración de la batería. Pero, En primer lugar, en términos generales, hay dos
se ejecuta, el usuario lo inicia,
el usuario utiliza activamente la aplicación.
No quieres que no lo hagan, pero eso
tema sobre bienestar digital y
los usuarios controlan cuánto tiempo dedican
Pero una nota que quiero dejar aquí
suspender aplicaciones y eso
es algo que quizás quieras leer sobre y cómo esto afecta su aplicación
si el usuario suspende la aplicación por, digamos, el resto del día.
Pero nos centraremos en cómo intentamos limitar
una aplicación. Una aplicación puede programar
trabajo en segundo plano mediante trabajos o alarmas. También puede registrarse para
desencadenantes como mensajes push
A lo largo de los años, hemos introducido varias
ahorrar batería. Primero,
en Marshmallow, presentamos Doze.
Pone el dispositivo en un sueño profundo.
Digamos que lo dejaste encendido su escritorio o mesita de noche, básicamente
la actividad en segundo plano para que
duración de la batería.
Usamos nuestros teléfonos diarios, ¿verdad?
Entonces se nos ocurrió Doze on The Go.
lo pone a dormir ligeramente. No
usando la pantalla para poder
trabajar. Probablemente
con las oreos restricciones a los servicios en segundo
todos deben apuntar a Android Oreo
Pero nos centraremos más en las novedades
P, Batería adaptable, Ahorro de batería.
revolución de App Standby que se
dos posibles estados, activo o inactivo.
extiende esto en cuatro cubos.
Según
algunos otros cubos. Por
e instalas la aplicación I/O, debería
porque no lo has estado usando.
Entonces, ¿cómo asigna el sistema operativo estos
desactivado cuando estás instalando la
mostrado aquí, en realidad no es tan
aplicación, o cada vez que inicias la aplicación
interacción, como hacer clic en una notificación,
cubo de aplicaciones y permanece allí
por un tiempo, tal vez en unas horas baja y comienza a aplicar
un poco más tarde, más frecuente
desinstala tu aplicación. Estoy bromeando.
Nosotros no hacemos eso. [Risas] Si
notificación, no es una indicación
uso de la aplicación, por lo que la pusimos
cual es el conjunto de trabajo. ¿Qué
es que si el dispositivo tiene un algoritmo
tus patrones de uso, aprende con el tiempo
y decide, está bien, esta aplicación probablemente se utilizará en
las próximas horas, déjame ponlo en el conjunto activo y
datos. Y una vez que siente que tal
vez la aplicación no va a funcionar usado por un tiempo, es posible que lo mueva
cubos así que esto realmente aprueba su capacidad de la cantidad
fondo.
No es
saber cuándo el usuario te iniciará,
ayuda con eso. Las restricciones
son otra característica. Limitamos lo que la aplicación puede hacer en
segundo plano. se cumple mayoritariamente para aplicaciones que deseas hacer
formas en que la aplicación puede entrar en
configuración, que su aplicación
restringir manualmente la aplicación. El
criterios y si considera que está
sugiere al usuario si desea restringir
porque está agotando la batería
Estas son cosas que mejoraremos y
este. Los
servicio terrestre completo. En lo
cosa de fondo si ves que
notificación y está funcionando en
enero también estará restringido. Entonces
mensajes cuando su aplicación está en estado
actualizaciones de ubicación y una cosa que es
Las restricciones son incluso mientras
te permite ejecutar en segundo plano.
de ahorrar batería, también se
preocupaciones de privacidad.
Las restricciones funcionan. Algunos de los las diferencias están en primer plano, está
No hay restricciones para las notificaciones
Y una cosa nueva en Pie es que
servicios por completo, al menos en dispositivos
Pixel, es posible que los OEM no elige hacer eso.
Puedes preguntar
su depósito de reserva actual, en
depurar algo, también puede obtener
información histórica sobre su grupo de espera cambia. Puedes comprobar
fondo restringido en este momento
usuario algo sobre eso. Por favor,
No quieren que corras, no quieren
Y también puedes comprobar si el ahorro
se llama modo de ahorro de energía.
Entonces, ¿cómo se ve afectada tu aplicación?
Entonces, en cualquier momento al sistema, su La aplicación será uno de estos
el primer plano o el
aplicación se considera en primer
Se eliminan las restricciones para que
Cuando tu aplicación está en segundo
todas las funciones de ahorro de batería
cualquiera de ellos podría estar habilitado,
Las alarmas, el acceso a la red y los mensajes
A continuación, tenemos algunos
mostrarle cómo se ven afectados.
Primero
Dadas todas las limitaciones que tiene
ificado, estas son las cosas que afectarán
va, su trabajo se trasladará a la ventana
de mantenimiento. Si el usuario decide activar el ahorro de batería o las restricciones
restringir su aplicación de esa configuración
aplazarse hasta que el usuario abra la aplicación
primer plano. Su
trabajo podría ser aplazado hasta 24 horas, es entonces cuando tu aplicación
ese es el peor de los casos, lo que significa
En el peor de los casos, su trabajo se ejecutará
De manera similar, para las alarmas del administrador
de alarmas, afectará cuándo… alarmas de incendio. Cuando esté en modo
ventana de mantenimiento. Si el usuario
restrinja su aplicación, su alarma se
está en primer plano. Y finalmente, al
La alarma podría retrasarse hasta dos horas
ese raro cubo.
Si
tiempo exacto de ejecución, entonces,
por ejemplo, si desea recordarle a un usuario necesita tomar medicamentos
al que se suscriben está por comenzar,
Puedes usar este método de ídolo para
Pero estás usando el administrador de alarmas
para activar el dispositivo con frecuencia. e imagina que cada aplicación lo
estás gastando mucha batería.
Por eso tenemos el despertar excesivo en su página de signos
páginas, es causado por el administrador
Piense en tal vez migrar a otras
Si envía notificaciones automáticas,
Ya estoy usando Firebase Cloud Messaging.
en Doze, tus mensajes prioritarios
ventana de mantenimiento.
Esto
FC mensaje FCM, se les activa para
usuario. Si activan el ahorro de
ser entregado, tal como está. Como
el usuario restringió tu [sin audio]
audio]. Se aplicarán
que se ejecuta en un dispositivo
SDK al que se dirige. Entonces, nuestro primer
prueba tu aplicación. Tenemos comando
ABD. Puedes usar para poner todo. sus aplicaciones en estas funciones para
están llegando. Excepto
por el FCM de alta prioridad restricciones, ninguna de ellas se conoce.
bajo Doze, es muy probable
mucho que trabajar con estas características.
Nuestro segundo consejo para usted es
el fondo, tenga en cuenta usar
principio de diseño.
Intenta reducir el
trabajo. KROUR: lo estás haciendo en segundo
plano. ¿Puede esto esperar hasta ¿Mi aplicación está en segundo plano? Si
antecedentes, trate de posponer ese trabajo para
El dispositivo está enchufado o piensa
en esa alarma exacta. ¿Tiene que suceder en ese momento
Finalmente, intenta hacer el trabajo en
segundo plano. En Lollipop, nosotros presentó Job Scheduler, que es
sistema para agrupar de forma inteligente
todo el trabajo en segundo plano y esto año, introdujimos WorkManager en Jetpack,
el fondo funciona mejor. Cuando
forma recomendada de realizar el trabajo en segundo
Echemos un vistazo a esta vista mejorada
fondo. Si
necesita ejecutar un trabajo que sea
WorkManager es su respuesta. Si este
entonces usarías un mensaje
Lo que significa que querrás usar el mensaje
hay trabajo que debes hacer y el controlador
poner en cola ese trabajo.
Si su caso
estos casos y necesita ejecutar
entonces querrás usar el administrador de
Si esto es algo que el usuario
está sucediendo y debe suceder
servicio de primer plano. Pero por favor,
servicio en primer plano, agregue
No hay nada más frustrante que ver
y no hay nada que pueda hacer al respecto.
acción en una notificación para que
se desestima la notificación. Si
diga volver a la parte superior o debe esperar
primeros planos. Entonces,
a la 1:00 p. m., vaya allí para
para hacer trabajo de fondo. También
tenemos muchas mejores prácticas y orientación, cómo puede ayudarnos a ayudar a
los usuarios a ahorrar batería. Por favor visita para conocer más.
horario esta tarde para cualquier
duda. Gracias. Gracias. [Aplausos]
Esta sala comenzará en 10
.
Bienvenido
Estaremos de vuelta a las 13:00 horas. Fresco. Gracias por venir. Bienvenido
Gerente de Trabajo. Mi nombre es Sumir
Soy Rahul Ravikumar. Ambos
Componentes de Arquitectura, en
Yo agarro mi…
[Risas] Está bien. Le daremos un estado
Gerente de Trabajo. Quiero darte una
Gerente de Trabajo. Para aquellos de
ustedes que no han usado WorkManager Antes, queremos brindarle las API
básicas. vamos a hablar sobre WorkManager, las cosas que habéis
cambios que hemos realizado desde I/O.
del sindicato. Ha habido 11 versiones
de WorkManager desde Google I/O y estas son versiones
fue el undécimo. Y la versión beta llegará
Vi la conferencia magistral de ayer y es posible que
este mes.
Esto también fue una novedad para
nosotros. [Risas] Entonces,
guía abreviada de WorkManager y qué
es, para aquellos de ustedes ¿Quiénes son completamente nuevos en esto?
Es una biblioteca. Envuelve el administrador
Si ha utilizado Job Scheduler, los conceptos
le resultarán muy familiares. Entonces, hablemos de trabajo.
funciona, y hablaremos sobre cómo
lo creamos. Lo tienes y ¿Cómo ejecuta WorkManager este
trabajo? Este es un gráfico que podría ayudarte. Mientras su proceso
esté en funcionamiento, lo haremos alimentar a este ejecutor que tenemos.
cosa. Pero su proceso puede ser cancelado
Garantizado para hacer el trabajo. Podrá
aplazarlo, pero lo hará cuando se cumplen las restricciones. Si
Programador y antes de eso usábamos el
las señales se cumplen, digamos que
pones un retraso de dos horas cuando tienes red.
Cuando se cumplen
seguirá yendo al mismo ejecutor.
Está bien. Hagamos un recorrido rápido
La unidad fundamental de trabajo, en
WorkManager, es un trabajador. Aquí, Estoy definiendo un trabajador de cálculo.
tipo. Lo único que necesitas hacer
Estoy volviendo un éxito. También
fallar. Estoy haciendo algunos cálculos
hilo para que no tengas que preocuparte
porque WorkManager tiene la
trabajar. Aquí,
éxito de forma sincrónica. ¿Cómo haces
que funcione ese trabajo? Entonces, para Para ello, debe poner en cola una solicitud
una es una solicitud de trabajo periódica. Estoy
construyéndolo con el
retraso inicial. Esto le dice a WorkManager
que solo ejecute el trabajo. después de que hayan pasado dos horas desde
establecer la restricción de carga.
Sólo
el dispositivo está conectado o al cargador,
realmente cargando. Hablaré
detalle y estoy llamando a .build. Ahora lo
instancia y conseguir el trabajo. Y,
del estado en el que se encuentra su trabajo, desea
por LiveData. Esto devuelve un LiveData
es el estado de su trabajo y LiveData
observable. Entonces, una vez que lo adjuntes
a un propietario de LiveData, una vez pones en cola el trabajo, una vez que se
en ejecución y luego, finalmente,
pasará al estado exitoso. Recuerde la etiqueta que agregamos cuando
solicitud, puedes obtenerla con
solicitud de trabajo y puede haber
una o varias.
Puedes asignar el misma etiqueta para varias cosas. Es por
de nuevo. Una lista de información laboral.
cosas que hice en la diapositiva anterior.
Entonces, una de las características más interesantes
de WorkManager es la capacidad de trabajo en cadena. Entonces, eso te ayuda a
definir una gráfica de trabajo y aquí, Le estoy pidiendo a WorkManager que comience
con A, B y C y están trabajando. solicitudes. D y E solo son elegibles
Ya están hechos.
Le estoy pidiendo
a WorkManager que ejecute A, B y C para correr en paralelo. Y, finalmente,
vuelvo a invocar esto. FGNH solo se ejecutará una vez que se hayan realizado
todas las ejecuciones del procedimiento. No olvidate de llamar cola. Las devoluciones
La continuación del trabajo es un nodo
API muy fluida. Cada vez que lo llamas,
llama a una nueva instancia. de otra continuación. Por
cola. Cuando encadenas trabajo, las
solicitud se convierten en entradas para
niños. Esto le ayuda a administrar y enviar
al trabajo descendiente. Ahora,
WorkManager que también expone la
Para hacer eso, puede cancelar el trabajo
por ID y cada solicitud de trabajo tiene una identificación única. Aquí, estamos cancelando
También puedes cancelar el trabajo por etiqueta.
Y eso es todo.
todas las cosas: todas las API que hemos
estado mostrando son para alfa 11.
Es posible que notes algunos ligeros cambios
He estado usando esta API antes.
Entonces, hablemos sobre cómo aprovechar
WorkManager al máximo. Él incluye, ¿cómo hago un determinado
uno sobre el que recibimos preguntas es
¿Funciona el subprocesamiento en WorkManager?
solicitud, Rahul acaba de mencionar
un ejecutor de tareas interno. Es un
La cola va a eso. Cada aplicación
tiene una base de datos WorkManager.
Aquí es donde realizamos un seguimiento
de sus entradas, salidas y dependencia. cadenas. Después de que se haya puesto
se han cumplido las limitaciones. Si
no tiene restricciones, se ejecuta. de inmediato. Si hay restricciones,
tú. El mismo ejecutor de tareas usando una fábrica
Obrero. Es una fábrica para Trabajadores
propio. Puedes personalizarlo y hacer
Una vez creado el trabajador, lo
ejecutamos en un ejecutor. Este en realidad es algo que puedes personalizar.
Sobre eso también más adelante. ¿Qué
ejecutar algo en ese ejecutor?
¿RxJava o Corrutina? ¿Qué pasa
¿Quieres usar para ejecutar cosas en segundo
Eso surgió con bastante frecuencia cuando lanzamos
Entonces, para hacer esto, queremos proporcionarte
una API que te permita hacer trabaje por su cuenta y díganos cuando
hazlo asíncrono cuando hayas terminado.
Trabajó en esto por lo que no necesita
Son literalmente una o dos clases
que puede tener uno o más
se puede invocar en un ejecutor de alimentación de especificaciones.
Entonces usando Esto, lo hicimos trabajador escuchable.
Debe anular el inicio del trabajo.
Nos das una característica listable.
y cuando haya terminado, establezca el
ser capaz de escucharlo y reaccionar
Entonces, el modelo de subprocesamiento
ejecutor de tareas, que utiliza la fábrica
escucha trabajador. Llamamos a empezar a
oyente para que podamos escucharlo
La clase trabajadora es un trabajador
hacer el método de trabajo del que hablamos.
tú. Creamos una característica. En
ejecutar la obra. Y nosotros, por supuesto,
Entonces, ahora tenemos dos clases, Trabajador
Los trabajadores son una clase más simple. Una
y en un hilo de fondo. Carreras
de forma asincrónica en un hilo de fondo
Se espera que hagas lo que estás
Es posible que desee devolver una función
Guayaba, tienes acceso a los
una implementación liviana que proporcionamos
características.
la gente lo intenta y lo hace incorrectamente
con el trabajo. Están intentando hacer localizaciones.
Los tirantes hablan, hablaron
La clase trabajadora es sincrónica. Si adjunta
Devuelve el éxito, tu trabajo ya
va a funcionar de la manera que crees que
Entonces, lo primero que hacemos aquí
esta es la característica que regresaremos y sobre
el método de inicio de trabajo,
permisos.
Si no lo hacemos, estableceremos
De lo contrario, lo que haremos es obtener
ubicación. Esto es como una
Mundo de los servicios de pago. Y luego
trabajo de inicio de alto nivel. En
Usaremos esa tarea y le agregaremos
exitoso, lo devolveremos con un
De lo contrario, estableceremos
los tres casos en los que queremos
tarea fallida o si no tenemos
permisos y WorkManager adjuntará a ese oyente, escuchará
fracaso de la tarea y llevar la contabilidad
Está bien.
Sumir mencionó que WorkManager utiliza la
Cuando haces cola o trabajas, tenemos que
teneduría de libros.
Estas son una base de datos y tenemos para hacerlos en un hilo de
asincrónico. ¿Qué pasaría si
quisieras hacer algo después del ¿Se produjo la cola o se canceló?
Quieres asegurarte ¿Terminaron antes de que quieras
introdujo una nueva API. Poner en
El funcionamiento es una interfaz
Una API de obtención de estado, que devuelve
observador, verá cómo pasa
hacia un éxito o un fracaso.
El otro
tipo. Recuerde que esta API solo devolverá
de la operación. Si estás adjuntando
obtener un éxito o un fracaso y cuál
es la excepción y decirle por qué ocurrió la falla.
la gente tiene es, cuándo se detiene
¿Dejar de trabajar en nombre
casos en los que se detiene el trabajo. La
Las restricciones ya no se cumplen. Dijiste
Esta tarea de carga pero tu
red se perdió. Un segundo caso es ese el sistema operativo anticipado su trabajo. La tercera razón
es que cancelaste tu trabajo. en otro lugar de tu aplicación. ¿Cómo
oyente del método Trabajador
y obtienes tu señal de alto. Cancelamos
Puede agregar su propio oyente
Entonces, esta es tu… cuando te
suceda una de estas dos cosas, esta es tu señal para ser un buen
Después de llamar a esto, el sistema
operativo puede finalizar el proceso. Entonces, si el sistema operativo despertó el proceso
De hecho, podría matarlo cuando decida
deténgase y si devuelve algo
digamos que obtuviste un éxito, lo ignoramos
Estamos preocupados, su trabajo ha sido
También puedes sacar de paradas en
el método está detenido.
Eso
Señaló para detenerse. Entonces,
Buen ciudadano y limpieza. Digamos
de forma asincrónica y lo estás haciendo
en un Worker. Tienes esto flujo de entrada para que estés leyendo un
analizar el archivo. Esto está haciendo
algo de forma asincrónica y usted volver a la función. Aquí está el archivo
de análisis. Tienes un albacea, lo que sea, una rutina, lo estás haciendo
Estás abriendo un archivo, estás
archivo, haciendo algo con ese byte
establece un éxito porque ya terminaste
Tricatch finalmente después de eso para
Entonces, ¿cómo manejamos cuando su trabajo
ejecutando? Digamos que queremos terminar
podría cerrar fácilmente ese flujo de archivos
pasa ahora? Ya lo has hecho.
Bueno, si estás en medio de ese
archivo, lanza una excepción.
La
algo, afortunadamente ya estás
allá. Hay un caso más que
¿Qué pasa si la detención ocurre
No estás buscando eso porque
nunca recibió esa señal. y leerás ese archivo porque
Intenté cerrarlo. Harás todo este
trabajo y cómo lo solucionarás. Se utiliza el método is-stop. Este
honraría la señal del sistema operativo
ser un buen ciudadano. Así
método o cada vez que pone en cola una
varias transiciones. Echemos un vistazo
pedido. Se puede bloquear si se
o en cola. Una vez cumplido se pone
Dependiendo del resultado que devuelvas,
los estados terminales. Si el trabajador
es…
Lo terminaremos con un estado
devuelve un error, entonces lo marcaremos
momento en el tiempo, mientras el Trabajador se
Si realmente vuelves a intentarlo, aplicaremos
y vuelva a intentarlo. Entonces el Trabajador
Si tiene un estado sin terminación
y llama a cancelar, se cancelará. terminar en cancelar. Ahora
veamos el trabajo periódico. Es casi lo mismo. Debido a que
estado bloqueado. Todo termina en el
Ya sea que lo logres o lo vuelvas
estado en cola. Esto puede parecer
Está hecho. Esperaremos al próximo
Si nos pide que lo volvamos a intentar, aplicaremos
Te diremos que esta es la segunda
vez que intentas ejecutar para ese último período. Y,
falló, entonces lo haremos pasar al
punto, su trabajo periódico no se ejecutará
estado no terminal y lo cancelas,
cancelado.
Apliquemos
cadena. Aquí está el padre de todos los
poner en cola esta cadena de trabajo, Todos los descendientes están bloqueados ahora.
en estado de funcionamiento. Una vez hecho
esto, supongamos que lo logró. entonces desbloquea B y C ahora
y entran en ejecución y para el En aras del argumento, supongamos
falla. B desbloquea D para que D
entre en el estado en cola. Aviso ¿Qué pasa con E, F y G? Todos
fallaron.
Si una unidad se cancela, todos sus descendientes
cancelado.
Trabajo único y comencemos con una
¿Está mal con este código? Tienes
un objeto de aplicación en el al crear. El problema aquí, y lo
he visto en algunos errores. – es que esto pone en cola trabajo
Se inicia el proceso de la aplicación. Probablemente
hacer. Estás intentando configurar una sincronización
código cada vez que se inicia la aplicación,
cosa que sincroniza tu código, realmente
a ellos. tan unico El trabajo le permite, si inserta la misma
Nuevamente, ¿quieres sobrescribir e
ignorar lo que estás intentando? ¿hacer?
es una política de conflicto para
WorkManager.
Aquí está la sintaxis. Único es ese nombre, esa clave.
identifica esa cadena de trabajo. La política
política o las políticas de conflicto
y luego, obviamente, tienes tu solicitudes. Entonces,
hay tres de ellos. El primero
cosas bloqueadas, en ejecución
a ellos. Si el trabajo está terminado o
lo que enviaste. El siguiente es reemplazar.
Siempre reemplaza la solicitud de
su trabajo se está ejecutando, se detendrá
minutos antes. Anula el trabajo
pend es especial. Se adjunta
Esto es útil si estás intentando
Por ejemplo, estás intentando crear una aplicación
enviando mensajes en orden, es posible que
para enviar mensajes y desea
Al final, básicamente se trata de
crear un árbol para ti.
Sumir mencionó que una de sus diapositivas
personalizar WorkManager, entonces, veamos
hacer. De hecho, puedes especificar una fábrica
para utilizar sus trabajadores.
Esto es útil en el contexto de — si estás usando Dagger
este es un buen lugar para hacerlo. Puede especificar
ejecutor que desea que utilicen
especifique el inicio de sesión si desea
publique la compilación y registre más
problemas y realizar parámetros del Programador
desea que enviemos a Job Scheduler,
saberlo en caso de que ya esté utilizando
Si desea personalizar
deshabilite el valor predeterminado y agregue esta
entrada a su hombre festival. Ahora que lo has
en realidad crea una nueva instancia
Aquí, estoy usando la construcción
sobrescribiéndolo. Puedo llamarlo para
Por lo tanto, asegúrese de hacer esto
Porque el sistema, el sistema
invocar fuentes de empleo en
su nombre. WorkManager debe ser inicializado.
Quiero hablar, antes de terminar,
desarrolladores de bibliotecas que existen.
su biblioteca, tiene algunos casos
pensar en. Entonces el consejo general
WorkManager es único y la aplicación
Rahul te acaba de demostrar que en realidad
allá.
La fábrica de trabajadores
Trabajadores escuchables. Si necesitas
una dependencia en particular inyección o cualquier otra cosa por
el estilo, tendrás que tener un contrato con la aplicación. Silo
tu trabajo con etiquetas. Raúl Te mostré cómo etiquetar tu trabajo. Si guardas
su prefijo o el nombre de su paquete o el nombre
podrás identificar fácilmente todo
Tenemos que preocuparnos por otras personas, por
Puedes conseguir tu trabajo y operar
con eso. Finalmente, lo hacemos Proporcionar a las aplicaciones la posibilidad
generalmente por razones de privacidad.
Caso de uso en el que tienes que borrar los datos
Entonces, como desarrollador de bibliotecas,
se ha ido debajo de ti.
Mira obtener la última
Lo siento, es muy confuso. Bueno. Próximos
WorkManager si aún no lo has hecho.
tengo, muchas gracias. Estamos
en alfa 11, así que hay tres categorías generales de
y soporte de pruebas también. Estos
Programar tareas con WorkManager es
Está YouTube; en YouTube,
Charlas de 2018 que hablan de lo básico.
ha cambiado un poco, pero en general
leer… o escuchar. Y,
comentarios en nuestro rastreador de problemas de publicación.
nos dijeron ayer por la mañana. Tenemos
que volver al trabajo. [Risas] Muchas
las bibliotecas de Jetpack en la web y
preguntas que puedas tener.
Gracias.
Gracias.
[Aplausos] Todos, la próxima sesión, en esta
p.m. Gracias. [Aplausos]
Hola a todos. Gracias por acompañarnos
para temas y estilos. Y
Nos encargaremos de diseñar
aplicación. La forma en que los diseñadores
la última versión de la paleta
Si aún no estás usando if para
Android, es posible que reconozcas primario de Material Theming
como color primario oscuro. Y
diseñador, puedes hacer un mapeo
color más oscuro, este será
Es importante asegurarse de que sus
atributos canónicos.
Puede resultar
útil retroceder un poco un poco y digamos, llamemos a esto la varianza
color y es genial que tengamos todos
colores con nombres significativos y relaciones
tiene que existir entre el primer plano
De vez en cuando, obtendrás
existe en cualquier lugar y encontrar un
Aquí tenemos un color morado que
varianza y tiene contraste con
mostrará texto blanco encima.
con un nombre para esto, deberíamos
generalizar pero es autocapturador.
Si decidimos que Tenía un tema morado, ahora necesitamos
nombre del color y reutilizar esas
Entonces, ¿cómo vamos a llamar
a eso? Bueno, en el palé, Tenemos estos en color. En primario
color de primer plano mostrado sobre
va a cumplir con los ratios de
el color del texto de primer
plano contra el fondo.
Tenemos secundario, si tenemos algo
blanco. Podemos generar un nuevo nombre
Usaremos en primaria. Eso determina
protección del color. Para proteger
Quiero asegurarme de que contraste con
luz primaria, que parece increíblemente
es. Entonces, puedes decirle a tu diseñador,
hablando de esta versión más clara
Nos referiremos a ella como luz
restricciones. Si
tu diseñador decide que queremos para que sea azul en lugar de morado,
restricciones y utilizar nuestro
tema. De manera similar, proporcionamos
apariencia. Tenemos título, resumen,
nombres desde donde se van a
utilizar. Eso determina el tamaño de píxel, el peso y el color.
A la derecha, vemos a qué se refiere
va a ser roboto.
Sin embargo, si decidiéramos
digamos, comic sans, no
crear un nuevo estilo en todas partes de nuestra
tienen estos nombres que implican cómo
Utilice un nombre significativo cuando
Conozca los atributos de Material
material.io. Utilice esto como
estás mirando simulacros
tiene un color gris aleatorio. Asegúrate
usar. Si está implementando el
Hablamos hoy, sabes que este gris
Blanco claro porque necesita contraste
color o color de fondo. Utilice nombres
Deberían ser más o menos
como si la luz primaria tuviera más
color primario. Continúe y documente
esto en alguna parte.
Comenzar un sitio interno que comparte con sus
siempre estás usando un lenguaje
componentes, los colores, los textos
punto de partida sobre cómo nombrarlos
y cómo hablar de ellos. Cuando recibes una burla que dice, este
es el color hexadecimal. 4836Ef, retrocede y di, este no
es un color hexadecimal. Él tiene significado y necesitamos ser capaces
de hacer una transición sin problemas desde este color hexadecimal a un color hexadecimal
Entonces, ahora Nick va a hablar
medios en la implementación. Gracias.
habló mucho sobre apoyando diferentes valores
se pueden implementar como atributos
tu diseño cambia y de repente, en
tema, tienes un tema azul.
Estos
nombres semánticos te protegen y está más extendido de lo que
queremos tener áreas que puedan soportar
Hay diferentes maneras de lograrlo.
Una forma podría ser, definir diferentes estilos. Voy
a configurar un estilo y llamar ese estilo 1 y luego quiero lucir
it estilo 2. El problema con
Hay mucha duplicación y hay 2
mantener o corregir errores o refactorizar.
Usando los punteros semánticos para describir cómo debería verse
te protege contra esto. Podría
este idioma y configure sus estilos
atributos, lo que hace es terminar
estilo único, que se referirá
definido para un tema determinado.
Y los beneficios de esto son va a duplicar el estilo.
Y también localiza las modificaciones.
Si necesitas cambiar un
lugar donde está definido en lugar
de tener que rastrearlo donde se filtró.
También
Pensemos en la consolidación. ¿Cuántas
colorea archivos XML y encontró 50
colores y ves un simulacro y dices,
Otro recurso de color. Te
Quiero condensarlo en esta pequeña
mirar y sentir. Básicamente,
este enfoque realmente, realmente te ayuda con el mantenimiento
Le recomendamos que prefiera los atributos
escribes código como la línea superior,
este recurso de color, considérelo como
diseño, ¿existe la posibilidad de que esto
¿tema? ¿Podría incluirse en un
¿solicitud? Si es así, ¿debería
mirando la sintaxis del signo de interrogación,
a estos atributos del tema? Entonces,
Importancia de las partes semánticas.
directamente en una actividad y estos
que es un tema de documento o tal vez estés
Este es un tema que cambiará
dependiendo de la hora del día.
¿Qué
pantalla como esta, esta es una aplicación
Los elementos de la lista son los mismos, pero
claro sobre oscuro y algo oscuro sobre claro.
diseños o separar colores
de texto. Ambos básicamente filtrar la información más allá
de donde desea que conduzca a una explosión de más mantenimiento.
Probablemente lo que quieras hacer es mirar
nivel en lugar de a nivel de toda
El tema se agregó en API 21. Entonces,
una vista o un grupo de vistas y aplicar
subsección de su vista hiarkry. Entonces,
digamos que tienes un tema claro y aplicas
viceversa. Puedes hacer lo mismo
envoltura. Tomas el tema existente
y lo superpones con un estilo.
Encima. Está
superpuesto. Eso significa que tienes un tema existente y cualquier
colocado encima se aplicará en la parte
superior, por lo que debe estar un poco consciente de este
superponer un tema que aporta demasiados
valores. si estuviera usando componente material s light y luego doc, es posible que sobrescribas
demasiado. Tú quieres asegúrese de que el tema que está
necesitas. Quizás
quieras echar un vistazo a el tema se superpone solo para tematizar
que cuando se superpone, se obtiene
temas. Mientras
El enfoque parece cercano a la temática
aplique un tema que haya definido en
No puedo usar esto para tomar valores
tema. Esto es un pensamiento anticipado.
Entonces, antes de comenzar a configurar
Es importante comprender cómo
plataforma. Vamos a hacer una gira
pantalla y los temas de su aplicación.
aplicación, es bueno tener un
puedes señalar algo en la
dirección de capa y atributos
y estilos de tema aplicados a renderícelo de esta manera en la pantalla.
Si queremos establecer este color para un solo botón, ¿cómo haríamos
eso? Bueno, profundicemos en el forma en que esto se resuelve en tiempo
de ejecución.
Tenemos botón en XML. Si miras hablar sobre temas y estilos
desmitificadores, tendrás una comprensión completa de cómo funciona
Vi eso, ve a verlo. El estilo
se extrae del tema, el tema
El botón está inflado. Entonces, atributo
aquí en la parte inferior de la pantalla.
A continuación, ¿dónde está diseñado ese
estilo de botón? esta en el material tema hay botón widget.material.
¿definición? Más en material de
el fondo es el dibujable predeterminado
Ese estilo de botón de tinta con borde,
Me doy cuenta de que va a estar
proporciona un color en el botón. Entonces,
fondo que se utiliza allí para
ver qué se extrae de nuestro tema.
En
coincide con los nombres dibujables
puedes seguir. Tenemos una
coloreado con un tinte, que es nuestro
material. Esto se aplica al color
Tiene un color blanco sólido aquí.
Es nuestro acento de color. Es botón con nombrecoloredmaterialXML. una
dirección indirecta. Entonces, ¿de
Provendrá de lo que exista en el
tema de nuestra aplicación. Eso hereda del material y será el verde
Aquí están todos los niveles de indirección
Algunas de las importantes son si
Para todos los botones que se
tema de estilo. El estilo de botón que
obtenemos de forma predeterminada es widget.materialbutton. Podemos
cambiar eso a button.colored si queríamos botones de colores en
nuestro acento de color. Si configuramos
usado en todas partes. Veremos ese color
Pero lo que queremos hacer es un botón.
si establecemos ¿Botón de apuesta en nuestra actividad? Lo
pudimos ver en todas partes. Qué sobre en XML? ¿Cómo
podemos arreglar eso? Bueno, ¿qué Si ponemos acentos de color en nuestro tema
obteniendo ese botón azul, pero también
tenemos interruptores azules y todo lo demás.
Si realiza una búsqueda
verlo en muchos lugares. Podríamos
diseñoXML. Esto no hace absolutamente
atributo y no debería intentar configurarlo
XML. Crearemos
aplíquelo al botón y obtendremos
Entonces, volvamos a Nick para una mayor
implementación. Salud. Entonces,
atributos del tema donde puedas.
para saber qué hay ahí fuera, qué
una gran respuesta para usted,
además de revisar el archivo: esto es desde la plataforma
componentes materiales. No son
lo que hay disponible. Puedes mirar
temas.material y ver cuál atributos del tema que establecen y,
o sobrescribirlos ustedes mismos.
que algunos atributos del tema están doblemente
define un resaltado de control de color
define el suyo propio.
Entonces, ¿cuál
usas? La respuesta es si hay es uno definido en appcompat, prefiérelo
la plataforma para usted y estará
compatibilidad. Puede
usando algo como esto y usa KTX
conveniente. Hasta
usando atributos de tema de plataforma, y absolutamente
también puedes crear el tuyo propio.
Tenemos dos pantallas, que muestran
diseños muy similares. A lista de horarios y detalles de los
hasta qué punto con el espacio en el
desea alinearlo. Necesitas dejar
cosas del tiempo del encabezado.
atributo de tema propio. Esto se llama
los diferentes temas de actividad, podemos
valores de dimensión para esa línea
Y luego RGS solo tenemos que tener
hace referencia a ese atributo
marcar la sintaxis para variarla sin
etcétera. Otro
lugar al que llega la tematización. Lo más útil son los elementos dibujables.
desde API 21 en adelante, todos los elementos
modos.
También puedes hacer esto en
vectores donde admitan el tema. atributos para tintes, así como para
puedo usar esto no solo en 21, sino en la compatibilidad
biblioteca también. Si necesita compatibilidad
con versiones anteriores, Se puede usar al revés.
estableces una lista de tintes
Hemos aprendido a ser extremadamente
tintes y todos los colores para
diferentes estados. esto esta tomado del texto primario. Una de las cosas
estas son algunas de las mejoras
lo que te permitió separar
componente. Esto te protege contra
Diferentes capacidades de color negro.
tipo de información de color
le permite definir más específicamente
Aquí decía que es una pantalla de luz
ser molido.
Puedes decir que el texto
Así que no tienes que definir todas
las combinaciones, defines las cosas con nombres semánticos. Y
listas de estados de color.
Android alfa a aplicación alfa porque
esto para agregar la lista de estados de color,
Alfa. El
y el alfa se combinan. No
— este es un texto 50% blanco si
alfa. Terminarás con un 20% de
a colores con alfas completos.
Como
y utilizar recursos para obtener el comportamiento
Entonces, en general, si aplicas esta temática,
como esto. Entonces, a la izquierda,
A la izquierda, tenemos Google I/O.
con la apariencia de esta conferencia,
E/S, esta es la diferencia. Tuvimos
colores con nombres semánticos. Se ondula
hacia afuera, la navegación inferior cambios, algunos de los tintes en los elementos
si su gerente de producto se acerca a usted
y le dice, estamos cambiando todo los colores. ¿No preferirías tener
a través de todos los XML y ¿dónde
está? Realmente quieres limitar los cambios en estos nombres semánticos.
Entonces, como resumen de este,
atribuir todas las cosas esencialmente.
algo así como protección y probablemente
sistema semántico de regreso a sus diseñadores
dándote valores que funcionan con esto.
XML es la sintaxis preferida o tenga
Escribo esto y pienso, ¿es esto
dibujables, piense en usar tintes
todos estos elementos dibujables habían
cambio de marca, ¿tendré que regenerar
todos estos? Ignorar eso, no hagas eso.
Utilice tintes en su
Básicamente, si cada vez que usas un
PNG. Prácticamente el único momento en
partidos. Entonces, eso es un resumen.
con atributos y estilos. Salud.
[Aplausos] Hola a todos. Hoy voy a compartir
prácticas al utilizar la
estar hablando de preferencias y preferencias
Vamos a cubrir cómo puedes usar múltiples
Primero algunos antecedentes. Cuáles son preferencias? La biblioteca de preferencias
pantallas. Todo lo que necesitas hacer es encontrar
se muestra al usuario y también
el almacenamiento del dispositivo, por lo que cualquier
cargado en el dispositivo. Primero,
API. Esto se incluye con el primer
Dado que es parte del marco,
Las correcciones de errores que agregamos solo
Androide. Dado que el diseño ha
temáticas diferentes según la
versión de Android. Eran ya no mantengo la API del
usando la biblioteca de AndroidX. Fueron
el V7 y el V14. es con ser actualizado. La biblioteca es compatible
con versiones anteriores hasta API.
14 y utiliza el mismo tema material
Esto da como resultado experiencias
¿Cómo se relaciona con las preferencias
datos. Se utilizan internamente para guardar
pero no son parte de la biblioteca.
A la derecha. Tenemos preferencia
por alternar y otro para texto. Entonces,
cubra con una actividad simple que actúe
tener un tema compatible con aplicaciones. Este
utiliza la biblioteca de preferencias.
y la configuración se realizará aquí.
simplemente envuelve una jerarquía
se puede definir en un recurso
tiempo de ejecución.
Nos centraremos
Entonces, la actividad en sí misma es
fragmento. Tenemos texto repetitivo
fragmento. El fragmento, de nuevo, bastante
lo que debe hacer es sobrescribir esto y configurar
La definición ocurre en el XML. Entonces,
Comience con un objeto de pantalla
contenedor principal de la jerarquía.
Tenga en cuenta que debe También coloque su XML de preferencia
en el directorio XML. Este es un preferencia básica, no tiene
y tenemos tres atributos importantes
El resumen se muestra al usuario.
importante.
Si esta preferencia
persistiera, cualquier estado al dispositivo, entonces esta es la clave
que la preferencia compartida usar. Esta clave le permite interactuar
más adelante en el ciclo de vida. Ahora
compatibilidad de preferencias. Esto
tener un widget de cambio. Cada vez
a la clave definida aquí. Aquí
está la jerarquía a la que vamos. para terminar aquí. Lo vamos
a hacer paso a paso. Voy para cubrir categorías para dividir
que abren diálogos que permiten una
Voy a hablar de resúmenes dinámicos
dependencias.
Entonces,
dejado antes, estas son las mismas
uno de estos controles sincronizando
información sobre la aplicación.
Cuanto más añadimos esta jerarquía, más difícil
qué hace qué. Podemos configurar esto
envuélvalo con una etiqueta de categoría
Título acentuado encima de los grupos. Es
estos para que sea un estado
correctamente persistido. Mismo Como antes, el mismo atributo, sólo que se
A continuación vamos a agregar una preferencia
La preferencia utiliza un diálogo para permitir
cuando un usuario toca esta preferencia,
para usted que contiene un campo
Esto nos da algunas preguntas interesantes.
el resumen aquí? En este momento no hay
ningún resumen, por lo que es bastante Es difícil para el usuario ver cuál
Me gusta dejar que el usuario vea lo
La respuesta aquí es utilizar un proveedor
de resumen simple.
esto se agrega recientemente en la versión
alfa 1.1 y es parte de una amplia categoría de cosas que llamamos resúmenes
El atributo, cuando se establece en verdadero,
significará el resumen de preferencias. mostrará la preferencia o el texto establecido.
Tenemos una manera para el usuario establecer un código de sincronización
No tiene sentido que el usuario
si la sincronización no está habilitada. Podemos
usar una dependencia aquí para arreglar eso. Básicamente,
La dependencia permite otra preferencia
de esta preferencia. Entonces, configuramos
compat. Siempre que se apaga
está atenuado y ya no se puede interactuar
encendido, vuelve a la normalidad.
O la jerarquía está casi completa. Habilitar la
pero ¿qué significa eso? ¿Nos hemos sincronizado
un resumen dinámico personalizado para mostrar
proporcionando un contexto más útil. Los
le gustaría proporcionar al usuario
En este caso, nos gustaría informarles cuándo
sincronizamos su dispositivo por última vez. o cuando quieras mostrar dinámica
información. Esto podría ser información
de la versión o una Dirección de identificación.
Podemos usar esto para reaccionar o hacer un resumen del estado externo.
Cambiamos
preferencia está marcada, cuando la sincronización
muestra la última vez que sincronizamos
exitosamente. De lo contrario, vamos a decir que está deshabilitado.
Todo lo que tenemos que hacer ahora se establece esto en la preferencia. Entonces,
preferencia de búsqueda. Y luego simplemente
debe hacerse en en crear. El resumen se actualizará
según las restricciones. hemos diseñado.
jerarquías en pantallas separadas.
Separe jerarquías complejas en pantallas
Ya se utiliza la API del marco, hay
has estructurado tus pantallas
empezando de nuevo, quizás te preguntes
manejar esto es.
Tenemos nuestra
envuelve internamente un fragmento,
Podemos considerar que es una
actividad que carga una pantalla de configuración.
Esto se ve bien cuando tener una pantalla. ¿Qué pasa si nuestra
tener enlaces a otras pantallas. Y los
preferencias de mensajes más
específicos. ¿Cómo se ve esto? ¿Cómo ocurre con nuestra arquitectura?
realizado anteriormente con una sola pantalla.
La pantalla de configuración inicial será
compatible con una jerarquía. Y entonces la pantalla de escaneo sincronizado
jerarquía y así sucesivamente para cualquier
Lo que hay que hacer es el vínculo final
siempre que el El usuario puede cargar la pantalla. Y
Voy a cambiar la pantalla
Debido a que estamos usando preferencias, la
configuración inicial La jerarquía será como lo hemos
preferencias, una para sincronización y
Es posible que desee agregar un ícono aquí
usuario. Esto simplemente se hace
atributo de icono. Entonces esto será
directorio.
Entonces, para hacer esto,
establezca el nombre de clase del
Si su fragmento está anidado en una
signo de dólar y eso es todo por
La actividad es similar a la anterior.
esta preferencia. Esto se llama cuando
preferencia y le permite personalizar
implementación predeterminada.
ser exactamente igual que antes. Nuevamente,
preferencias y eso es todo ahora.
mensaje, el fragmento se mostrará
usuario. Entonces,
lanzado 1.1 alpha 1, por favor, si aún
Por favor, informe cualquier error
actualizó la guía de configuración de
más información sobre algunas de las
esta charla y estamos trabajando en plantillas
Demostrando esta biblioteca, próximamente.
Para obtener más información sobre Android
desarrollador.com/desarrollador.
Y gracias por escuchar. [Aplausos] Todos,
comenzará en poco más de 10
Hola, mi nombre es Cameron
Ketcham. trabajo en el material El equipo de componentes de diseño y yo
trabajo desde la ciudad de Nueva York.
Soy Gautham Sajith y resido
Vamos a hablar de componentes
de Material Design. Entonces, rápidamente, lo que vamos a discutir,
Material Design, qué es Material
Componentes de diseño, subsistemas
cómo aplicar estos subsistemas, así
y un poquito sobre contribuir.
Breve historia, Material Design
no era una biblioteca de Material
Google anunció la biblioteca de
gran cantidad de código para
cajón de navegación, pero todavía
Este año, anunciamos que Material Theming
equipo de ingeniería detrás de esto, por lo que
Muchos de los componentes se basan en la especificación
Entonces Material Theming, ¿cuál fue
¿Diseño de materiales? Bueno, fue una
sistema de diseño. Se quedó corto
Entonces, aquí hay un ejemplo de una aplicación
como cualquier otra aplicación que
usa Material Design y es difícil En mi opinión, incluso es una aplicación de correo
de los tipos de cosas que puedes hacer
con Material Theming para crear Tus aplicaciones se destacan y vamos
en un rato.
Entonces,
¿trabajar? Básicamente, la tematización
ayudarle a crear un diseño único para
decidir sobre fuentes, colores, formas,
etcétera y este es un Material Complemento de boceto de diseño que se puede
ideas de diseño. Eche un vistazo a material.io
para obtener más información. en esa herramienta. Se
Todos se ven muy diferentes y también
hay muchos más de estos. en material.io.
cómo empezar a utilizar la biblioteca
Entonces, imagina este escenario, tienes
Tu compañero de equipo te pidió que lo rediseñaras.
familiarizado con el paquete de diseño
de biblioteca de soporte, el V 28 versión y puedes usar esto. Sin
embargo, esto ya no se hace actualizado por lo que deberías usar AndroidX.
No puedes usar com.Android.
AndroidX, hay una buena herramienta
eso te ayudará a refactorizar tu aplicación.
Y luego lo siguiente que tendrás que
temas que corresponden a la Temas compatibles con aplicaciones.
Te ayuda con
en todos nuestros componentes. si
appcompat.lite, deberías tener todos
nuestros atributos y componentes estilos. Si utiliza nuestros
definido, obtendrá un error en tiempo
fallará en tiempo de ejecución. Utilice
los atributos. Si no estás
nuestro tema completo, desea obtener
temas de puente y lo que hacen estos
todos los atributos pero no
estilos predeterminados para que pueda optar por
uno. Si
tema puente y desea participar,
tema y luego todas las barras de aplicaciones
estilo del componente.
hablar un poco sobre algunos componentes
Tematización, introdujimos algunas cosas
bar. La barra inferior de la aplicación
acciones en la parte inferior de las pantallas
personas que tienen una sola mano y usan
el pulgar para interactuar con el dispositivo.
Utiliza un diseño de coordinador
entre una barra de aplicaciones inferior y
Entonces, aquí solo tenemos XML simple
Algunas de las cosas que puede hacer es establecer
el desplazamiento vertical y establecer el margen de la cuna fabulosa, que es la
distancia entre la cuna fabulosa y la barra de aplicaciones inferior y el
la esquina donde la parte inferior se encuentra
con lo fabuloso. Puedes tener el La barra inferior de la aplicación se oculta al desplazarse
y configura este modo de alineación. Él animará la fabulosa para
entre diferentes pantallas. Si
barra de herramientas, es muy fácil comenzar
Si está configurando la barra de acciones
barra de aplicaciones inferior
forma. Puede utilizar un detector de
barra de aplicaciones
Versión del botón para simplificar
simplemente colocas este componente
Obtendrás un botón con estilo.
Si estás
usando nuestro tema completo, puede usar la etiqueta del botón en su XML y hacemos una vista personalizada
inflar en una etiqueta de botón de material
y se puede ver el deshabilitado estado en este botón y todos los
Puede configurar un icono en este botón
configurando el atributo del icono como así como este estilo de ícono y este
estilo es opcional, pero ¿qué lo que debe hacer es ajustar el acolchado ligeramente
para lograr más equilibrio en el botón.
Puede configurar el botón de contorno para
obtener el botón de línea fina.
Tú Puede configurar el tono de fondo
atributo de tinte de fondo y proporcionar una lista de estados de color. Puedes
atributos, como ancho de trazo,
radio en este botón. También
botón. Estamos configurando el ícono
entonces el ícono queda centrado en el
descripción en este botón. Como
debe establecer un descripción. Puede
el botón. Si estableces una onda
el botón, puede hacer una lista de estado
Es una onda violeta, está encima
Y estos son algunos de los
diferentes estilos de chips, campos de texto,
funcionalidad y diseños también.
Bueno. Ahora, un poco sobre la tematización.
temas de Android, así que aquí hay un
y estilos funcionan. Cualquier cosa
XML solo cambiará la vista única.
estilo.
Entonces, si estableces
Esto aquí afectará a algunos pocos que
Si no es para definir un estilo o no
volver al estilo predeterminado. Entonces,
apariencia de un grupo completo de componentes,
estilo. Y finalmente, si ese
en cualquier otro lugar, se verá en el tema.
La forma en que se tematiza el material funciona es que hay un conjunto de
sobrescribir tipografía, colores,
estilos.
Si necesita un control
más detallado, puede enganchar en, en cualquiera de estas capas, y cambiar
vista única o el color de todo un determinado
Aquí hay un ejemplo de nuestra
del hecho de que otros estilos, en nuestra
estos mismos atributos. A continuación se
tienen la misma apariencia de forma,
apariencia de la forma. Si queremos actualizar
aplicación para estos pequeños componentes, todo
lo que tenemos que hacer es actualizar esto atributo en un lugar de nuestro
ejemplo en un momento. ¿Cuáles
atributos? Intentamos aplicar los atributos
Tendría sentido, pero definitivamente
elija valores para diferentes colores que
juntos. Deberías consultar material.io
reaccionar. Otra solución sencilla
Tema de depuración que establece valores extravagantes
Aquí está la barra de mapa inferior en
Veo allí que el contenedor en
Los íconos están en la superficie.
atributos que puede modificar, así
como cosas que debe observar en la siguiente sección.
Entonces,
Actualmente tienen tipo, color y
Debes modificarlo para crear un tema para tu
aplicación. Ojalá la mayoría de ustedes están familiarizados con las apariencias
incorporó Material Theming, que utilizando
atributos del tema, para haga referencia a estas apariciones
ejemplo de una barra de herramientas, que utiliza
en lugar de un estilo directamente. Y
aquí hay algunas copias que usan. el cuerpo un atributo. Estos son
lo hemos definido así, si sobrescribe
tema, puede configurar el estilo y la apariencia
El color es otro y probablemente estés
Color y acentos primarios. Disponemos de
tienes más control. Estos son los
paleta de colores que funcionan con
primarios, primarios primarios.
Esas
generalmente el tema es obsoleto de su
superficie de fondo y colores de
pero no necesariamente es necesario.
en la secundaria, deben ser accesibles
cuando se extraen encima de los otros colores. En
encima del color primario. Si tiene
el fondo primario, debe
Estos son los atributos de color
que hemos definido. puedes ver que hay muchos nuevos. Intentamos
reutilizar algunos que vinieron. desde appcompat y tenemos un
fondo de color de Android que uso, que es solo la versión normal
atributo. La
puedes tematizar. Y todo sucede
dibujable. Entonces, estamos agregando
fondo para botones, Tarjetas, fabulosas, barra de mapa inferior.
tratos. Tenemos
tratamientos definidos para esquinas redondeadas
componente que vas a encontrar. Siempre
también. Entonces,
código, que define una esquina redondeada,
a la forma del material dibujable, para
todo. Aquí también está la versión
queremos hacerlo en XML, tenemos
similar a la apariencia del texto. Los
atributos, aquí, son la esquina. familia y el tamaño de la esquina y esto
esquina con radio 24Dd.
Puedes
esquinas. Estamos sobrescribiendo la parte
Haz lo mismo en XML. Una cosa a tener
usando una superposición de apariencia de
Lo mismo excepto que solo definimos
desea anular. El botón de material
algunos aquí, estamos configurando la esquina
Todo lo demás será
botón de materiales. una
llave La idea de Material Theming es agregar
mapeo. Esto puede ayudar a dar su aplicación una apariencia más consistente
a través de la forma. Hay componentes
Estos son los atributos que puedes establecer
rediseñar todos los componentes pequeños
esquina, puedes hacer eso. He aquí
como dije, anulando el estilo de componente
redefinir la apariencia pequeña, la forma
apariencia, en la temática, a nuestro
la esquina superior derecha que se va a cortar
padre aquí para que herede todo
esquinas para las otras partes.
La
mencionar también. Se admite
formas en Lollipop. Para API 21 y superiores.
sombras a API 15 para formas
casos comunes, como esquinas redondeadas
barra inferior del mapa porque tiene
no obtendrá sombra nativa, por lo que
simulamos la sombra con un degradado. Ahora que hemos oído hablar de nuestro
¿Aplicarlos a tu aplicación? Tienes
Estaré construyendo algo que se parezca
Si construyes tus propias aplicaciones,
más cohesivo que esto. Entonces, lo primero
estás usando el tema de la barra de acciones,
Tema de componentes. Estamos usando
el tema puente porque queremos para optar por usarlos uno por uno.
Generalmente te recomendamos cambie al tema completo, el tema
El tema del puente. Entonces,
atributos de color del tema. Algunos
primaria y secundaria. Hay primaria
Veo que este color secundario no aparece en
todavía, pero lo será.
Lo
Botones materiales. Si configura el
tu tema, todos tus botones deberían
botones cuando cambia la etiqueta XML.
tema, esto sucede automáticamente.
Tenemos muchos otros estilos predeterminados
es el nombre del componente, más el estilo.
Por ejemplo, si configurara Estilo de tarjeta de material
Estaremos aplicando algunos atributos a
elevación, color de trazo y ancho
Y luego digamos que desea cambiar
el estilo base de todos los botones, usted definiría su propio estilo
padres de él para delinear el botón
cambiar a botones de contorno. Ahora
Tematización para todos tus botones.
Entonces, vamos a definir la forma. apariencia y establezca las esquinas derechas
esquinas para redondear y establezca el
tamaño de la esquina y ahora tiene este botón en forma de flecha. También
apariencia superpuesta, ya que los botones
tienen una esquina redondeada por por defecto. No es necesario configurarlo
para el lado izquierdo. tu deset lo que estás cambiando y tendrá
Y luego digamos que queremos tener
Defina este estilo de botón de icono. Establecer
como quieras y luego aplica esto a
XML, además de configurar ese icono
entonces tienes el botón del ícono de
botón de texto.
barra inferior del mapa.
Entonces, para esto,
tema y luego elimine la barra de aplicaciones
superior de su diseño XML y agregue esta barra de aplicaciones inferior aquí.
botón agregando el botón de acción
flotante a su diseño y configurar el atributo de anclaje de diseño
bar. Esta fabulosa tiene ese color verde
Aún no he configurado el estilo predeterminado
Una vez configurado, verás que está usando la
sección de color. secundario. Luego
podemos darle estilo al texto. por el contenido de nuestras tarjetas. Digamos
que quieres que todo tu texto Sea color en la superficie, usaremos
superposición, de la que hablaré en
tema para todos los contenidos de esos
es terciario. Superposición de temas materiales,
es posible que hayas oído hablar de ellos.
Tema de Android, puedes diseñar una subsección.
barra de herramientas de color oscuro
no funciona en el estilo predeterminado. No
El atributo Material Theming está respaldado
Funciona en estilos predeterminados para
componentes y tenga su tema: las
subvistas de sus componentes. Por último, crearemos algunos temas para
anteriormente, el título tenía una
estilo. Y de manera similar, para el texto,
Y luego podemos aplicarle algo
Por ejemplo, si cambia el título seis
ahora luce así. Entonces,
de hacer esto? ¿Por qué tomarse
¿Atributos de alto nivel para tu estilo?
porque queremos poder diseñar
estos atributos de nivel superior. Digamos que tu
Los colores de la marca están cambiando
de estos azules que tenemos. Cambias
y toda tu aplicación cambia de tema.
Si quieres un tema oscuro o falso tema oscuro, cambias los atributos
responder apropiadamente a eso.
componentes personalizados y cómo puede
Realmente no hay nada mágico en la forma
en que se utilizan nuestros componentes. tematización. Se trata solo de temas básicos
también en sus componentes. Sólo
estilo predeterminado y páselo a
a través de eso. Aquí tenemos una
atributos.
Aquí, estamos creando
atributo y configurarlo en nuestro tema para
estilo y lo estamos configurando en
Entonces, esto significará que cualquier
mycustomview utilizará este estilo de forma predeterminada.
También puedes crear un estilo, que contenga
atributos. Y luego solo necesitas
constructor. A continuación se muestra un
el estilo predeterminado, que creamos
pase esto aquí para que pueda elegir
no se establece nada más. Y luego,
el estilo que acabamos de
pasado al constructor y un estilo
recurso para encontrar atributos
y leerlos. Eso es básicamente cómo funcionan nuestros componentes. Entonces
usted mismo también. Y
también ampliar los sistemas para sus casos de uso. Me gusta,
atributos en algunos casos, definitivamente
Podría requerir un poco más de trabajo
de tu parte porque tendrás para actualizar los estilos de todos los componentes
nuestros componentes no harán referencia
a ellos. Pero si tu Necesito si, definitivamente puedes hacer
He aquí un ejemplo.
Como un
atributo. Créalo y define póngalo en su tema y haga referencia a él
Ahora, un poco sobre nuestro proceso.
lanzamientos. La versión 1.0 salió, se
Ha pasado un poco de tiempo. Pero
ahora con Android Jetpack re finalizar la refactorización, podemos publicar con
para aumentar nuestros lanzamientos y cortamos
31 y estamos intentando hacer esto
con más frecuencia. Había temas de tipo, temas de colores y temas
correcciones y mejoras de
En los próximos lanzamientos, habrá
alfa, el subsistema de tematización
los componentes en realidad
atributos todavía. Pero con el próximo
También actualizamos algunos estilos para los
Ese tipo de cosas están por llegar.
En cuanto a cuestiones de contribución
Vaya a GitHub y podrá ver todo
nuestro código.
esta abierto fuente. Y también verifique: puede
instrucciones sobre cómo enviar informes
reportera en issuestracking.Google.
Estamos buscando diferentes formas
Estamos trabajando y tratando de integrarnos
comunidad. Y
aquí hay algunos recursos más. El sitio Material.io es genial, especialmente
Definitivamente visítanos en
chateando con nosotros o está
interesado en ayudarnos a tener una idea para cualquier cosa. Ven y charla
Stack Overflow, así que si tienes preguntas
puedes preguntar algo allí, lo estamos
responder. Y luego tenemos algunos codelabs,
a esos codelabs en esta página de GitHub.
Y eso es prácticamente todo.
estar disponible para preguntas y
sucediendo ahora.
Gracias. [Aplausos] [Aplausos] Hola
Lago. Soy desarrollador en el equipo
bastantes proyectos, pero el más notable
Componente de arquitectura, así
artefacto y cargadores.
Y
sobre una sola actividad, por qué, cuándo
compartir las mejores prácticas
Equipo de componentes de arquitectura sobre
este mundo. Ha habido muchas preguntas,
2014, 16 e incluso aquí en 2018, así que
estamos aquí, hoy, para algo así como hablar sobre todas esas cosas maravillosas
actividades. Las
hormiga componente, al mismo nivel de proveedores
recibe y son las piezas de su aplicación
Entonces, cuando el marco de Android
desde un ícono de inicio o un acceso directo
estás haciendo ventanas múltiples, todas esas
son los puntos de entrada a las aplicaciones.
inicia su aplicación, están
Y tuvimos una cita muy interesante
En 2016, una vez que llegamos a este
No importa cómo organices el flujo
Creo que fue controvertido, supongo,
comentarios en Google+, ¿de acuerdo?
[Risa] Mucha gente se mostró muy entusiasmada
Bueno, ¿qué significa? Bueno, lo
Al marco no debería importarle. Al
sobre la arquitectura de su
Proporcionar los ganchos necesarios para
solicitud. Pero probablemente deberías
arquitectura de su aplicación y es
por eso que están todos aquí hoy y me encanta tenerte aquí. Entonces,
realmente no sabes qué actividad
va a hacer realmente. Entonces, ¿cuál es la animación predeterminada
la versión de Android, de qué
temas que el usuario ha seleccionado.
Bien.
animaciones de propiedades agregadas
ver animaciones. Y es que
cosas se vuelven posibles en las nuevas
versiones de Android, no son siempre aplicado a todo y cosas
no admite animaciones de propiedades,
E incluso si los agregáramos, en la
tal vez la letra después de
ellos porque son parte del
Pensar en todas estas cosas es como,
¿Para qué se debe utilizar una actividad?
Son útiles como punto de entrada
y más allá de eso, estás en tu ámbito de lo que tu aplicación
necesariamente debemos confiar en
tienes que trabajar con.
Entonces,
Estamos llamando a iniciar actividad y
porque queremos hacer una transición de elemento
compartido. Nosotros decimos, oh queremos que este elemento sea compartido.
¿en? Depende de lo que quieras decir
actividad, eso es cierto. Solo
transición a ediciones más nuevas,
estás guardando algunas comprobaciones de API.
El código más bonito para mirar.
probaste en una versión anterior de
¿Tendrás la misma experiencia?
De hecho, me encontré con esto y pensé: "Oh,
y fuera. Debe excluir cosas
barra de navegación; de lo contrario,
Bueno, está bien, eso es divertido.
a menos que lo haya probado una vez
y lo haya probado en un montón de tener de dispositivos. Hay muchas trampas
que no puedes controlar. Otro ejemplo donde tenemos diferentes
su propio componente. Si tienes
entre ellos, no hay margen
para eso. es atendido por servicios. Quieres un alcance compartido
componentes. Entonces
Android ofrece, pero tal vez no
sea el que realmente deseas usar.
Lo que realmente quieres
necesitas. Podemos tener múltiples
y compartir información en cada
utilizando el ámbito de actividad como un elemento
por ejemplo, podría tener un elemento
de vista compartido, un ViewModel que ambos destinos hablan. Un
y se podían observar cambios en
esos datos. No es necesario trabaje en el nivel de alcance de la aplicación
Entonces, mencioné esta palabra,
¿destino? Bueno, en realidad, es sólo una
Entonces, para la mayoría de los
destinos, se harán cargo la mayor parte de tu pantalla. Bien.
Por ejemplo, cuando pasas de una pantalla
va a cambiar la gran mayoría
tienes navegación global, como una navegación
Está todo en un destino. Entonces,
Tengo una palabra para esto llamada
implementación de esta idea de
tener destinos separados para cada pantalla de tu aplicación.
sirviendo como controlador de vista,
vista en sí misma, sino algo que
que en realidad tienen más que ver con la visualización.
Está bien.
Entonces, realmente, la
de esta lógica de negocios y
lo más pequeño físicamente posible y trabajando
en esa interfaz de usuario compartida que es compartido en todos los destinos. Entonces,
esto, como, si nos estamos moviendo de este
mundo de destino, queremos hacer que ese
posible, de lo contrario, ¿por qué nos
cosas. Uno era el tipo de interfaz de
usuario global. Como, ¿cómo podemos ¿Hacer esa parte fácil? Es
algo que cada aplicación tiene mismo tipo de patrones y no
eso requiere mucho esfuerzo para hacerlo.
entre destinos, cierto. Actividad,
¿Podemos hacerlo aún más fácil?
Componente de arquitectura y se lo
E/S. Todavía está en alfa en este momento
elimine todas las lagunas de funciones antes
Pero realmente lo que esto nos permite hacer
actividad como esta, configure la vista de contenido,
porque eso es una cosa, ¿verdad? Y
pero aún queremos que quepa en esta diapositiva
de esto es que necesitamos un navegador controlador. Sabe cómo funciona tu aplicación
gráfico. Podemos conseguir uno. Estamos
encontrar controlador de navegación. Le estamos dando
fragmento. Es esa parte de tu
cada vez que cambias de destino.
configuración de la barra.
Esto controla
debe suceder cuando asciendes
¿Conectamos eso? Tenemos una bonita
barra de acciones, le proporciona un controlador
configuración. Ahora
porque estamos usando un cajón. diseño aquí en la configuración de nuestra
abre y cierra el cajón cuando presionas
navega hacia arriba en nuestro soporte navega
barra de acción completa y ahora cambia
cambios de destino. Estamos bien.
vista de navegación para que podamos hacer clic
línea. Podemos hacer todo esto porque
el controlador de navegación sabe sobre nuestros destinos en nuestra aplicación.
Entonces, ¿cómo hacemos realmente
¿Haciendo cosas elegantes de una sola línea? Podemos
en cualquier lugar. Es aún más fácil a partir de
findnavcontroller y hemos creado
este. Cualquier vista creada por cualquier
El gráfico de navegación puede llamar a buscar.
básicamente desde cualquier lugar.
como, está bien, bueno, si tienes
argumentos para algo, ¿cómo? ¿Hacemos esto lindo? Entonces, creamos
un complemento de Gradle. . Generamos un objeto de direcciones, que
tiene una apariencia agradable y simple. mostrar método de perfil, que le proporciona
argumentos de tipo seguro que usted define
solo llamas para navegar. Entonces
pero podemos llegar mucho más lejos con la
¿Construiste un filtro de intención antes? ¿Enlaces
¿Alguien disfrutó esa experiencia?
[Risa] ¡Excelente! Una persona disfrutó de esa
El marco de Android lo sabe.
Lo sabe,
filtrar e iniciar una actividad. Pero
no es suficiente. Necesitas ir un
lo que hemos hecho, en la navegación,
fragmentos, cualquier destino en su gráfico,
enlace. Es una frase simple y puedes
aquí y los analizaremos en busca de parámetros
Se los presento como argumentos para
le gusta escribir filtros de intención,
filtros para ti. Agregamos esto al manifiesto
eso para ti. Entonces,
construir API mejores. Pero también hace
solicitud. Bien. Si estás realizando
de repente, eso significa, está bien,
bueno, ¿cómo pruebo, empiezo? La actividad realmente tuvo la intención
marcos de prueba adicionales además de
estas cosas. Si pasamos a un
modelo de actividad única, Quiero probar todas esas cosas. Queremos
que sea fácil de probar. Entonces, la regla número uno para probar
es decir, no realice la prueba
Lo principal de las pruebas,
cierto, es hacer cosas. agradable y separado y extrayendo parte
de un destino y en algo
aislamiento.
Bien. Por ejemplo, un
porque puedes probarlo de forma aislada.
proveedorfabricante de proveedores donde
separado de su interfaz de usuario. Pero
prueba cualquiera de tus elementos de interfaz
de usuario. Bien. Tenemos la prueba de Espresso por
Todas las partes de nuestra aplicación funcionan
Entonces, ¿cómo podemos hacer esto?
Así que el pasado lunes publicamos fragmento 1.1, el primer alfa. Y con
artefacto llamado prueba de fragmentos,
años de retraso.
[Risa] Y realmente se trata de poder
fragmentos de forma aislada.
Bien.
Separar de todo lo demás
verificar que ese fragmento esté
útil para Epress, así que pruebe. Tu
La interfaz de usuario sigue siendo algo que
Ahora, lo bueno de esto es que se llama
porque se basa en el escenario de
El equipo de pruebas de AndroidX y el equipo
de pruebas fueron fundamentales para sacando fragmentos por ahí. Pero
Todo el escenario es que funciona tanto
pruebas en su dispositivo real y
marco de prueba que funciona en
oportunidad y algo que ahora puedes
probar con fragmentos. Entonces, ¿cómo se ve esto? Digamos
fragmento de perfil. Hicimos una identificación
fragmento en contenedor. Eso es todo.
creó una actividad vacía, le agregó
se reanudará y ya está listo.
fragmento. Si desea llamar a onfragment
y ejecutar algún código y digamos que el fragmento está en el estado
Aquí vamos a ver si es lo que
pasado una ID de usuario, podemos usar
¿ID igual al ID de usuario que
ingresamos? Puedes ver, puedes ejecute cualquier lógica, cualquier método
en su fragmento directamente desde aquí o Realizamos la prueba Espresso OE.
Cuando hacemos
¿Cambia el texto a suscrito?
¿cosa? Podemos hacer esto con esa línea
recipiente. Para
escenario de fragmento. Lo hacen más agradable
Pero no se prueba un fragmento de
Los fragmentos hablan con otros fragmentos,
navegación, así que hay otra parte
probar los vínculos entre diferentes
¿fragmentos? Lo bueno que tenemos
usando estos componentes de
Al igual que la actividad, tenemos
las cosas que encontramos, qué construcción
empresas, una vez que llegan
bueno, deberíamos agregar pruebas.
Agregaron navegador para simular la actividad de inicio llama. Esa
lo que podemos hacer, en nuestras actividades, es simplemente
controlador y confirme que sí, está
navegar llamadas. Aquí
fragmentar nuevamente y obtener nuestra identificación
La prueba es este en el botón Ver suscriptores.
haciendo algo complicado en
para probar esto? Está llamando a
¿Esto realmente está haciendo lo que
bastante fácil. Podemos hacer nuestro
fragmento de lanzamiento. Y ahora podemos simular
ahora llamas a onfragment y lo que estamos
simplemente creando nuestro propio controlador
host de navegación aquí. Pero podemos simplemente
fragmento de host está haciendo bajo las
controlador en una vista.
Ahora lo que hemos
Desde el punto de vista de los fragmentos, tiene
esas llamadas al controlador de navegación
algo, ahora simplemente funciona. Están
puede simplemente ejecutar pruebas de Espresso
botón. Podemos usarlos también en nuestras
implementar iguales, podemos simplemente hacer
una verificación simple y decir, verificar. ¿Realmente navegaste hasta donde
navegando? Incluso si hay muchos
Ahora puedes simplemente verificar y esto
aquellas interconexiones entre
Entonces, navegación El controlador es algo especial.
no son un tipo de patrón de localizador
esas dependencias y esta es
años demasiado tarde, algo así. Pero
él. Entonces,
hay una clase en Android P. llamados factores de componentes de la aplicación
actividad todo a través de inyección
llama al constructor en lugar de
cosa aquí con fragmentos. Ahora puedes
hacer conSTRTRUTH estructurar en fragmentos.
Puedes utilizar
Entonces, esto también es realmente útil para
Fue como transmitir tu actividad a
Probablemente todavía tenga una plantilla
que haga esto. Lo arreglaremos. Y hay muchas maneras en las que realmente
esas dependencias externas para que podamos
fragment funciona muy bien con nuestro escenario
Sabemos cómo probar un ViewModel,
Tiene un método real llamado
probar nuestro fragmento. Y nuestro
fragmenta y hace lo suyo. ¿Cómo
Bueno, podemos inyectar la fábrica
fábrica. Aquí estamos usando by
hace todo ese tipo de cosas que proporcionan
tú. Pero
ahora tenemos un fragmento que Hemos inyectado algo, pero aún
como, está bien, ¿realmente llamó? ¿suscribir? Entonces,
actividad. Así es como
se verá en la vida real. Bien. Vamos a inyectar nuestra
porque el código es difícil y quería
diapositivas, construí un inicializador de
agregamos un inicializador para cada
fragmento y llamamos a ese método para construir. Entonces, un poco
si quieres comprobarlo. Estamos
integrar esto más profundamente en la
Una vez que hayas llamado a esta fábrica
fragmento.
Utilizará este constructor
y pasará nuestro Fábrica de ViewModel. Excelente. Entonces,
nuestras pruebas, ¿cómo se ve? Creamos
ViewModel y luego podemos configurar una
fábrica para él y luego nuevamente, Es una especie de uso de una fábrica de fragmentos
tipo de cosa que estamos pasando en
fábrica y nuestro escenario parece
en lugar de sólo argumentos, también
Ahora podemos hacer lo mismo en la
vista, realizar el clic y luego verifique que sí, nuestro ViewModel
llamar. Tenemos un fragmento comprobable,
Tenemos algo comprobable. Ahora,
mejoras en esta API porque,
haz esto aún más fácil.
Entonces, en
Al construir un fragmento de perfil,
algo que se parece a esto. Donde
luego dale un método que diga,
fragmentar y darle específicamente
de su fragmento para que no tenga
usando una fábrica de fragmentos en debajo del capó. Hay
Podría pensar, oh hombre, tal vez necesito
Tiene que haber razones para utilizar múltiples
actividades además de solo impulso. Bien. Entiendo que muchas
múltiples actividades en este momento, esto
vender. Bien. Así pues, hay algunos
Recomiendo utilizar múltiples
Entonces, lo que me gustaría decir es que
actividades. Lo que necesitas son múltiples
¿tareas? Las tareas son en realidad lo
interactuando con.
Entonces, una tarea es
La tarea tiene un backstack. Entonces, en su
una de estas entradas no es sólo una
Pila de tareas completa, ¿verdad? Así que
la mayor parte de la actividad de esa pila. Entonces
Bien. Cuando estás haciendo múltiples
son dos tareas una al lado de la otra. Bien. En
cosas que soportan múltiples ventanas
tareas es una ventana.
Uno a uno
actividades vínculos y ventanas,
Entonces, iniciar una nueva tarea en uno
de estos dispositivos Chrome OS brinda usted una nueva ventana. Bien. Entonces,
múltiples actividades, pero tal vez
Bien. Entonces, este es el caso en
actividades bajo el capó, cada
ser una actividad separada. Pero no
otras cosas, como una pila de actividades
¿Cómo se ve esto realmente?
Hay muchas formas diferentes
de decir nueva tarea. Bien. ¿Alguien ha mirado todas esas maravillosas
¿Toda esa diversión? Sí. ¿Cuántas
Bueno. Bueno, diré que hubo
allí, en Android 1.
[Risas] Eran geniales en Android
Quizás no sea lo mejor que puedes usar.
Lo que realmente quieres usar es Modo de inicio de documentos. De hecho, se
agregó el modo de inicio de documentos. en API 21. Si está pensando primero en la
versión anterior a API 21, ¿cuáles son? ¿Estás haciendo? Y, en segundo lugar,
de soluciones hackie. Tal vez simplemente
no valga la pena para aquellos usuarios. Pero trate de evitar cosas como
afinidad y ese tipo de cosas
El marco los respeta, tal vez no
forma en que quieres que lo honren.
Ciertamente hay muy diferentes tipos de cosas.
Con el modo de inicio
multitarea, si puedes tener múltiples
tareas, puedes múltiples ventanas. Tiene varias entradas en
su pantalla de descripción general. Entonces, la primera forma de realizar
En los medios existentes cada vez que
La actividad tiene su propia tarea.
actividad, tiene su propia tarea.
esa tarea, no cree una segunda y una
para documentos, conversaciones y cosas
comparar lado a lado. No
doc, abre otro y cópialo allí.
modelo multitarea que es Android
La aplicación realmente puede usar esto.
Ahora, por supuesto, la existencia Se supone que tienes alguna noción
de unicidad. Se supone de un ajustador de intenciones es igual a un punto
UI en su actividad, que hay algún tipo
ID de conversación, ID de documento, algo para definir de forma única
Un gran ejemplo es Google. Documentos.
Lo lanza en otra tarea.
uno al lado del otro en un teléfono. Dos ventanas
diferentes en un sistema operativo Chrome dispositivo. Y simplemente funciona.
Aunque es una aplicación, puede tener múltiples ventanas y realmente permitir
multitarea entre diferentes cosas.
Entonces, otro importante es la creación de contenido
nuevo. Entonces el contenido nuevo es un un poco diferente porque en realidad no hay
ninguna identificación única, pero tú Si desea ese comportamiento multitarea, puede
material mientras creas algo nuevo.
Es similar a existir, pero
siempre crea algo nuevo. Son como nombres autodescriptivos.
Te permite hacer varias cosas
Gmail, utiliza este tipo de modo cuando creas
Esto le permite crear un nuevo correo electrónico
correo electrónico existente al mismo tiempo.
equivalentes, en el móvil, a cuando
un pequeño lunar que está separado
Necesito ese otro material como referencia.
En un teléfono o tableta, se ve
el otro caso es
modos completamente separados.
Uno está
Entonces, esta sería una actividad
reproducción. Entonces, esto es realmente común en Android TV. La televisión utiliza
poner las cosas en modo
navegar por otras películas. Entonces,
en este modo, es mucho que tienes un botón de imagen
su interfaz de usuario. El otro
actividad. No necesitas nada
y Google Maps, donde toda tu tarea
Actividad de imagen en imagen. Bien.
elegir uno u otro? Es realmente
este caso donde una vez Estoy en modo imagen en imagen,
icono del iniciador, ¿qué
El ícono siempre inicia la tarea predeterminada
caso, donde solo tienen una tarea,
desde el icono de su iniciador,
imagen en imagen. Porque no
múltiples conversaciones al mismo
vamos a reemplazar uno por
continuar haciendo referencia
a algo aunque algo ya esté yendo. Ese es el diferenciador
desea explorar imagen
en imagen que es la misma tiempo. Si quieres, sí, estás
marco y necesitan posicionarlos
Tareas separadas. Actividades
Pero, eso es todo. Lo único
cosas como aplicaciones instantáneas. Las
el nivel de actividad. Bien. Lo llamas
en realidad hay algunas cosas realmente
trabajado por el equipo de Play. Creo
Cumbre de desarrolladores de Android.
Mucho de esto
experiencia para tu App Bundle, haciendo que
y también módulos de funciones
formas interesantes de agregar
No requiere una arquitectura de aplicación
De hecho, puedo hacer más cosas con esto.
Para la experiencia instantánea, se agrega
igual significa verdadero. Pueden probar
módulo base totalmente instantáneo
cosas como enlaces de aplicaciones.
puedes agregar a cualquier
en enlaces de aplicaciones añadiendo la verificación
Cuando alguien lanza su enlace
para abrir su experiencia de aplicación
módulo base completo para usted y su
ya ahí, listo para partir. Pero
La aplicación es demasiado grande, por lo que
No se usan muy a menudo o más bien
De qué se tratan los módulos de funciones dinámicas.
Sobre poder descargarlos bajo
demanda.
lo interesante Lo que pasa con los módulos de funciones
clases. No es necesario agregar actividades.
destinos, sólo el número de fragmentos.
Puede agregar nuevos destinos,
creó un archivo XML, cada uno de estos
módulos de funciones dinámicas Puede agregar su propio gráfico de navegación.
No estamos atados a actividades
separadas. Ahora podemos realmente Todavía uso una actividad. Ahora
hecho aquí, tanto en el lado de Reproducción
como en el lado de navegación. Pero Queremos que esto sea realmente fácil de usar
para los desarrolladores. Así que lo que queremos llegar es donde puedes
gráfico de navegación con una etiqueta de
etiqueta de fragmento y cuando
eso en realidad va a hacer toda
su módulo de funciones disponible desde
es.
Entonces, ese es el mundo en el
utilizar una sola actividad. Donde puedes
cosas, como enlaces profundos en la
la arquitectura de su aplicación. Entonces,
con una nota. Muchos de ustedes tienen
tipos de experiencias muy
diferentes y me gustaría decir, Haz lo correcto para tu aplicación. Creo
Estaba escribiendo una nueva actividad, también
pero yo Date cuenta de que hacer y decir, oye,
aparte, a veces es difícil de vender. A
aplicación actual. Entonces tal vez
bien por ello. Realmente depende
Te encuentras contorsionando tu
tiene sentido para ti, no lo hagas.
Bien. Si algo funciona, está bien.
Bien. Pero si descubre que
estás teniendo un comportamiento
inconsistente o quieres compartir ViewModel, tal vez sea el momento de
sola actividad.
Gracias.
Preguntas y respuestas afuera. En realidad Agradezco que todos hayan venido.
[Aplausos] Todos, la próxima sesión, en esta
minutos. Gracias. [Aplausos] Hola. Y bienvenidos a la última
Cumbre, sobre lo último, creo.
Animado. Soy Nick Carnicero. Soy
Responsable de la API de Android. Soy
Nicolás Roard. John
MotionLayout y herramientas de diseño.
Excelente. Entonces, comencemos. Entonces, Android siempre ha tenido
Las API han crecido a medida que el sistema
con todas las funciones. Hay una
diferentes situaciones que se han agregado
Lanzamientos de API, así como a las nuevas
AndroidX. Pero,
a veces, escuchamos que el variedad, la variedad de sistemas de animación
Que no sabes a cuál recurrir
para un caso de uso determinado. Entonces Nuestro objetivo es brindarle una descripción
bueno, para lo que podrían no ser
confianza sobre qué alcanzar.
tiempo en MotionLayout también. El
primero es el más antiguo y API de animación original, que es la animación
de vista de Android.
yo lo haría Le insto a que lo considere
en desusoen desuso. Pero tal vez sólo
Entonces, esta, como digo, una API de animación
se ejecuta en una determinada fase del sistema.
diseño de medidas y un sorteo. Porque
en el pase de sorteo, significa que no
aplazar un renderizado cuando no lo
necesitamos. También conduce a ciertas cosas a donde porque solo
Aplicaste el pase de dibujo, tal
Las vistas no han desafiado. Sólo existen
con el sorteo de visualización. sistema básicamente, considérelo
Pertenece a un MUSEO.
[Risa] Yo diría que está en desuso excepto
es cuando estás haciendo animaciones
se inicia, esta API solo acepta este
porque existía desde API 1. Pero también
Las animaciones deben indicar toda la información
animación.
El hecho de que las carreras
Eso le permite definir ciertas cosas
una animación amplia, 10% de la posición
Garantizado para ser medido, esto puede
El único otro lugar es cuando estás
actas. Puede proporcionar esta animación
Pero la aplicación acepta el nuevo animador
Para usar el más nuevo si puedes. Entonces,
Básicamente, solo lo uso para animaciones
confiar en esa parte.
De lo
en desuso. A continuación.
Animador. Está bien. No cambió. Ups. Está
Hablamos de ver animación, ahora echemos
animador que se introdujo en API 11.
Las API son mucho más versátiles
porque te permiten animar más que ver la propiedad. Incluso
necesariamente asociado con cualquier
propiedad, utilizando el valor API de animador.
animador, hemos creado un montón de animadores
construcciones, como el dibujable
animador de elementos predeterminado
La gente siempre me pregunta, entre
¿API de animación debería usar? Y la
API de animador. Porque es mucho
sección, veremos algunos
animadores. vamos a Mire los animadores de valores y el
anima el valor, pero puede
para mirar el conjunto del animador.
Y luego, también vamos a tomar una Mire el animador de propiedades
animador, pero respaldado por un animador
un poco más sobre eso en un minuto.
Mire el titular de los valores de propiedad,
que puede usar junto con con valor animador.
Aquí tenéis una
hombre haciendo malabarismos. Eso
dibujable, del que Nick hablará
Ahora miremos más allá de eso y encima
son textos que se animan dentro y fuera.
Para eso, simplemente podemos crear
La propiedad alfa de esta vista
suministrando una cadena alfa y eso
se pasa una cadena de propiedad
tenemos que prefijar esa cadena con un
Reflexión para encontrar el colocador
clase de objeto y eso es más costoso.
en su lugar, está utilizando este objeto
de propiedad. Se introduce en API. 14. Junto con muchas otras propiedades.
Cada vez que se actualiza el valor de
la animación, el valor establecido ser llamado y desde allí, el conjunto
vista.
Debe ser más eficiente que la
Si miramos más de cerca esta animación,
El texto explota, por lo que
se animan tres propiedades. La escala alfa X y la escala y. Así
Puede crear tres titulares de valor de propiedad,
y luego podemos especificar el valor
Una vez que tengamos definidos todos estos titulares
establezca esto en el animador de objetos. Entonces
impulsar el cambio de los valores de las propiedades.
Una advertencia es cuando utiliza varios
en un animador de objetos, básicamente
propiedades con el mismo en turpulator,
duración en el mismo objeto. Muchas
veces queremos animar escala X y escala y simultáneamente,
necesidad. Si desea definir eso
titular de valores, parece bastante
Si echas un vistazo a la parte inferior
botón que aparece gradualmente. Para coordinar
juntos, podemos crear un conjunto
— con el método Play, devolvería
desea reproducir el desvanecimiento después
Si bien el texto encaja, también queremos
ampliarlo, por lo que estamos vamos a reproducir el desvanecimiento
Quiero reproducir todas las animaciones
se desvanece. Entonces,
API sencilla y potente
Ahora hemos visto cómo podemos
desconjunción con objeto
propiedades de vista, puede llamar a esto
animador y luego hay un montón
propiedades y luego establece un valor
coloque un turpulator y deténgase.
y conciso que esto.
Ver propiedad
animador de valores. No es un animador,
coordinar con los otros tipos de
animadores. No puedes revertir o repetirlo. Algunas personas, algunas personas
¿El animador de propiedades es tan eficiente
Le aseguro que en realidad es
animador de objetos. La razón de esto
ha sido optimizado para animar las propiedades
que para todas las propiedades de vista,
se activa. Mientras que si usas el
varias propiedades, cada
desencadenar su propio conjunto de
Ver el animador de propiedades es más para
caso en el que inicias la animación y simplemente
Ahora, es posible que hayas visto esta
diapositivas anteriores. ¿Notaste que
animando al final del texto?
Y estos pequeños puntos son No es realmente una propiedad para la vista
Vamos a crear un animador de valores
Vamos a escribir un tipo de número
contar.
Y con el animador de valor,
casi siempre querrás usar un actualizar el oyente porque el animador
el suyo. Entonces, aquí, con valor, con
vamos a leer el valor del
Úselo como la cantidad de puntos que queremos
Y luego vamos a tener una cadena
vista. Vamos a establecer un lapso
gama de colores transparentes, más
no debería mostrarse. Y — que
actualización, actualizaremos la
mostrando y luego correspondientemente,
rango para ocultar los puntos que queremos
Entonces, en resumen, ¿cuándo deberíamos
animador es una especie de
Siempre que tengas una propiedad que
eso.
El animador de valores sirve para
animar un tipo más personalizado. de animación donde desea animar
ese valor para aplicarlo a otra cosa
en su interfaz de usuario. Vista El animador de propiedades es el mejor
propiedades que necesita animar
misma vista y porque realmente no puedes
animador de propiedades con cualquier
disparar y olvidar el caso de uso. Y luego
titulares, con el titular de valores de
propiedades y crearlas usando un animador
Lo que pasa con el titular del valor
le permite animar múltiples propiedades
debido a que realmente se está configurando
luego coordine eso o busque o revierta,
Conjunto de animadores, tienes varias
coordinar, el conjunto de animadores sería
una buena opción.
Muchas gracias. A continuación, tenemos
dibujable. Estos son excelentes para
los maravillosos íconos que ves en
la aplicación Google Fit. Él básicamente conecta entre sí un
múltiples animadores de objetos y ejecuta
animaciones en ellos. tiene una especie de API pequeña y enfocada,
básicamente implementa el animador. Puedes obtener un
comenzar. Es fantástico para aplicaciones
Información gráfica, especialmente cuando
se reimplementó el dibujable. en código. Incluso si estás haciendo el hilo
jugando. Hay más tiempo para que usted
ejecutando el código de animación.
o gráficos animados, cuando es
olvidar. No puedes buscar a través de
avances para ello. Te insto a que mires
Bueno para cualquier cosa que sea crítica
para el rendimiento. Ahora, animación física. ¿A quién
perfecto para un caso de uso altamente
gestos y quieres continuar
ese gesto en una interfaz de usuario para crear
Porque cuando permiten gestos en
potencialmente interrumpir la animación
en curso existente.
Soy Seguro que has visto animaciones
desea que la vista se mueva
luego solo hay algunos de los usuarios
hubiera cambiado. Y en este caso,
animación, eso simplemente cambiaría
entonces, como resultado, la corrección
liso. Así
esta pequeña burbuja con la foto
ventana de superposición de la aplicación para
aplicaciones. Y en este caso,
aplicación. Mi objetivo es arrastrar
suéltelo, debe descansar a ambos lados
Para lograr esto, obviamente necesitamos
comenzar con un oyente y usar Oyente de velocidad para rastrear el movimiento
y rastrear las posiciones. y en los eventos posteriores, necesitaremos
calcular cuánto su dedo se ha movido desde ese evento
la posición de la burbuja en consecuencia
arriba, ahí es donde surge
calcular la velocidad y luego aquí,
la demostración, solo vamos a decir,
mayor que cero, nos moveremos
hacia el lado derecho de la pantalla.
De lo contrario, lado izquierdo.
posición donde queremos que descanse
la burbuja, podemos crear una animación de cadena. Esa es una propiedad
explique en la siguiente diapositiva.
También queremos establecer la velocidad
inicial y esto es fundamental para asegúrese de que esa transición del
sin costura. Entonces,
y el objetivo de esta propiedad personalizada
para asociar el valor de la animación
burbuja. Cada vez que cambia el valor
de la animación, obtenemos esto: Obtenga esta llamada de valor establecido.
valor en el diseño params.X porque se está animando en una descripción
ventana y hacer que el administrador de ventanas actualice
ese cambio y de manera similar, en obtener
devolver el parámetros de diseño.X.
API de transiciones.
Ahora bien,
las transiciones consisten en mirar dos estados de diseño diferentes
entre ellos. Realmente, puedes pensar
fábrica. Hace un tiempo, hablé
cosas como esta, dos conjuntos de restricciones
gerente de transición. creo que
MotionLayout mejor resuelto. No
lo consideraría bueno para eso. Llamas
a la jerarquía de vistas y ocurre
diferentes estados de la interfaz de usuario,
crea un animador. Hay una superposición
esas transiciones. Lo que me encanta
lo hace con el código base. Aquí
la capa de vista en transiciones. A
como esto. Dibuje previamente a los
jerarquía. Al moverlo a transiciones,
lo movemos a esto. arquitectura declarativa. Está compuesto
transiciones de una manera más componible.
Escribe algunas transiciones tú mismo.
mucho más, no lo sé, es más agradable
trabajar con ellos y mucho más Me concentré y lo encontré como
base de código.
usarlos? Para mí, hay un caso de
uso importante que se comparte. Es prácticamente lo único que puedes
a menos que seas súper personalizado.
En realidad hay dos transiciones.
Pasando aquí. Ahí está el elemento
actividades y luego hay una transición
de contenido de ventana. Cuando Cuando la ventana se abre o se cierra,
contenido. Cuando llega el espectador,
el resto del contenido anima hacia arriba. Entonces,
¿API de transición? Elemento compartido Elementos, para mí. Además,
Redacte su código de animación, las
así como transiciones simples, utilizando
el método de inicio [ __ ]. Diseños de movimiento.
hablando de codificación. Es
realmente muy completo. Por otro
pérdida de tiempo. ¿Qué podemos hacer
Eres más productivo, te permite iterar
más rápido.
queremos hacer El diseño de movimiento es mucho más
que presentamos es el objeto de
El objeto es algo que has estado
pautas. Realmente no forma parte de tu
punto de vista, tu jerarquía en el siento que no aparece en la pantalla
pero están aquí para ayudar usted crea esos diseños. Para aportar
hazlo más fácil. En 2.0, los expusimos
usted mismo, cree ayudantes simplemente
narrando la clase. es una manera de hacer código y ponerlo en un ayudante,
es fácil de agregar y puedes considerarlo
etiquetado con un comportamiento
animación, eso es realmente bueno
código. Tienes tu ayudante construido
y nosotros tenemos toda la riqueza. de las API de animación de Android
Bien.
Por ejemplo, ya sabes, una animación
Lo único que realmente necesitaba hacer
de código y realmente de lo que estoy
Lo único que necesito hacer aquí
pantalla, simplemente estoy llamando. No
No se me ocurre una nueva forma.
necesito hacer para mi ayudante y luego
Sólo es necesario declarar ese ayudante
widgets a los que desea aplicar.
Básicamente, es un Es mucho más fácil para usted empaquetar
ya sabes, úsalos en tu aplicación.
Entonces, volvamos al tema del código.
pensado en hacerte la vida más fácil,
ladrillos razonables es pasar a la
animación. Entonces, puedes considerarlo
movimiento. Y interpretamos esta especificación
motor y además de eso, estamos construyendo
editor. Es algo que presentamos
Todavía estamos trabajando en ello. Decidimos
lado. Porque quiero asegurarme de
que sea adecuado para usted y para tus necesidades. Pero sólo una rápida
construir, está avanzando y, con
una versión de Estudio. Entonces,
enfoque general que tenemos para ayudarle.
por un lado y esta especificación
Lo que es agradable, si
Podemos especificar esta moción y
luego nos encargaremos de ello.
Tú Realmente no es necesario escribir código para
Entonces, el que implementamos es a través
Qué es MotionLayout? Es un grupo de vistas.
significa que solo puedes animar a
y es una subclase. Si conoce
excelente. Puede utilizar MotionLayout
directamente. Por otro lado, tienes que usar ConstraintLayout.
Pero hace un lote. Entonces, hacemos transiciones,
Buen soporte para movimientos táctiles.
pensar en los valores de la animación
lugar. Entonces,
Lo que tienes que entender es que
estados. Tenemos un estado inicial
interpretar entre esas dos
básicamente admite cambios de
Dos versiones vírgenes del diseño,
propiedades si desea animar
colores y fotogramas clave y Puedes pensar en el fotograma clave como
transformado entre el principio
Entonces, para resumir, con MotionLayouts,
piensa en tu animación, tu transición,
declaración.
Simplemente especifica
cuidarlo. Específicamente es genial
animación afinada. Entonces, es muy
hacer, se trata de coordinarnos juntos
y finalmente, también es muy bueno
movimiento. movimiento.
No creo que necesite el micrófono.
como, mostrarles muchas cosas
visual de ahora en adelante. Entonces,
crear – cuidadosamente Crea animaciones personalizadas, coordinadas,
cosas así. [Risa]
[Aplausos] Entonces,
sólo dos… dos cadenas. El
La letra es una vista y usamos un escalonamiento
y un cambio de color y un vista de partido personalizada. Es bastante
ver minutos, se ve genial.
se trata de todo.
Entonces,
Expulsar cosas con el tacto. Se encargará
Flick, se transmitirá rápidamente.
maneja eso. Lo siguiente que hay que entender
de dos conjuntos de restricciones pero tenemos
En este caso, estoy empezando con dos
¿Tiene algún fotograma clave y
Allí mismo se superponen. Entonces lo
posición, fotogramas clave
terminar la parte X del movimiento,
Eres un poco suave, ya sabes,
menú de configuración.
[Risa] Entonces, el extremo más extremo de lo que podemos
ciclos clave y aquí, puedes ver un montón
efectos que podemos hacer. Básicamente,
oscila, tiembla, rebota,
realmente ir y construir caminos
Esto lo soluciona. En alfa 2, presentamos
Esta es una animación loca que puedes
hacer con ella. Por supuesto, esto es demasiado exagerado y por
producto.
[Risa] Pero… entonces, veamos cómo usarlo.
Bien. Entonces, primero que nada,
creado así que voy a ir rápido.
artículos. También hay un
Una cosa que quizás te preguntes es,
está bien, esto es genial. ¿Cómo ¿Usas esto en mi aplicación? Hay
tener una barra de herramientas plegable
barra de herramientas plegable normal, simplemente
en cambio. Realmente no
código, pero plegable se convierte en
ventajas de ello.
Del
mismo modo, no es necesario utilizar una nueva clase, puedes usar
MotionLayout para ello. Lo mismo para ver la página. Puedes conectar fácilmente
El último ejemplo es interesante.
en realidad, esto es MotionLayout
La cuestión es que en realidad está
Tengo uno plegable para la barra, es
usado antes. Y simplemente está
Lo que es realmente bueno es que para
pantalla, sólo necesito crear
fin. Verás que al final simplemente
eso es para la barra de herramientas más pequeña
todo ello.
Entonces,
para resumir para el presente estado, estamos trabajando en el
biblioteca, hicimos Google I/O e
Sabes, incluso en alfa, está construido en
estable. Y de hecho, debido a que
la gente empezó a construir cosas
Algunos ejemplos sólo para darle una pequeña
con MotionLayout. Entonces,
lote. Revisé MotionLayout en Twitter
Pensé en compartir algunas animaciones
la gente ha publicado. La mayoría de estos,
GitHubs. Estas personas los publican
Este tipo ha estado trabajando
Es algo interesante ver lo que
Y éste es particularmente interesante.
tal vez note que en el anterior
lindo.
En este ejemplo particular,
es algo así como un buscapersonas. Añadió
código y ese es un futuro
avenida para nosotros. Es un poco: ¿cómo
¿Algo de este comportamiento previamente
definido? Entonces, otro de él, lo interesante
una especie de mezcla de lo que es un RecyclerView
revelar vista detallada. Pero es
Es muy fácil idear tus propias
tipos de transiciones.
Ya no estás limitado. Este tipo implementó una especificación de animación
usando MotionLayout y una vista personalizada
bastante buen trabajo.
Una
este es muy original. Ves ver
páginas. Bueno. Este en realidad, le está dando un
giro completamente nuevo. [Risas] Pero
Puedes explorar tu propia creatividad
Creaty con lo que les gusta y lo
Este es interesante porque
cosas de diseño del coordinador.
Ves que es transparente y hay efectos especiales y cosas que
vista única, ya sabes, personalizada de
Y este es nuestro Chris Banes.
[Risa] E hizo una muy interesante y es una
Los códigos involucrados están ahí fuera.
Échale un vistazo más de cerca.
este es el tipo de movimiento que es
mucha coordinación sutil entre
el texto se está desvaneciendo, ese cartel en
realidad está girando, pero en realidad coinciden. A eso
nos referimos cuando hablamos.
Sobre movimiento o movimiento elaborado
Este es el tipo de ejemplo que esperamos
construir.
Tendremos en alfa 3, admitirá
y le permite interactuar con los múltiples
tocar. Entonces, este es un solo
Manejo de transiciones entre tres transiciones
página para deslizar la parte inferior
para deslizar un poco, para deslizar más. Es todo una página, un
una vista personalizada bastante sofisticada.
Este comportamiento táctil, cero por
tu parte. es todo declarativo. [Aplausos y vítores] Bastante
Hoy, esperamos haberte brindado una visita
y nuestro objetivo era familiarizarte
buenos y en qué no son tan buenos,
Resuma eso como una conclusión. El
y por ese agradable traspaso
Realmente echa un vistazo
Si necesita crear animaciones
Gesto con el seguimiento de
sistema de disposición.
Si necesitas hacer transiciones compartidas, transiciones
Si necesita hacer vectores, haga vectores
Si necesita hacer animaciones
Se debe utilizar el sistema de animación de visualización.
Si necesita animar propiedades
de vistas, mire la ver animador de propiedades.
Si
ver animación o impulsado por una animación
pulso, mira al animador. Animator
para animación de propósito general. La próxima
algo, no quedarás paralizado
Diferentes API de animación. Así
nosotros y estaremos afuera. Muchas
gracias. [Aplausos] ¿Hola?
una sesión completamente diferente
que durará unos dos minutos largo. Estamos cerrando el día
Tengo curiosidad por saber si te gustó o no.
cumbre de desarrolladores?
[Aplausos] ¿A cuántas personas no les gustó la cumbre
haciendo aquí todavía, al final del
[Risas] Entonces
sé genial.
Creo que a la gente de
qué pasó. Un aspecto comunitario
poder comunicar el contenido.
Ojalá aguantemos esto de nuevo. Ojalá sean un
La próxima vez. Tenemos que convencer a
las personas que escriben los cheques. ¿Algunas de las cosas favoritas
¿gritar? No
MotionLayout está bien. ¿Qué otra
bien. Sí, algo nuevo sale
área. LiveData, sí. Muy guay.
y codificación en vivo de C++ en una charla
relámpago de cinco minutos. Aplicación Paquetes, sí.
Nativo de Kotlin. Está
entrando en línea. ¿Qué
charla, que no es así… en la chimenea,
Eso fue muy divertido hoy. ¿Te
Impresionante.
ahora, ya casi en línea. El día uno
YouTube. Escuché anteriormente que
temprano como las 8:00 o 9:00 esta noche. Vuelve
y míralo. Además,
encuesta, tal vez esté en tu bandeja de entrada
De hecho, leemos estas cosas y
él. Díganos qué funcionó, díganos
esas cosas para ti porque eres la razón
este. Vamos
creo que eso es todo. Estoy
deseando hacer otro uno de estos. Ojalá nos veamos
Mientras tanto…
[Risas] En caso de que te hayas perdido todo
capturarlo en 90 segundos.
Cumbre de desarrolladores. Este es un evento
Con más de dos mil millones de dispositivos,
Aplicaciones descargadas cada año. La
comunidad de desarrolladores de Android es creciente. creciente. Entonces,
lo hace mucho más sencillo. Sin trabajo
necesario, el App Bundle ahora hace que las aplicaciones
sean un promedio de 8% más pequeñas para descargar para dispositivos.
sin ti, así que gracias. [Aplausos y vítores] Como
Gracias por venir. .