2016-07-07 8 views
6

मैं अपना एंड्रॉइड ऐप फुलस्क्रीन बनाना चाहता हूं, लेकिन केवल एक निश्चित स्क्रीन (एंड्रॉइड स्क्रीन) पर एंड्रॉइड नेविगेशन बार दिखा रहा हूं। मुझे पता है कि नेविगेशन बार को स्थायी रूप से स्क्रीन पर छिपाना खतरनाक है, लेकिन मैं जानना चाहता हूं कि यह संभव है या नहीं। मैंने अपने डिवाइस को रूट करने और एक्सपोज़ेड फ्रेमवर्क का उपयोग करने में देखा है।प्रोग्रामेटिक रूप से इमर्सिव मोड को सक्षम/अक्षम करें

क्या नेविगेशन बार, या "चिपचिपा मोड" को प्रोग्रामेटिक रूप से अक्षम करने का कोई तरीका है, और बाद में पुनः सक्षम करें?

संपादित करें: मैंने एंड्रॉइड इमर्सिव मोड को देखा है, लेकिन ऐसा लगता है कि उपयोगकर्ता ने किनारे को छूने पर नेविगेशन बार अभी भी दिखाया होगा। जब तक वे मेरी सेटिंग्स स्क्रीन पर नहीं जाते हैं, तब तक मैं नेविगेशन बार के किसी भी संकेत को हटाना चाहता हूं।

उत्तर

2

हां यह संभव है। वांछित कार्यक्षमता प्राप्त करने के लिए नीचे कोड स्निपेट का उपयोग करें।

https://developer.android.com/training/system-ui/immersive.html

संपादित करें: 1:

// This snippet hides the system bars. 
private void hideSystemUI() { 
    // Set the IMMERSIVE flag. 
    // Set the content to appear under the system bars so that the content 
    // doesn't resize when the system bars hide and show. 
    View decorView = getWindow().getDecorView(); 
    decorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 
      | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
      | View.SYSTEM_UI_FLAG_IMMERSIVE); 
} 

// This snippet shows the system bars. It does this by removing all the flags 
// except for the ones that make the content appear under the system bars. 
private void showSystemUI() { 
    View decorView = getWindow().getDecorView(); 
    decorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
} 

अधिक जानकारी के लिए नीचे दिए गए गूगल प्रलेखन उल्लेख यह स्थायी रूप से छिपाने आप कुछ इस तरह की कोशिश कर सकते हो सकता है (Hacky) करने के लिए

decorView.setOnSystemUiVisibilityChangeListener 
       (new View.OnSystemUiVisibilityChangeListener() { 
        @Override 
        public void onSystemUiVisibilityChange(int visibility) { 

          hideSystemUI(); 


        } 
       });` 
+0

आपके उत्तर के लिए धन्यवाद। मैं पोस्ट करने से पहले इसे देख रहा था लेकिन इमर्सिव मोड के साथ मेरा प्रश्न यह पंक्ति था: "उपयोगकर्ता सिस्टम बार को उस क्षेत्र के साथ एक आंतरिक स्वाइप के साथ प्रकट कर सकता है जहां सिस्टम बार सामान्य रूप से दिखाई देते हैं"। क्या यह छुपा() को ओवरराइड नहीं करेगा? मैं इसे तब तक अक्षम करना चाहता हूं जब तक कि उपयोगकर्ता मेरी सेटिंग स्क्रीन पर न जाए। – Jason

+0

हां यह करता है, वास्तव में उपयोगकर्ता को ट्यूटोरियल दिखाया जाता है जब वह पहली बार इमर्सिव मोड खोलता है। जो उसे बताता है कि नीचे स्वाइप करने से पूर्ण स्क्रीन मोड बंद हो जाएगा। –

+0

ठीक है, और मैं नहीं चाहता कि वे पूर्ण स्क्रीन मोड बंद करें * जब तक कि वे मेरी अन्य स्क्रीनों में से किसी एक पर जाएं। यही मेरा असली सवाल है। मैं उपयोगकर्ता को एक निश्चित स्क्रीन पर जाने तक पूरी तरह से नेविगेशन बार तक पहुंचने से रोकना चाहता हूं। – Jason

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