जवाबों:
आप इसे प्रोग्रामेटिक रूप से कर सकते हैं:
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"/>
@android:style/Theme.Holo.Light.NoActionBar.Fullscreen
AppCompatActivity
, तो आपको requestWindowFeature
पहले डालने की आवश्यकता है super.onCreate
। अन्यथा, आपको मिलेगा:android.util.AndroidRuntimeException: requestFeature() must be called before adding content
किटकैट में इमर्सिव फुल-स्क्रीन मोड नामक एक तकनीक उपलब्ध है ।
यदि आप विषय का उपयोग नहीं करना चाहते @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>
में 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);
}
यदि आपका AppCompat और ActionBarActivity का उपयोग कर रहे हैं, तो इसका उपयोग करें
getSupportActionBar().hide();
इसके साथ सावधान रहें
requestWindowFeature(Window.FEATURE_NO_TITLE);
यदि आप कार्रवाई पट्टी को अनुसरण के रूप में सेट करने के लिए किसी भी विधि का उपयोग कर रहे हैं:
getSupportActionBar().setHomeButtonEnabled(true);
यह एक शून्य सूचक अपवाद का कारण होगा।
से 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" />
एंड्रॉइड स्टूडियो (वर्तमान संस्करण 2.2.2 वर्तमान में) का उपयोग करके एक फुलस्क्रीन गतिविधि जोड़ना बहुत आसान है।
चरण देखें:
किया हुआ!
अब आपके पास एक फुलस्क्रीन गतिविधि आसानी से हो गई है (जावा वर्ग और गतिविधि लेआउट देखें कि चीजें कैसे काम करती हैं)!
AppCompact ... style.xml का उपयोग करने वालों के लिए
<style name="Xlogo" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
फिर अपने घोषणा पत्र में नाम डालें ...
सबसे पहले आपको नीचे "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);
}
}
यह आपकी फुलस्क्रीन गतिविधि में एक्शनबार / टूलबार छिपाएगा और स्टेटसबार भी देगा
AndroidManifest.xml
<activity ...
android:theme="@style/FullScreenTheme"
>
</activity>
छिपाने के लिए 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)
...
}
}
छिपाने के लिए 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.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);
?
पूर्ण इमर्सिव दिखाएं:
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);
}
मैं @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"
पहले इसके बजाय उपयोग करना था । इसलिए मैंने सिर्फ उन दोनों का उपयोग किया जो मुझे उस मामले में सुनिश्चित करने के लिए उपयोग किए गए थे, जिसे मुझे बाद में एक नए एंड्रॉइड वर्जन में पोर्ट करना है।
यहाँ एक उदाहरण कोड है। आप विशिष्ट भागों को छिपाने / दिखाने के लिए झंडे को चालू / बंद कर सकते हैं।
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);
}
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) }
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 );
}
खिड़की ने फिर से सही ढंग से आकार दिया, और स्थिति पट्टी ने उस घटना की परवाह किए बिना फिर से प्रकट नहीं किया जिसने इसे चालू किया।
@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);
}
}
स्टाइल के अंदर। 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>
इसने मेरे लिए काम किया। आशा है कि यह आपकी मदद करेगा।
कोटलिन के साथ यह मेरे द्वारा किया गया तरीका है:
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">
इसने मेरे लिए काम किया।
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);
}
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();
}
बिना किसी सफलता के बहुत समय के बाद मैं अपने स्वयं के समाधान के साथ आया जो एक अन्य डेवलपर के साथ समान है। तो अगर किसी को उसकी जरूरत है। मेरी समस्या यह थी कि सिस्टम नेविगेशन बार कॉल करने के बाद छिपा नहीं था। इसके अलावा मेरे मामले में मुझे परिदृश्य की आवश्यकता थी, इसलिए केवल मामले में उस पंक्ति और उस सभी पर टिप्पणी करें। सबसे पहले स्टाइल बनाएं
<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>
उम्मीद है इससे आपको मदद मिलेगी
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>
एक खाली गतिविधि बनाएं और इसमें दो लाइनें जोड़ें 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);
}
...
}
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 में पूर्ण स्क्रीन देख सकते हैं
अपनी गतिविधि को पूरा करने के लिए यह करें:
// 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()
:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
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()
एंड्रॉइड 10 पर, मेरे लिए किसी ने काम नहीं किया।
लेकिन मैंने पूरी तरह से ठीक काम किया (oncreate में पहली पंक्ति):
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE;
decorView.setSystemUiVisibility(uiOptions);
setContentView(....);
if (getSupportActionBar() != null) {
getSupportActionBar().hide();
}
का आनंद लें :)
पायदान या कटआउट क्षेत्र के माध्यम से सामग्री प्रदर्शित करने के लिए। यह डॉक्स से मदद कर सकता है:
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>