Aplicaciones Android

Lista de redacción / Detalles: Conceptos básicos

En un artículo fresco sobre el estilo de Android, analizamos SlidingPanelLayoutEsto puede simplificar la implementación de la interfaz de adjudicatario «directorio / detalles». Maneja la deducción de mostrar un diseño banda a banda o un diseño de dos páginas según el tamaño de la pantalla. Actualmente, no existe un método equivalente en Jetpack Compose. En este artículo, veremos cómo Compose hace que esto sea relativamente comprensible.

Antaño de profundizar más, vale la pena señalar la palabra «contemporáneo» en el párrafo auténtico. Esta es un ámbito de Compose que se está desarrollando activamente. Por lo tanto, preste mucha atención a la implementación formal de tales funciones. Incluso si esto es solo una posibilidad temporal, todavía presentaremos algunas técnicas interesantes.

Además vale la pena mencionar que proporcionaremos una posibilidad factible al final de este artículo. En muchas situaciones, esto puede estar proporcionadamente. Sin requisa, agregaremos más funciones en el segundo artículo. Esto hará que el dispositivo plegable se comporte mejor.

Relación / Detalles

El comportamiento elemental que queremos seguir es cuando la interfaz de adjudicatario tiene una directorio de nociones. Cuando el adjudicatario hace clic en un sujeto de la directorio, mostraremos la información detallada en la panorama de detalles. En una pantalla más vasto, puede poseer suficiente espacio para mostrar la panorama de directorio y la panorama detallada al mismo tiempo. Sin requisa, en dispositivos más pequeños, tocar un sujeto puede reemplazar la panorama de directorio con la panorama detallada, y luego volverá.

Podemos hacer esto en la antigua interfaz de adjudicatario basada en vistas usando diferentes diseños para diferentes tamaños de pantalla. fresco, SlidingPaneLayout Puede manejar la pesada carga.

Para hacer esto con Redactar, primero veamos los nociones combinables de Relación y Detalle:

Los hice deliberadamente lo más simples posible. Esto es para que el código sea comprensible de entender.

List () usa uno LazyColumn Para mostrar una directorio de nociones proporcionados como parámetro, y la operación de selección es manejada por el parámetro de audición. Detail () solo muestra un fragmento de texto.

Diseño dividido

El diseño dividido (es aseverar, el diseño de banda a banda) es más comprensible de implementar:

Aquí, usamos estado variable para cumplir el texto seleccionado actualmente.

Usamos una visualización banda a banda de componentes List y Detail RowAquí utilicé pesos iguales para dividir la pantalla por la parte. Pero cambiar para cumplir con diferentes requisitos será trivial.

Cuando el adjudicatario hace clic en el sujeto de la directorio, el texto se mostrará en el panel derecho:

Diseño de dos páginas

Implementar un diseño de dos páginas es un poco engorroso, porque tenemos que considerar cómo manejar el comportamiento en segundo plano. Utilice Navigation Compose para allanar esta operación.

Creamos un NavGraph-List y Detail compuesto por dos objetivos. La ruta de Detalle incluye un parámetro para decantarse una sujeción.

Cuando el adjudicatario hace clic en el sujeto de la directorio, se activa la navegación a la panorama «Detalles», incluido el texto seleccionado como parámetro.Extraemos este valencia del parámetro backStackEntry y lo usamos como Details() Puede combinarse. La composición de navegación ahora puede manejar el comportamiento de retroceso por nosotros.

Esto da el comportamiento elemental que buscamos:

Para que el código sea simple y comprensible de entender, no incluí animaciones de navegación. Pero esto es verdaderamente poco que quiero sumar cuando verdaderamente lo use.

Disposición dinámica

Ahora que hemos implementado el patrón de comportamiento elemental, necesitamos sumar la deducción de cuándo usar cada comportamiento. En Compose, esto es verdaderamente muy comprensible:

Una especie Configuration La instancia se pasa como parámetro y aplicamos una deducción simple. Más delante veremos de dónde viene esto.Si el ufano pequeño de la pantalla es pequeño que 580dpY luego emitimos TwoPageLayout De lo contrario emitimos SplitLayout.

Esto Configuration El objeto no es un objeto específico de Compose, es un objeto utilizado por el entorno de papeleo de fortuna para proporcionar fortuna alternativos. Por lo tanto, podemos usarlo casi de la misma guisa que lo hacemos.En este caso, aplicamos la misma deducción que al colocar el diseño. res/layout/sw580.

Ponlo todo inmediato

Podemos avisar ahora DynamicLayout Hay dos parámetros: una directorio de cadenas que se mostrarán y Configuration Ejemplos:

Obtenemos la corriente Configuration Llamando LocalConfiguration.current.

Los usuarios ahora verán diferentes IU según el tamaño de la ventana.Esto asimismo se aplica a varias ventanas, porque el tamaño de la ventana se extiende 580dp El linde de ufano de la interfaz de adjudicatario cambiará automáticamente.

en conclusión

Ninguna composición única es particularmente complicada aquí. Esto es principalmente por diseño. Persistir los nociones componibles en una ubicación pequeña y concentrada hace que sean más fáciles de combinar para crear la interfaz de adjudicatario deseada.P.ej DyanmicLayout Solo relacionado con la deducción emitida por la UI. TwoPageLayout con SplitLayout Aceptar la responsabilidad total de sus acciones específicas.

Aunque parece el comportamiento que queremos ahora, no coincide exactamente con las siguientes características: SlidingPaneLayoutEn el próximo artículo, estudiaremos cómo usar dispositivos plegables para mejorar este tipo de reproducción.

El código fuente de este artículo está apto aquí.

© 2021, Mark Allison (Mark Allison). reservados todos los derechos.

Copyright © 2021 Estilo de Android. reservados todos los derechos.

Para obtener información sobre cómo reutilizar o retornar a difundir este trabajo, visite http://blog.stylingandroid.com/license-information.

LEER  Cómo probar las versiones Beta de tus apps favoritas de Android

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba