Construir una línea de tiempo con la vista personalizada

Estoy construyendo una aplicación para Android con eventos cronometrados y no estoy seguro de qué diseño debo utilizar para crear mi línea de tiempo.

Los eventos pueden tener alturas diferentes y pueden crecer cuando el usuario los toca pero tienen el mismo ancho;

. . . ------------- | | Event 4 > | -------------- ------------- | < Event 7 | | | | | -------------- . . . 

Tengo dos tipos de vista:

  • EventView bruja celebrar la información del evento y drow su contorno
  • TimeBarView bruja de TimeBarView es la barra en el centro (tiene una cierta característica y se extiende en un palmo muy largo

¿Cómo puedo colocar mis artículos por lo que es respetuoso del tiempo en mi línea de tiempo (por ejemplo, una semana podría ser 10px)

Cualquier ayuda es apreciada. Gracias !

Estoy abordando el mismo problema ahora.

Todavía no tengo una solución completa, pero tengo una idea:

Puesto que usted tiene a lados a la línea de tiempo, ListView no es apropiado porque los eventos pueden solaparse.

En su lugar, considere el uso de una GridView de dos columnas. Recomiendo usar AndroidStaggeredGrid , que admiten diferentes tamaños de elementos.

Para la "barra de tiempo" real que se ejecuta en el centro, voy a simplemente utilizar una línea estrecha como el fondo para el GridView.

No habrá marcadores en la línea de tiempo. En su lugar, los marcadores estarán en el EventView, ya sea a la izquierda oa la derecha, de tal manera que el marcador caiga exactamente en la barra de tiempo.

De esta manera, al desplazar la cuadrícula, dará la ilusión de que la barra de tiempo en sí está desplazándose.

Para indicar un intervalo de tiempo vacío, simplemente añada una vista vacía cuya altura sea proporcional al intervalo que representa.

Espero eso ayude…

No estoy seguro de que haya suficiente información en su publicación para determinar exactamente lo que está sucediendo durante el diseño, pero RelativeLayout probablemente hará lo que necesita. Puede utilizar leftMargin como una posición absoluta, o "rules" como RelativeLayout.LEFT_OF

Dicho esto, es muy fácil crear un diseño personalizado con el marco de Android. Simplemente anule onMeasure y onLayout. OnMeasure debe informar cuán grande es el contenedor (a menudo, tan grande como el padre lo permite), y es bastante sencillo.

OnLayout normalmente se ve así:

 @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { int count = getChildCount(); for (int i = 0; i < count; i++) { View child = getChildAt(i); if (child.getVisibility() != GONE) { // do the layout for each child here, with child.layout // eg, child.layout(0, 0, r, b); } } 

View.layout toma 4 argumentos – superior, izquierda, inferior y derecha – bastante simple. Usted tiene acceso a las dimensiones del contenedor en l, t, ryb.

HTH

  • Problemas relacionados con el uso de DP en android?
  • ¿Es posible agregar un TextView desplazable a un ListView?
  • Android: Botón con dos imágenes | alineación
  • El fondo del círculo de Android se convierte en oval
  • Ayuda de la sentencia del caso de Android
  • Android: Layouts "diapositivas" de la pantalla?
  • Wrap_content en recycleview, toma altura del elemento (lista horizontal)
  • Vista de navegación de Android: Desplácese por los elementos del menú sólo para emitir
  • ¿Cómo puedo implementar una Lista de Expandir / Contraer el Material de Diseño en Android?
  • Android - Uso Linear o Diseño de la tabla
  • ¿El diseño se invierte?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.