मैं एक पूर्ण स्क्रीन ओवरले बनाने के लिए प्रसिद्ध TYPE_SYSTEM_OVERLAY
विधि का उपयोग कर रहा हूं जो हमेशा अन्य विचारों के शीर्ष पर होता है।स्थिति बार दृश्यता का पता लगाएं/TYPE_SYSTEM_OVERLAY स्वचालित रूप से आकार बदल नहीं रहा
एक Moto Atrix2 API15
पर और 17
के माध्यम से API 10
से प्रत्येक AVD
ओवरले दृश्य स्वचालित रूप से आकार बदलता है के लिए (खड़ी फैलता) जब स्थिति पट्टी दूसरे एप्लिकेशन द्वारा छिपा हुआ है। ओवरले सभी अन्य विचारों के "शीर्ष पर बने" प्रतीत होता है, जैसा कि मुझे लगता है कि इसे करना चाहिए। जब स्टेटस बार फिर से देखा जाता है, तो ओवरले स्वचालित रूप से इसके आकार को कम कर देता है (कम लंबवत पिक्सेल, मूल रूप से स्टेटस बार की ऊंचाई घटाकर)।
यह वांछित व्यवहार है और सोचने के लिए इस अपवाद या यह (मोटोरोला) कई अलग अलग emulators पर और साथ ही कम से कम एक उपकरण निर्माता काम कर रहा है, शायद अधिक की वजह से दोषपूर्ण व्यवहार नहीं है इच्छुक हूँ, लेकिन मैं डॉन , ओवरले स्वतः आकार बदलने नहीं करता है (अंतरिक्ष जहां स्थिति पट्टी एक बार भरने) जब स्थिति पट्टी दूसरे एप्लिकेशन द्वारा छिपा हुआ है एक Samsung GS2 (API15)
& भी Kindle Fire (API10?)
पर परीक्षण पर: 'टी addtl devices.
समस्या की पहुंच है (पूर्ण स्क्रीन ऐप के पीछे स्टेटस बार)। इन उपकरणों पर, दृश्य के बाद पहली बार मुझे दृश्य के लिए ऑनसाइंडेड ओवरराइड से कोई और घटना नहीं मिलती है।
params = new WindowManager.LayoutParams(
1, WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSPARENT);
wm.addView(sizeLayout, params);
sizeLayout onSizeChanged ओवरराइड है:
यहाँ उचित कोड है।
मैंने लगभग हर windowmanager
layoutparam
के साथ खेला है, मैं SYSTEM_ALERT, FLAG_LAYOUT_IN_SCREEN इत्यादि सहित पा सकता हूं, मैं तब तक सो नहीं पाऊंगा जब तक कि मैं इसे समझ नहीं पाता!
संपादित 11/30/12: मैं @deviant से मिला: https://stackoverflow.com/a/9195733/1851478 जो मैं मूल रूप से क्या कर रहा है, लेकिन समस्या को स्वचालित रूप से system_overlay आकार बदलने नहीं कुछ उपकरणों के साथ रहता है। शायद मुझे एक बग उठाना चाहिए।
अधिक जानकारी: अगर मैं दृश्य वृक्ष के शीर्ष पर एक पूर्ण स्क्रीन ऐप के दौरान एक रेड्रो (या यहां तक कि केवल ओवरले ऐप लोड करता हूं) को मजबूर करता हूं, तो मेरा ओवरले अभी भी उस स्थिति को आकर्षित नहीं करता है जो स्टेटस बार सामान्य रूप से लेता है अप (भले ही स्टेटस बार ड्रॉ के समय में न देखे), ऐसा लगता है जैसे ओवरले को पूर्ण स्क्रीन के शीर्ष पर "ओवरलेड" नहीं किया गया है (और मैंने दोनों को बनाया और परीक्षण किया है पूर्ण स्क्रीन ऐप्स को पूर्ण स्क्रीन बनाने के लिए विभिन्न विधियों का उपयोग करके)। इन उपकरणों पर, ओवरसले को स्टेटस बार पर खींचने का एकमात्र तरीका (भले ही स्टेटस बार देखने में न हो) फ्लैग FLAG_LAYOUT_IN_SCREEN
का उपयोग करना है, लेकिन फिर लेआउट का आकार कभी भी नहीं बदलता है, हमेशा पूर्ण स्क्रीन होता है, और इस प्रकार मूल समस्या पर वापस क्यों यह कुछ उपकरणों पर काम करता है लेकिन दूसरों को नहीं।
संपादित 12/12/12: तो मैं इस पर आगे कोई भी भाग्य नहीं पड़ा है, और मैं विचारों पर getLocalVisibleRect उपयोग करने का प्रयास किया था, लेकिन दुर्भाग्य से बाद से मेरे ऐप SystemUI का स्वामी नहीं है यह कर सकते हैं विचार पता नहीं है कि ओवरले के नीचे क्या है। मुझे लगता है कि कस्टम रोम के साथ मैं ऐसा कर सकता हूं, लेकिन मुझे रूट के बिना समाधान की आवश्यकता है।
मुझे लगता है कि बाजार में अन्य ऐप्स को ऊपर सूचीबद्ध गैर-काम करने वाले फ़ोनों पर स्टेटस बार का पता लगाने में एक ही समस्या है। उदाहरण: कूल टूल, ओमेगा स्टेटसबार & स्टेटस बार +। बाउंटी उठाया।
संपादित करें 12/19/12 चित्र जोड़े गए। ध्यान दें कि एक काम करने वाले डिवाइस पर भूरे रंग का क्षेत्र काला क्षेत्र (किसी भी ऐप जो वर्तमान में पूर्ण स्क्रीन है) को "कवर" करता है, काला क्षेत्र वास्तव में पूरी स्क्रीन को कवर करता है, मैं सिर्फ अपने ओवरले के रूप में ग्रे क्षेत्र दिखा रहा हूं, भले ही यह भी हो पूर्ण स्क्रीन (कार्यक्षेत्र/गैर-कार्य करने वाले डिवाइस के आधार पर स्थिति पट्टी की ऊंचाई या प्लस की ऊंचाई और चाहे वह दृश्य में है या नहीं)।
क्या आप कृपया आवश्यक व्यवहार के स्क्रीन शॉट्स और आप क्या प्राप्त कर रहे हैं? –
@ एनीस तस्वीरें जोड़ा गया। – logray
क्या आपने पूर्ण स्क्रीन पर जाने की कोशिश की है? अपना दृश्य जोड़ने से पहले प्रयास करें: // पूर्ण स्क्रीन विंडोमैनेजर। LayoutParams attrs = mActivity.getWindow()। getAttributes(); attrs.flags | = WindowManager.LayoutParams.FLAG_FULLSCREEN; mActivity.getWindow()। SetAttributes (attrs); –