2011-10-06 7 views
5

एंड्रॉइड के साथ पूर्ण स्क्रीन से पूर्ण स्क्रीन तक नहीं जा रहा है ठीक है। हालांकि, मेरी पूर्ण स्क्रीन गतिविधि (एक पूर्ण स्क्रीन वीडियो प्लेयर) से लौटने पर, गतिविधि बार-बार डाउन करने में पॉप हो जाती है क्योंकि स्टेटस बार एनिमेट हो जाता है। ऐसा लगता है कि फिर से शुरू होने वाली गतिविधि पूर्ण स्क्रीन मोड से एनिमेटेड है लेकिन स्टेटस बार के साथ वहां वास्तविक गतिविधि को चित्रित किया जा रहा है जैसे कि यह गायब था।पूर्ण स्क्रीन से पूर्ण स्क्रीन तक स्विचिंग पॉप/स्लाइड

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

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

ऐसा लगता है नीचे एनिमेट से स्थिति पट्टी रखने के लिए कोई रास्ता नहीं है कि वहाँ और/या वहां स्टेटस बार के बिना पहली बार ड्राइंग से सामग्री दृश्य से और फिर इसे फिर से दिखाए जाने के बाद समायोजित करना।

किसी के पास इस पर कोई विचार है? मुझे यकीन नहीं है कि इसे बदलने का कोई तरीका है या नहीं और यह एंड्रॉइड का व्यवहार है।

अग्रिम धन्यवाद।

उत्तर

2

आपको कुछ और झंडे की आवश्यकता है: FLAG_LAYOUT_IN_SCREEN और FLAG_LAYOUT_NO_LIMITS।

http://nubinewsblog.blogspot.com/2009/11/smooth-full-screen-transition.html देखें।

+0

यह दुर्भाग्यपूर्ण है कि समाधान को पैडिंग की आवश्यकता है लेकिन यह काम करता है। धन्यवाद। – mhradek

1

गतिविधि लेआउट की जड़ को ध्यान में रखते जोड़ने

एंड्रॉयड: paddingTop = "25dp"

गतिविधि के onCreate में, setContentView() से पहले जोड़ने

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 
2
private void toggleFullscreen(boolean fullscreen) 
{ 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    if (fullscreen) 
    { 
     attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    else 
    { 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    getWindow().setAttributes(attrs); 
} 

इसका उपयोग करें यह निश्चित रूप से

काम करेगा
0

मैं इसे दो चरणों में प्राप्त करने में सक्षम था।

  1. उपयोग Theme.AppCompat.Light.NoActionBar गतिविधि के लिए मेरे शैलियों जो मैं पूर्ण स्क्रीन के रूप में दिखाना चाहते हैं। ।

  2. उपयोग गतिविधि के onCreate(Bundle savedInstanceState) विधि में नीचे दिए गए कोड WindowManager.LayoutParams = GetWindow() गुण getAttributes(); attributes.flags | = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; getWindow()। SetAttributes (विशेषताएँ);

उम्मीद है कि इससे मदद मिलती है। मुबारक कोडिंग :)

1
बाद

मेरे समाधान है:

दिखाएँ सिस्टम स्थिति पट्टी से पहले पूर्ण स्क्रीन गतिविधि

@Override 
public void onBackPressed() { 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

    mUIHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      MyFullScreenActivity.super.onBackPressed(); 
     } 
    }); 
} 
+0

यह समाधान मेरे लिए अधिक उपयोगी था क्योंकि इससे मूल गतिविधि को इसके लेआउट पैडिंग को समायोजित करने का कारण नहीं था। –

0

मैं नहीं जानता कि खत्म करता है, तो यह आपके लिए काम करेगा लेकिन यह के लिए काम किया मुझे। सेट पूर्ण स्क्रीन गतिविधि:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
setContentView(R.layout.my_screen); 

पूर्ण स्क्रीन बंद कर देते हैं:

private void setFullscreen(boolean fullscreen) { 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    if (fullscreen) { 
     attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
     attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
     attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
    } 
    else { 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
    } 
    getWindow().setAttributes(attrs); 
} 

super.onCreate(...) अपनी गतिविधि के अंदर से पहले इस कॉल:

WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
getWindow().setAttributes(attrs); 
startActivity(new Intent(getBaseContext(),NewActivity.class)); 
finish(); 
1

यहाँ इस समस्या को खत्म करने के लिए उपयुक्त तरीका है।