Android में फुलस्क्रीन गतिविधि?


605

मैं एक गतिविधि को पूर्ण स्क्रीन कैसे बनाऊँ? मेरा मतलब अधिसूचना बार के बिना है। कोई विचार?

जवाबों:


1050

आप इसे प्रोग्रामेटिक रूप से कर सकते हैं:

public class ActivityName extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // remove title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}

या आप इसे अपनी AndroidManifest.xmlफ़ाइल के माध्यम से कर सकते हैं :

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

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

यदि आप AppCompatActivity का उपयोग कर रहे हैं तो आपको नई थीम जोड़ने की आवश्यकता है

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

और फिर इसका उपयोग करें।

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"/>

धन्यवाद https://stackoverflow.com/a/25365193/1646479


65
सिर्फ android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" मैनिफ़ेस्ट पर आपकी गतिविधि पर विशेषता पर्याप्त है। धन्यवाद :)
प्रवीण

19
यदि आपका ऐप किसी अन्य थीम का उपयोग करता है, तो संबंधित विषय नाम जैसे Eg for White विषय @android:style/Theme.Holo.Light.NoActionBar.Fullscreen
ankitjaininfo

5
प्रकट में थीम सेट करें लॉन्च पर एक काली स्क्रीन का कारण बनता है, इसे कोड में करना बेहतर होता है।
aurelien_lepage

4
अगर आप ActionBar का उपयोग कर रहे हैं और बस नहीं चाहते हैं कि कोई TitleBar लाइन नहीं हटाएं 'requestWindowFeature ()' क्योंकि यह NullPointer का कारण
बनेगा

3
यदि आप उपयोग कर रहे हैं AppCompatActivity, तो आपको requestWindowFeatureपहले डालने की आवश्यकता है super.onCreate। अन्यथा, आपको मिलेगा:android.util.AndroidRuntimeException: requestFeature() must be called before adding content
स्लाव

128

किटकैट में इमर्सिव फुल-स्क्रीन मोड नामक एक तकनीक उपलब्ध है । इमर्सिव फुल-स्क्रीन मोड डेमो

उदाहरण


5
बस ध्यान रखें कि "रिमाइंडर बबल" को पहली बार प्रदर्शित किया जाएगा जब आपका ऐप इमर्सिव मोड में प्रवेश करेगा। यह कुछ गतिविधियों के लिए ठीक है, लेकिन उदाहरण के लिए यदि आप स्प्लैश स्क्रीन कर रहे हैं, तो नहीं।
22

स्पिनरों का उपयोग करते समय टूट जाता है
वीवीकेएच

केवल नीचे के नेविगेशन बार को छिपाना चाहते हैं न कि स्टेटस बार को। यह करना संभव है?
PvDev

76

यदि आप विषय का उपयोग नहीं करना चाहते @android:style/Theme.NoTitleBar.Fullscreenहैं क्योंकि आप पहले से ही स्वयं के विषय का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं android:windowFullscreen

AndroidManifest.xml में:

<activity
  android:name=".ui.activity.MyActivity"
  android:theme="@style/MyTheme">
</activity>

स्टाइल में। Xml:

<style name="MyTheme"  parent="your parent theme">
  <item name="android:windowNoTitle">true</item>
  <item name="android:windowFullscreen">true</item> 
</style>

माता-पिता को अपने मूल विषय के रूप में जोड़ें
सौरभ भंडारी

आपको <item name = "windowActionBar"> false </ आइटम> को भी जगह देने की आवश्यकता है
htafoya

52

में AndroidManifest.xml फ़ाइल:

<activity
    android:name=".Launch"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <!-- This line is important -->

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>  

या जावा कोड में:

protected void onCreate(Bundle savedInstanceState){
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

2
यदि आप एक कोड जावा में प्रोग्राम के रूप में है कि बात करने के लिए जोड़ना होगा
डॉ एंड्रो

2
requestWindowFeature (Window.FEATURE_NO_TITLE); getWindow ()। setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
INFInite PosSibiLitiEs

केवल नीचे के नेविगेशन बार को छिपाना चाहते हैं न कि स्टेटस बार को। यह करना संभव है?
PvDev


24

इसके साथ सावधान रहें

requestWindowFeature(Window.FEATURE_NO_TITLE);

यदि आप कार्रवाई पट्टी को अनुसरण के रूप में सेट करने के लिए किसी भी विधि का उपयोग कर रहे हैं:

getSupportActionBar().setHomeButtonEnabled(true);

यह एक शून्य सूचक अपवाद का कारण होगा।


कारण यह है कि आप एक्शन बार को समायोजित कर रहे हैं, जिसे रिसाइज़ कोड छिपाने की कोशिश कर रहा है!
एंडी

22

से appcompat के साथ यह कोशिश करो style.xml। यह सभी प्लेटफार्मों के लिए समर्थन प्रदान करता है।

<!-- Application theme. -->
<style name="AppTheme.FullScreen" parent="AppTheme">
    <item name="android:windowFullscreen">true</item>
</style>


<!-- Application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar" />

अच्छा और आसान उपाय। Newbies के लिए, इस विषय को AndroidManifest.xml में गतिविधि या एप्लिकेशन टैग में जोड़ें: android: theme = "@ style / AppTheme.FullScreen"
Leos Literak

1
केवल नीचे के नेविगेशन बार को छिपाना चाहते हैं न कि स्टेटस बार को। यह करना संभव है?
PvDev

13

एंड्रॉइड स्टूडियो (वर्तमान संस्करण 2.2.2 वर्तमान में) का उपयोग करके एक फुलस्क्रीन गतिविधि जोड़ना बहुत आसान है।

चरण देखें:

  1. अपने जावा मुख्य पैकेज पर राइट क्लिक करें> "नया"> "गतिविधि" चुनें> फिर, "फुलस्क्रीन गतिविधि" पर क्लिक करें।

पहला कदम

  1. गतिविधि को अनुकूलित करें ("गतिविधि का नाम", "लेआउट नाम" और इसी तरह) और "खत्म" पर क्लिक करें।

दूसरा चरण

किया हुआ!

अब आपके पास एक फुलस्क्रीन गतिविधि आसानी से हो गई है (जावा वर्ग और गतिविधि लेआउट देखें कि चीजें कैसे काम करती हैं)!


8

AppCompact ... style.xml का उपयोग करने वालों के लिए

 <style name="Xlogo" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
</style>

फिर अपने घोषणा पत्र में नाम डालें ...


7

सबसे पहले आपको नीचे "NoActionBar" के साथ ऐप थीम सेट करना होगा

<!-- Application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar" />

फिर अपनी पूर्णस्क्रीन गतिविधि में इन पंक्तियों को जोड़ें।

public class MainActiviy extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                  WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}

यह आपकी फुलस्क्रीन गतिविधि में एक्शनबार / टूलबार छिपाएगा और स्टेटसबार भी देगा


7

AndroidManifest.xml

<activity ...
          android:theme="@style/FullScreenTheme"
    >
</activity>

I. आपका मुख्य ऐप थीम Theme.AppCompat.Light.DarkActionBar है

छिपाने के लिए ActionBar / StatusBar
style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
</style>

<style name="FullScreenTheme" parent="AppTheme">
    <!--this property will help hide the ActionBar-->
    <item name="windowNoTitle">true</item>
    <!--currently, I don't know why we need this property since use windowNoTitle only already help hide actionbar. I use it because it is used inside Theme.AppCompat.Light.NoActionBar (you can check Theme.AppCompat.Light.NoActionBar code). I think there are some missing case that I don't know-->
    <item name="windowActionBar">false</item>
    <!--this property is used for hiding StatusBar-->
    <item name="android:windowFullscreen">true</item>
</style>

सिस्टम नेविगेशन बार को छिपाने के लिए

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        setContentView(R.layout.activity_main)
        ...
    }
 }

द्वितीय। आपका मुख्य ऐप थीम Theme.AppCompat.Light.NoActionBar है

छिपाने के लिए ActionBar / StatusBar
style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
</style>

<style name="FullScreenTheme" parent="AppTheme">
    <!--don't need any config for hide ActionBar because our apptheme is NoActionBar-->
    <!--this property is use for hide StatusBar-->
    <item name="android:windowFullscreen">true</item> // 
</style>

सिस्टम नेविगेशन बार को छिपाने के लिए

इसी तरह Theme.AppCompat.Light.DarkActionBar

डेमो


धन्यवाद। Android 5.0.1 पर परीक्षण किया गया।
कूलमाइंड

@CoolMind आपसे फिर मिले। आपके संपादन के लिए धन्यवाद
फान वान

6

उत्तर के लिए धन्यवाद @ क्रिसियन मैं त्रुटि हो रही थी

android.util.AndroidRuntimeException: requestFeature () सामग्री जोड़ने से पहले कॉल किया जाना चाहिए

मैंने इसका उपयोग करके हल किया

@Override
protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_login);

    -----
    -----
}

क्या हमें requestWindowFeature(Window.FEATURE_NO_TITLE);पहले सेट करना चाहिए super.onCreate(savedInstanceState);?
CoolMind

4

पूर्ण इमर्सिव दिखाएं:

private void askForFullScreen()
    {
        getActivity().getWindow().getDecorView().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);
    }

पूर्ण इमर्सिव मोड से बाहर निकलें:

 private void moveOutOfFullScreen() {
        getActivity().getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }

3

मैं @android: style / Theme.NoTitleBar.Fullscreen का उपयोग करने के बजाय अपनी खुद की थीम का उपयोग करना चाहता था। लेकिन यह यहाँ पर कुछ पोस्ट के रूप में काम नहीं कर रहा था, इसलिए मैंने इसका पता लगाने के लिए कुछ ट्विकिंग की।

AndroidManifest.xml में:

<activity
    android:name=".ui.activity.MyActivity"
    android:theme="@style/MyTheme">
</activity>

स्टाइल में। Xml:

<style name="MyTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
</style>

नोट: मेरे मामले में मुझे ठीक से काम name="windowActionBar"करने से name="android:windowActionBar"पहले इसके बजाय उपयोग करना था । इसलिए मैंने सिर्फ उन दोनों का उपयोग किया जो मुझे उस मामले में सुनिश्चित करने के लिए उपयोग किए गए थे, जिसे मुझे बाद में एक नए एंड्रॉइड वर्जन में पोर्ट करना है।


3

यहाँ एक उदाहरण कोड है। आप विशिष्ट भागों को छिपाने / दिखाने के लिए झंडे को चालू / बंद कर सकते हैं।

यहाँ छवि विवरण दर्ज करें

public static void hideSystemUI(Activity activity) {
    View decorView = activity.getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    //| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    //| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

उसके बाद, आप डिफ़ॉल्ट स्थिति पर रीसेट करें :

यहाँ छवि विवरण दर्ज करें

public static void showSystemUI(Activity activity) {
    View decorView = activity.getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

आप उपरोक्त कार्यों को अपने से कॉल कर सकते हैं onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.course_activity);
    UiUtils.hideSystemUI(this);
}

3

KOTLIN

Google डॉक के बाद, एक आसान तरीका है:

override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus) hideSystemUI() }


private fun hideSystemUI() {
// Enables regular immersive mode.
// For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
// Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
        // Set the content to appear under the system bars so that the
        // content doesn't resize when the system bars hide and show.
        or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        // Hide the nav bar and status bar
        or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        or View.SYSTEM_UI_FLAG_FULLSCREEN)      }


// Shows the system bars by removing all the flags
// except for the ones that make the content appear under the system bars.
private fun showSystemUI() {
window.decorView.systemUiVisibility = 
(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)       }

गूगल दस्तावेज


2

TIP: getWindow () का उपयोग करके। setLayout () आपके पूर्ण स्क्रीन डिस्प्ले को खराब कर सकता है! नोट इस विधि के लिए दस्तावेज कहते हैं:

खिड़की की चौड़ाई और ऊंचाई लेआउट मापदंडों को सेट करें ... आप उन्हें बदल सकते हैं ... एक पूर्ण मान एक खिड़की बनाने के लिए जो पूर्ण-स्क्रीन नहीं है।

http://developer.android.com/reference/android/view/Window.html#setLayout%28int,%20int%29

अपने उद्देश्यों के लिए, मैंने पाया कि मुझे अपनी पूर्ण स्क्रीन विंडो को सही ढंग से आकार देने के लिए पूर्ण मापदंडों के साथ सेटलाइट का उपयोग करना था। ज्यादातर समय, यह ठीक काम किया। यह एक onConfigurationChanged () ईवेंट द्वारा बुलाया गया था। हालाँकि, हिचकी थी। यदि उपयोगकर्ता ने ऐप से बाहर निकल दिया, तो अभिविन्यास बदल दिया, और पुन: दर्ज किया, तो इससे मेरे कोड को निकाल दिया जाएगा जिसमें setLayout () शामिल था। इस री-एंट्री टाइम विंडो के दौरान, मेरा स्टेटस बार (जिसे मैनिफ़ेस्ट द्वारा छिपाया गया था) को फिर से प्रदर्शित होने के लिए बनाया जाएगा, लेकिन किसी भी अन्य समय पर सेटआउट () इसका कारण नहीं होगा! समाधान एक अतिरिक्त setLayout () कॉल को जोड़ने के लिए था, जैसे कि कठिन मानों के साथ:

       public static void setSize( final int width, final int height ){
//DO SOME OTHER STUFF...
            instance_.getWindow().setLayout( width, height );
            // Prevent status bar re-appearance
            Handler delay = new Handler();
            delay.postDelayed( new Runnable(){ public void run() {
                instance_.getWindow().setLayout(
                    WindowManager.LayoutParams.FILL_PARENT,
                    WindowManager.LayoutParams.FILL_PARENT );
            }}, FILL_PARENT_ON_RESIZE_DELAY_MILLIS );
        }

खिड़की ने फिर से सही ढंग से आकार दिया, और स्थिति पट्टी ने उस घटना की परवाह किए बिना फिर से प्रकट नहीं किया जिसने इसे चालू किया।


2
 @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    adjustFullScreen(newConfig);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        adjustFullScreen(getResources().getConfiguration());
    }
}
private void adjustFullScreen(Configuration config) {
    final View decorView = getWindow().getDecorView();
    if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        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
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    } else {
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    }
}

2

स्टाइल के अंदर। xml ...

<!-- No action bar -->
<style name="NoActonBar" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Theme customization. -->
    <item name="colorPrimary">#000</item>
    <item name="colorPrimaryDark">#444</item>
    <item name="colorAccent">#999</item>
    <item name="android:windowFullscreen">true</item>
</style>

इसने मेरे लिए काम किया। आशा है कि यह आपकी मदद करेगा।


2

कोटलिन के साथ यह मेरे द्वारा किया गया तरीका है:

class LoginActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
        window.decorView.systemUiVisibility =
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
                View.SYSTEM_UI_FLAG_FULLSCREEN

    }
}

इमर्सिव मोड

इमर्सिव मोड उन ऐप्स के लिए अभिप्रेत है, जिसमें उपयोगकर्ता स्क्रीन के साथ भारी संपर्क करेगा। उदाहरण गेम हैं, गैलरी में चित्र देखना, या पृष्ठांकित सामग्री पढ़ना, जैसे किसी प्रस्तुति में पुस्तक या स्लाइड। इसके लिए, बस इस लाइनों को जोड़ें:

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

चिपचिपा इमर्सिव

नियमित इमर्सिव मोड में, किसी भी समय उपयोगकर्ता एक किनारे से स्वाइप करता है, सिस्टम सिस्टम बार को प्रकट करने का ध्यान रखता है - आपके ऐप को यह भी पता नहीं चलेगा कि इशारा हुआ। इसलिए यदि उपयोगकर्ता को वास्तव में प्राथमिक ऐप अनुभव के हिस्से के रूप में स्क्रीन के किनारे से स्वाइप करने की आवश्यकता हो सकती है - जैसे कि कोई गेम खेलते समय जिसमें बहुत सारे स्वाइप करने या ड्राइंग ऐप का उपयोग करने की आवश्यकता होती है - तो आपको इसके बजाय "स्टिकी" इमर्सिव मोड को सक्षम करना चाहिए ।

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

अधिक जानकारी के लिए: फुलस्क्रीन मोड सक्षम करें

अपने कीबोर्ड का उपयोग करने के मामले में, कभी-कभी ऐसा होता है कि स्थिति-निर्धारण दिखाता है जब कीबोर्ड दिखाता है। उस स्थिति में मैं आमतौर पर इसे अपनी शैली xml में जोड़ता हूं

styles.xml

<style name="FullScreen" parent="AppTheme">
    <item name="android:windowFullscreen">true</item>
</style>

और यह लाइन मेरे प्रकट करने के लिए भी

<activity
        android:name=".ui.login.LoginActivity"
        android:label="@string/title_activity_login"
        android:theme="@style/FullScreen">

धन्यवाद। एपीआई 16 और 19 की आवश्यकता है।
कूलमैन्ड

2

बस इस कोड को onCreate()विधि में पेस्ट करें

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

1

इसने मेरे लिए काम किया।

if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    } else {
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    }

1
दूसरे में निम्नलिखित का उपयोग करना बेहतर होगा: getWindow ()। GetDecorView ()। SetSystemUiVisibility (View.SYSTEM_UI_FLAG_FULLSCREEN);
प्रोटोनफ्लक्स

1
 protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_splash_screen);
    getSupportActionBar().hide();

}

1

बिना किसी सफलता के बहुत समय के बाद मैं अपने स्वयं के समाधान के साथ आया जो एक अन्य डेवलपर के साथ समान है। तो अगर किसी को उसकी जरूरत है। मेरी समस्या यह थी कि सिस्टम नेविगेशन बार कॉल करने के बाद छिपा नहीं था। इसके अलावा मेरे मामले में मुझे परिदृश्य की आवश्यकता थी, इसलिए केवल मामले में उस पंक्ति और उस सभी पर टिप्पणी करें। सबसे पहले स्टाइल बनाएं

    <style name="FullscreenTheme" parent="AppTheme">
    <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowBackground">@null</item>
    <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
    <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
</style>

यह मेरी मैनिफ़ेस्ट फ़ाइल है

<activity
        android:name=".Splash"
        android:screenOrientation="landscape"
        android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize"
        android:label="@string/app_name"
        android:theme="@style/SplashTheme">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize"
        android:screenOrientation="landscape"
        android:label="@string/app_name"
        android:theme="@style/FullscreenTheme">
    </activity>

यह मेरी स्पलश गतिविधि है

public class Splash extends Activity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 2000;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.splash_creen);

    /* New Handler to start the Menu-Activity
     * and close this Splash-Screen after some seconds.*/
    new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {
            /* Create an Intent that will start the Menu-Activity. */
            Intent mainIntent = new Intent(Splash.this,MainActivity.class);
            Splash.this.startActivity(mainIntent);
            Splash.this.finish();
        }
    }, SPLASH_DISPLAY_LENGTH);
}

}

और यह मेरी मुख्य पूर्ण स्क्रीन गतिविधि है। onSystemUiVisibilityChange thi मेथड महत्वपूर्ण है अन्यथा कॉल करने के बाद एंड्रॉइड मुख्य नेविगेशन बार रुक जाएगा और अब गायब नहीं होगा। वास्तव में परेशान करने वाली समस्या, लेकिन यह कार्य उस समस्या को हल करता है।

सार्वजनिक वर्ग MainActivity फैली AppCompatActivity {

private View mContentView;
@Override
public void onResume(){
    super.onResume();

    mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fullscreen2);
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null)
    {
        actionBar.hide();
    }
    mContentView = findViewById(R.id.fullscreen_content_text);
    mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);



    View decorView = getWindow().getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener
            (new View.OnSystemUiVisibilityChangeListener()
            {
                @Override
                public void onSystemUiVisibilityChange(int visibility)
                {
                    System.out.println("print");

                    if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
                    {
                        mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                                | View.SYSTEM_UI_FLAG_FULLSCREEN
                                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
                    }
                    else
                    {

                        mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

                        }
                }
            });

}

}

यह मेरा छप स्क्रीन लेआउट है:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView android:id="@+id/splashscreen" android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:background="@android:color/white"
        android:src="@drawable/splash"
        android:layout_gravity="center"/>
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Hello World, splash"/>
</LinearLayout>

This is my fullscreen layout
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#0099cc"
        >
        <TextView
            android:id="@+id/fullscreen_content_text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:keepScreenOn="true"
            android:text="@string/dummy_content2"
            android:textColor="#33b5e5"
            android:textSize="50sp"
            android:textStyle="bold" />

    </FrameLayout>

उम्मीद है इससे आपको मदद मिलेगी


1

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

गतिविधि:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        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
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
}

AndroidManifests:

 <activity android:name=".LoginActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_login"
            android:theme="@style/FullscreenTheme"
            ></activity>

1

एक खाली गतिविधि बनाएं और इसमें दो लाइनें जोड़ें onCreate

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // full screen activity
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getSupportActionBar().hide();

        setContentView(R.layout.activity_main);
    }
    ...
}

1

OnCreate () में setContentView के बाद इस विधि का उपयोग करें और getWindow () द्वारा विंडो ऑब्जेक्ट को पास करें ।

    public void makeActivityFullScreen(Window window){
    View decorView = window.getDecorView();
    //        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
       window.getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
    }
    decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    );
}

यह कोड notch स्क्रीन के लिए भी काम करेगा। Notch फुलस्क्रीन की जाँच करने के लिए आपको Android P की आवश्यकता होती है, लेकिन यदि आपके पास एक notch डिस्प्ले फ़ोन है, तो सेटिंग पर जाएँ -> प्रदर्शन सेटिंग -> ऐप डिस्प्ले अनुपात ---> अपने ऐप का चयन करें ---> दो विकल्प सुरक्षित होंगे प्रदर्शन और पूर्ण स्क्रीन, पूर्ण स्क्रीन का चयन करें और एप्लिकेशन को चलाने के लिए, आप android पाई पाई बिना भी notch में पूर्ण स्क्रीन देख सकते हैं


1

अपनी गतिविधि को पूरा करने के लिए यह करें:

    // add following lines before setContentView
    // to hide toolbar
                if(getSupportActionBar()!=null)
                    getSupportActionBar().hide();
    //to hide status bar
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);

यह टूलबार और स्टेटस बार को छिपा देगा।

लेकिन कुछ मामलों में, आप पारदर्शी पृष्ठभूमि के साथ स्थिति पट्टी दिखाना चाह सकते हैं, उस स्थिति में, यह करें:

// add following lines before setContentView
// to hide toolbar
if(getSupportActionBar()!=null)
   getSupportActionBar().hide();
// to make status bar transparent
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

इसके बजाय टूलबार छिपाने के लिए कुछ अन्य वैकल्पिक getSupportActionBar().hide():

  1. एप्लिकेशन थीम के माता-पिता को बदलकर टूलबार निकालें:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

  1. यदि आप टूलबार को केवल एक गतिविधि से हटाना चाहते हैं, तो प्रकट होने के लिए जाएं, गतिविधि टैग के तहत इसे जोड़ें: android:theme="@style/Theme.AppCompat.Light.NoActionBar"

कोटलिन प्रेमियों के लिए , एक्सटेंशन कार्यों का उपयोग क्यों न करें:

पहले मामले के लिए:

fun AppCompatActivity.makeItFullScreenStatusBarVisible(){
    supportActionBar?.hide()
    window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
}

और इस से पहले फोन setContentView:

makeItFullScreenStatusBarVisible()

दूसरे के लिए:

fun AppCompatActivity.makeItFullScreenStatusBarHidden(){
    supportActionBar?.hide()
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
}

और पहले इसे कॉल करें setContentView:

makeItFullScreenStatusBarHidden()

0

एंड्रॉइड 10 पर, मेरे लिए किसी ने काम नहीं किया।

लेकिन मैंने पूरी तरह से ठीक काम किया (oncreate में पहली पंक्ति):

    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE;
    decorView.setSystemUiVisibility(uiOptions);

    setContentView(....);

    if (getSupportActionBar() != null) {
        getSupportActionBar().hide();
    }

का आनंद लें :)


0

पायदान या कटआउट क्षेत्र के माध्यम से सामग्री प्रदर्शित करने के लिए। यह डॉक्स से मदद कर सकता है:

LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES - सामग्री चित्र और परिदृश्य मोड दोनों में कटआउट क्षेत्र में प्रस्तुत करती है।

मेरे लिए मुख्य बात यह थी कि यह गतिविधि शैली है:

// Important to draw through the cutouts
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> 

मेरे लिए, मैं एक छवि को इमर्सिव मोड में दिखाना चाहता था। जब मैं इसे क्लिक करता हूं, तो मैं चाहता हूं कि सिस्टम UI (स्थिति और नेविगेशन बार) दिखाएगा।

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

1- गतिविधि में, सिस्टम UI (स्थिति / नौसेना बार) दिखाने / छिपाने के लिए कुछ तरीके

private fun hideSystemUI() {
    sysUIHidden = true
    window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
            // Hide the nav bar and status bar
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // Hide nav bar
            or View.SYSTEM_UI_FLAG_FULLSCREEN // Hide status bar
            )
}


private fun showSystemUI() {
    sysUIHidden = false
    window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            // Set the content to appear under the system bars so that the
            // content doesn't resize when the system bars hide and show.
            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // layout Behind nav bar
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // layout Behind status bar
            )
}

2- अपने xml लेआउट के मूल दृश्य में इसे सुनिश्चित करें

android:fitsSystemWindows="false"

3- फुल स्क्रीन एक्टिविटी के लिए स्टाइल स्टेटस / नेविगेशन बार को दिखाए जाने पर एक अर्ध पारदर्शी पृष्ठभूमि देगा:

<style name="FullscreenTheme" parent="AppTheme">
    <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowBackground">@null</item>
    <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
    <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
    <item name="android:statusBarColor">#50000000</item>
    <item name="android:navigationBarColor">#50000000</item>
    // Important to draw behind cutouts
    <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> 
</style>

<style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
    <item name="android:background">@color/sysTransparent</item>
</style>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.