2011-09-09 27 views
5

के लिए एक लाल "रात मोड" बनाना चाहता हूं, मैं पायलटों द्वारा उपयोग के लिए एक ऐप बना रहा हूं। यह ज्यादातर TextView, EditText, Button, आदि का उपयोग करता है। दूसरे शब्दों में, बहुत ग्राफिक्स-भारी नहीं।मैं अपने एंड्रॉइड ऐप

रात में उपयोग किए जाने पर, मैं चाहता हूं कि उपयोगकर्ता "रात मोड" पर स्विच करने में सक्षम हो, जहां स्क्रीन पर सब कुछ लाल और काला है ... Google Sky Map ऐप की तरह। (यह पायलटों के लिए महत्वपूर्ण है क्योंकि लाल रंग अन्य रंगों के रूप में आंख की प्राकृतिक रात दृष्टि अनुकूलन को नष्ट नहीं करता है।)

ऐसा करने का सबसे अच्छा तरीका क्या है? मुझे ColorFilter इत्यादि जैसे एपीआई मिले, लेकिन मुझे यकीन नहीं है कि मैं इन ऐप-वाईड को कैसे लागू करूंगा।

+2

आप रात मोड के लिए एक अलग लेआउट या संसाधन प्रदान कर सकते हैं। http://developer.android.com/guide/topics/resources/providing-resources.html उदाहरण के लिए - फ़ोल्डर लेआउट-रात – PH7

+0

बनाएं क्या आपने SurfaceView को ओवरले करने और सामान्य मोड में कैनवास पारदर्शी पेंट करने का प्रयास किया है। अपनी रात मोड के लिए पेंट withe एक ColorFilter का उपयोग करें। –

+0

इस तरह की चीज शौकिया खगोलविदों के लिए भी उपयोगी है, इसी कारण से (रात दृष्टि) – Roboprog

उत्तर

2

यदि आप लेआउट के भीतर विभिन्न विचारों के रंग बदलने के बारे में बात कर रहे हैं और लेआउट की संरचना नहीं, तो मैं सुझाव दूंगा कि आप इसे शैलियों का उपयोग करके बस ऐसा करें।

यानी अपने लेआउट को बनाने वाले विभिन्न विचारों के लिए शैलियों के दो सेट परिभाषित करें - रात मोड के लिए एक सेट और एक दिन मोड के लिए। आपकी गतिविधि में, यह रात और दिन के बीच टॉगल करने के लिए आपके प्रत्येक दृश्य पर setStyle() पर कॉल करने का मामला बन जाता है।

आपकी शैलियों के लिए एक समझदार नामकरण सम्मेलन और अभिभावक योजना के साथ आना आपके जीवन को बहुत आसान बना देगा। जैसे MyText.Large बनाम MyText.Large.Night

Android developer doc on Themes and Style एक अच्छा प्रारंभिक बिंदु है।

1

दिन और रात थीम बनाना और इसे प्रोग्रामेटिक रूप से सेट करना काम करेगा। लेकिन यह आपको विभिन्न शैलियों/रंगों को निर्दिष्ट करने के लिए, अपनी शैलियों को डुप्लिकेट करने की भी आवश्यकता है।

इसके बजाय, आप एक शैली को बनाए रख सकते हैं और एंड्रॉइड के दिन/रात मोड समर्थन में निर्मित कर सकते हैं। जैसे ही आप एक लेआउट (लैंडस्केप या पोर्ट्रेट स्क्रीन ओरिएंटेशन के लिए) के कई बदलाव कर सकते हैं (अलग पिक्सेल घनत्व के लिए) और स्ट्रिंग (विभिन्न लोकेशंस के लिए), आप अपने ड्रॉबल्स और रंगों के दिन और रात संस्करण भी प्राप्त कर सकते हैं। विनिर्देशक "-राइट" और "-नोटनाइट" हैं, लेकिन शायद आप अपने दिन के संस्करण को डिफ़ॉल्ट बनाते हुए "रातोंरात" या कुछ भी नहीं उपयोग करना चाहते हैं। उदाहरण के लिए:

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

एंड्रॉयड दिन/रात मोड स्वचालित रूप से स्विच करने में सक्षम होना चाहिए, लेकिन कैसे और कब ऐसा होता है पर जानकारी के एक छोटे से मेरे लिए स्पष्ट नहीं है। मोड को स्वयं बदलने के लिए, आप UiModeManager#setNightMode() का उपयोग कर सकते हैं। enableCarMode(0) का उपयोग करके, बस सुनिश्चित करें कि कार मोड पहले सक्षम है।

संबंधित मुद्दे