2011-06-16 13 views
10

मुझे वर्तमान में पूर्णस्क्रीन मोड में TYPE_SYSTEM_ALERT विंडो प्रदर्शित करने में कठिनाई हो रही है। मैं स्टेटस बार के शीर्ष पर, किसी सेवा से बनाए गए ओवरले व्यू के लिए ऐसा करना चाहता हूं लेकिन इसे छुपाए बिना।एक पूर्णस्क्रीन TYPE_SYSTEM_ALERT विंडो कैसे प्रदर्शित करें?

हालांकि, मैं जो खिड़की बना रहा हूं उसके लेआउट पैराम में FLAG_FULLSCREEN ध्वज डालने से काम नहीं लगता है। मुझे STATUS_BAR और EXPAND_STATUS_BAR अनुमतियां मिलीं लेकिन मुझे नहीं पता कि उनका उपयोग कैसे किया जाए।

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
      WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      PixelFormat.TRANSLUCENT); 

    params.gravity = Gravity.RIGHT | Gravity.TOP; 

    mWindowManager.addView(mOverlayView, params); 

कोई भी विचार:

यहाँ LayoutParams कर रहे हैं?

धन्यवाद

+0

मैं किसी भी एप्लिकेशन पर एक तस्वीर-इन-पिक्चर वीडियो स्ट्रीम प्रस्तुत करने के लिए एक समान तकनीक का उपयोग कर रहा हूं। हालांकि, आपकी विधि के साथ किए गए दृश्य की अद्यतन दर इसके नीचे के विचारों की अद्यतन दर से जुड़ी हुई प्रतीत होती है। क्या आपको पता है कि अपडेट दरों को कम करने और पारदर्शी ओवरले की अद्यतन दर को अधिकतम करने का कोई तरीका है या नहीं? – user48956

उत्तर

17

मुझे कुछ और करने की कोशिश करते समय समाधान मिला!

आदेश FLAG_LAYOUT_IN_SCREEN झंडा और न FLAG_LAYOUT_FULLSCREEN ध्वज में जोड़ना चाहिए हर दूसरे विंडो के शीर्ष पर और स्थिति पट्टी के शीर्ष पर एक TYPE_SYSTEM_ALERT खिड़की है करने के लिए

:

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
     WindowManager.LayoutParams.WRAP_CONTENT, 
     WindowManager.LayoutParams.WRAP_CONTENT, 
     WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
     WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, 
     PixelFormat.TRANSLUCENT); 

mWindowManager.addView(mOverlayView, params); 
+1

स्टेटस बार अभी भी खींचा जा सकता है। मैंने पिक्सेलफॉर्मेट को OPAQUE में बदल दिया ताकि मैं नया दृश्य देख सकूं और यह स्टेटस बार को कवर करता है, हालांकि जब मैं स्क्रीन के शीर्ष से नीचे स्वाइप करता हूं तो स्थिति अभी भी फैली हुई है और क्लिक करने योग्य है। कोई विचार? – MindWire

+0

बहुत उपयोगी! मैं एक नकली कर्सर बनाने का एक तरीका ढूंढ रहा था, जैसे विंडोज मोबाइल पर संभव था, और आपकी मदद के लिए धन्यवाद, मेरे पास – radhoo

+1

स्टेटस बार के लिए काम करता है। कोई विचार यह है कि इसे नेविगेशन बार के शीर्ष पर कैसे बनाया जाए? – AnAurelian

4

यह काम नहीं करता है अब और में आइसक्रीम सैंडविच। स्टेटस बार में TYPE_SYSTEM_ALERT विंडो शामिल है। लेकिन TYPE_SYSTEM_OVERLAY अभी भी ठीक काम करता है।

+1

ओह कोर्स यह एक समस्या है क्योंकि ओवरले मोशनवेन्ट्स को उसी तरह स्वीकार नहीं करते हैं, केवल WATCH_TOUCH_OUTSIDE ध्वज के साथ, और सभी घटनाओं में ACTION_OUTSIDE की कार्रवाई होगी। – Tom

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