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) .

  • Análisis de datos brutos recibidos desde el dispositivo bluetooth HDP
  • Subir múltiples datos utilizando httpmime - Android
  • Cambiar el ancho y la altura de la vista personalizada en Android
  • Envío de SMS sin utilizar SmsManager de Android .. ¿Biblioteca nativa?
  • Cómo hacer una interfaz de usuario avanzada en Android?
  • Intercambio compartido de iPhone y Android de Crossplatform
  • Longitud máxima del método PutExtra de Intención? (Cierre de la fuerza)
  • Usando una contraseña de keystore vacía solía ser posible?
  • Instancia de clase abstracta con constructor oculto
  • Android: ¿Cómo crear un TextView circular?
  • El niño especificado ya tiene un padre. Debe llamar a removeView () en el primer padre del niño (Android)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.