2011-09-09 48 views
5

我正在創建一個供飛行員使用的應用程序。它主要使用TextView,EditText,Button等。換句話說,不是很重的圖形。我想爲我的Android應用程序創建一個紅色的「夜間模式」

在夜間使用時,我希望用戶能夠切換到「夜間模式」,屏幕上的所有內容都是紅色和黑色......就像Google Sky Map應用程序一樣。 (這對於飛行員很重要,因爲紅色不會破壞人眼的自然夜視適應性,如其他顏色一樣。)

這樣做的最佳方式是什麼?我發現了類似ColorFilter等的API,但我不確定該如何應用這些應用程序。

+2

您可以爲夜間模式提供不同的佈局或資源。 http://developer.android.com/guide/topics/resources/providing-resources.html 例如 - 創建一個文件夾佈局 - 夜間 – PH7

+0

您是否試圖覆蓋SurfaceView並在正常模式下將Canvas繪製爲透明?在ColorFilter上使用Paint進行夜間模式。 –

+0

這種事情對業餘天文學家也是有用的,出於同樣的原因(夜視) – Roboprog

回答

2

如果你只是在談論改變佈局,而不是佈局本身的結構內的各種意見的顏色,那麼我建議你只需做到這一點使用的樣式。

即定義兩組的樣式,這使得你的佈局的各種意見 - 夜間模式一組,一個用於白天模式。在您的活動中,您將在每個視圖上調用setStyle()以在夜晚和白天之間切換。

想出一個明智的命名約定和血統方案爲您的風格會讓你的生活變得更加簡單。例如MyText.Large vs MyText.Large.Night

Android developer doc on Themes and Style是一個很好的起點。

1

創建一個白天和黑夜主題,並以編程方式設置它將工作。但它也需要你複製你的樣式,只是爲了指定不同的繪圖/顏色。

相反,您可以保持一種風格,並使用Android內置的日/夜模式支持。就像你可以對單個佈局(對於橫向或縱向屏幕方向)有多種變體一樣),可繪製(對於不同的像素密度)和字符串(對於不同的區域設置),你也可以有你的繪圖和顏色的白天和黑夜版本。說明符是「-night」和「-notnight」,但是你可能想要使用「-night」或者什麼都不用,使得你的一天版本成爲默認版本。例如:

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

Android應該能夠自動切換日/夜模式,但有關如何以及何時發生的細節有點不清楚。要自己改變模式,您可以使用UiModeManager#setNightMode()。只需確保首先啓用汽車模式,使用enableCarMode(0)

相關問題