मैं अपने एंड्रॉइड ऐप के लिए "रोशनी आउट" मोड स्थापित कर रहा हूं जब यह हालिया फोन और टैबलेट पर चल रहा है। मेरी ऑनक्रेट() विधि में, मैंने जोड़ा:रीस्टारेट्स पर "रोशनी-आउट" मोड (View.setSystemUiVisibility) को बनाए रखना
View rootView = getWindow().getDecorView();
rootView.setSystemUiVisibility(View.STATUS_BAR_HIDDEN); // aka View.SYSTEM_UI_FLAG_LOW_PROFILE
यह बेहतर काम करता है जैसा मैंने सोचा था। मेरे एंड्रॉइड 3.2 टैबलेट पर स्टेटस बार कम प्रोफाइल मोड में शुरू होता है (बार के सभी बटन डॉट्स के साथ बदल दिए जाते हैं)। यदि मैं बार पर बटन से इंटरैक्ट करता हूं तो यह सामान्य हो जाएगा, और फिर बाद में कम प्रोफ़ाइल मोड पर वापस जाएं (उदा।, अगर मैं स्टेटस बार से कॉन्फ़िगर/नोटिफिकेशन विंडो देखता हूं)। तो ऐसा लगता है कि यूआई को सीधे छिपाने के लिए "कमांड" की तुलना में यह मेरे ऐप की एक संपत्ति है।
हालांकि दो कोने के मामले हैं जिन्हें संभाला नहीं जाता है। सबसे पहले, यदि कोई उपयोगकर्ता किसी भी बिंदु को मारने के बिना स्टेटस बार को टैप करता है, तो बार सक्रिय हो जाता है। जब तक उपयोगकर्ता वास्तव में बार पर कुछ के साथ इंटरैक्ट नहीं करता है, तब तक यह कभी भी कम प्रोफ़ाइल मोड पर वापस नहीं जाता है (उदाहरण के लिए, नोटिफिकेशन को देखता है या स्क्रीनशॉट लेता है)। इसलिए, यदि वे मेरे ऐप के साथ बातचीत करने के लिए वापस जाते हैं, तो स्टेटस बार अब कम प्रोफ़ाइल मोड में नहीं है। (गैलरी ऐप में यह समस्या भी प्रतीत होती है, तो शायद यह सिर्फ मुझे नहीं।) दूसरा कोने केस लॉक स्क्रीन से फिर से शुरू होता है। यदि मैं टैबलेट को लॉक करने के लिए पावर बटन टैप करता हूं, तो उसे अनलॉक करें और ऐप फिर से शुरू करें, स्टेटस बार पूरी तरह से दिखाई दे रहा है (और इसके साथ बातचीत करने से कुछ भी नहीं बदला जाता है)। (गैलरी ऐप में यह समस्या नहीं है।)
कुछ ब्लॉग पोस्ट सुझाव देते हैं कि मैं सिस्टम UI दृश्यता परिवर्तनों को सुनने के लिए एक हैंडलर सेट कर सकता हूं और फिर दृश्यमान होने पर यूआई को फिर से छुपा सकता हूं। इस तरह:
rootView.setOnSystemUiVisibilityChangeListener(
new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if (visibility == View.STATUS_BAR_VISIBLE) {
game.flagUIIsVisible();
}
}
});
मेरे मामले में, game
वस्तु पर विधि सिर्फ सेट एक ध्वज यूआई कह अदृश्य हो गया। बाद में, यदि मेरे ऐप के अंदर कोई स्पर्श ईवेंट है (उन्हें उसी game
ऑब्जेक्ट द्वारा नियंत्रित किया जाता है), और यह ध्वज सेट है, तो मैं फिर से STATUS_BAR_HIDDEN कॉल का आह्वान करता हूं।
हालांकि, इन कॉलबैक के साथ यूआई पर कोई दृश्यता प्रभाव नहीं है। मैं देख सकता हूं कि कुछ लॉग संदेशों से दाएं हैंडलर को बुलाया जा रहा है, और मैं देख सकता हूं कि श्रोता को बुलाया जा रहा है।
मैंने अपने onResume
पथ में STATUS_BAR_HIDDEN कॉल का आह्वान करने का भी प्रयास किया, लेकिन इससे कोई फर्क नहीं पड़ता।
मैं जानकारी की तलाश में हूं कि यह कुछ प्रकार की ज्ञात बग है, या गैलरी ऐप क्या कर रहा है इसके लिए संकेत (यह कुछ अलग तरीके से कर रहा है)। या कोशिश करने के लिए अन्य एपीआई के सुझाव (या अन्य विवरण जो प्रासंगिक हो सकते हैं)।
मैं libGDX का उपयोग कर रहा हूं, और मेरे ऐप में केवल एक दृश्य है, इसलिए यह बहुत आसान है। दृश्य libGDX द्वारा शीर्षक के बिना पूर्णस्क्रीन होने के लिए भी सेटअप है। मुझे अपने लक्ष्य में एसडीकेवर्सन 15 पर सेट किया गया है।
+1 के साथ, यह मेरा समस्या तय भी: डी – Houssni