Quiero crear un "modo nocturno" rojo para mi aplicación para Android

Estoy creando una aplicación para uso de los pilotos. En su mayoría utiliza TextView , EditText , Button , etc En otras palabras, no muy gráficos pesados.

Cuando se utiliza de noche, me gustaría que el usuario pueda cambiar a un "modo nocturno" donde todo en la pantalla es rojo y negro … como la aplicación Google Sky Map. (Esto es importante para los pilotos porque el color rojo no destruye la adaptación natural de la visión del ojo como lo hacen otros colores).

¿Cuál es la mejor manera de hacer esto? He encontrado APIs como ColorFilter , etc., pero no estoy seguro de cómo aplicar estas aplicaciones en todo.

Si usted está hablando simplemente de cambiar los colores de las diversas vistas dentro del diseño y no de la estructura del diseño sí mismo, entonces sugeriría que usted lo hace simplemente usando estilos.

Definir dos conjuntos de estilos para las diferentes vistas que componen su diseño – un conjunto para el modo de noche y uno para el modo de día. En su actividad, se convierte en un caso de llamada a setStyle() en cada una de sus vistas para alternar entre la noche y el día.

Llegar con una convención de nomenclatura sensible y esquema de la paternidad para sus estilos hará su vida mucho más fácil. Por ejemplo MyText.Large vs MyText.Large.Night .

El desarrollador de Android doc sobre temas y estilos es un buen punto de partida.

Crear un tema del día y de la noche y fijarlo programáticamente trabajaría. Pero también le exige duplicar sus estilos, apenas para especificar diversos drawables / colors.

En su lugar, puede mantener un estilo y utilizar Android construido en el modo día / noche de apoyo. Así como puede tener múltiples variaciones de un solo diseño (para orientaciones de pantalla horizontal o vertical), dibujable (para diferentes densidades de píxeles) y cadena (para diferentes locales), también puede tener versiones diurnas y nocturnas de sus colores y dibujos. Los especificadores son "-night" y "-notnight", pero es probable que desee usar "-night" o nada, haciendo que su versión de día sea la predeterminada. Por ejemplo:

 res/drawable/fancy-button-background.9.png res/drawable-night/fancy-button-background.9.png 

Android debe ser capaz de cambiar el modo día / noche de forma automática, pero los detalles sobre cómo y cuando eso sucede son un poco poco claro para mí. Para cambiar el modo usted mismo, puede usar UiModeManager#setNightMode() . Sólo asegúrese de activar el modo de coche primero, utilizando enableCarMode(0) .

  • Gradle Android Maven Plugin no crea el archivo pom automáticamente
  • ¿Qué significa '->' (flecha) en el gráfico de dependencia del gradle?
  • ActionBar ERROR: Navegación de modo de lista no visible después de usar SearchView
  • Nueva API de servicios de Google Play, conexión a través de actividades
  • Fragment y FragmentList no muestra Android Studio
  • Jmdns registra en la interfaz IPv4, pero transmite IPv6
  • Android SimpleDateFormat, cómo usarlo?
  • ¿Qué tipo de formatos de imagen debo utilizar en una aplicación de Android?
  • Vida útil de los objetos en Java vs .Net
  • Convertir una cadena en una clase de actividad
  • OnClickListener no se puede resolver a un tipo (Eclipse)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.