Android의 전체 화면 활동?


답변:


1051

프로그래밍 방식으로 수행 할 수 있습니다.

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"속성만으로 충분합니다. 감사합니다 :)
Praveen

19
앱이 다른 테마를 사용하는 경우 해당 테마 이름을 사용하십시오 (예 : White 테마) @android:style/Theme.Holo.Light.NoActionBar.Fullscreen
ankitjaininfo

5
매니페스트에서 테마를 설정하면 시작시 검은 화면이 발생하므로 코드에서 실행하는 것이 좋습니다.
aurelien_lepage

4
당신은 액션 바을 사용하고 단지 어떤 제목 표시 줄은 NullPointer을 달리하게됩니다이 같은 라인`requestWindowFeature () '제거하지 원하는 경우
X.X_Mass_Developer

3
당신이 사용하는 경우 AppCompatActivity, 당신은 requestWindowFeature전에 넣어 해야 super.onCreate합니다. 그렇지 않으면 다음과 같이됩니다.android.util.AndroidRuntimeException: requestFeature() must be called before adding content
Slav

128

라는 기술이있다 몰입 전체 화면 모드 에서 사용할 수 킷캣은 . 몰입 형 전체 화면 모드 데모


5
앱이 처음으로 몰입 형 모드로 들어가면 "알림 거품"이 표시됩니다. 예를 들어 스플래시 화면을 수행하는 경우 일부 활동에는 적합합니다.
LarsH

스피너 사용시 중단
ViVekH

상태 표시 줄이 아닌 아래쪽 탐색 표시 줄 만 숨기고 싶습니다. 할 수 있습니까?
PvDev

76

@android:style/Theme.NoTitleBar.Fullscreen이미 자신 의 테마를 사용하고 있기 때문에 테마를 사용하지 않으려면을 사용할 수 있습니다 android:windowFullscreen.

AndroidManifest.xml에서 :

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

styles.xml에서 :

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

부모님을 부모님 테마로 추가
Saurabh Bhandari

<item name = "windowActionBar"> false </ item>도 배치해야합니다
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>  

또는 Java 코드에서 :

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

2
프로그래밍 방식으로 JAVA에서 코드를 추가해야합니다.
Dr. aNdRO

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

상태 표시 줄이 아닌 아래쪽 탐색 표시 줄 만 숨기고 싶습니다. 할 수 있습니까?
PvDev

32

AppCompat 및 ActionBarActivity를 사용하는 경우 이것을 사용하십시오.

getSupportActionBar().hide();


이것은 상단의 상태 표시 줄을 제거하지 않습니다
Manohar Reddy

24

조심해

requestWindowFeature(Window.FEATURE_NO_TITLE);

방법을 사용하여 작업 표시 줄을 다음과 같이 설정하는 경우 :

getSupportActionBar().setHomeButtonEnabled(true);

널 포인터 예외가 발생합니다.


크기 조정 코드가 숨기려고하는 작업 표시 줄을 조정하고 있기 때문입니다!
Andy

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" />

좋고 쉬운 해결책. 초보자의 경우, AndroidManifest.xml을의 활동 또는 응용 프로그램 태그에이 테마를 추가 : 안드로이드 : 테마를 = "스타일 / AppTheme.FullScreen @"
레오 Literak

1
상태 표시 줄이 아닌 아래쪽 탐색 표시 줄 만 숨기고 싶습니다. 할 수 있습니까?
PvDev

13

Android Studio (현재 버전은 현재 2.2.2 임)를 사용하면 전체 화면 활동을 추가하기가 매우 쉽습니다.

단계를 참조하십시오 :

  1. Java 기본 패키지를 마우스 오른쪽 단추로 클릭하고 "새로 작성"을 선택하고 "활동"을 선택한 다음 "전체 화면 활동"을 클릭하십시오.

1 단계

  1. 활동을 사용자 정의하고 ( "활동 이름", "레이아웃 이름"등) "마침"을 클릭하십시오.

2 단계

끝난!

이제 전체 화면 활동을 쉽게 만들 수 있습니다 (Java 클래스 및 활동 레이아웃을 참조하여 작동 방식을 확인하십시오).


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)
        ...
    }
 }

II. 주요 앱 테마는 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

@CoolMind가 다시 만나요. 편집 해 주셔서 감사합니다
판 반 린

6

답변 @Cristian에 감사드립니다. 오류가 발생했습니다.

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>

styles.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"했습니다. 그래서 나중에 새로운 Android 버전으로 이식 해야하는 경우 두 가지를 모두 사용했습니다.


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

코 틀린

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

힌트 : getWindow (). setLayout ()을 사용하면 전체 화면 표시를 망칠 수 있습니다! 이 방법에 대한 설명서는 다음과 같습니다.

창의 너비 및 높이 레이아웃 매개 변수를 설정하십시오. 전체 화면이 아닌 창을 만들기 위해이를 절대 값으로 변경할 수 있습니다.

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

내 목적을 위해 전체 화면 창 크기를 올바르게 조정하려면 절대 매개 변수와 함께 setLayout을 사용해야한다는 것을 알았습니다. 대부분의 경우 이것은 잘 작동했습니다. onConfigurationChanged () 이벤트에 의해 호출되었습니다. 그러나 딸꾹질이있었습니다. 사용자가 앱을 종료하고 방향을 변경하고 다시 입력하면 setLayout ()이 포함 된 코드가 실행됩니다. 이 재진입 시간 창 동안, 내 상태 표시 줄 (매니페스트에 의해 숨겨져 있음)이 다시 나타나지만 다른 시간에 setLayout ()이 발생하지 않습니다! 해결책은 다음과 같이 hard 값을 가진 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

내부 styles.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

kotlin을 사용하면 이것이 내가 한 방식입니다.

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

자세한 내용 : 전체 화면 모드 활성화

키보드를 사용하는 경우 키보드가 표시 될 때 StatusBar가 표시되는 경우가 있습니다. 이 경우 일반적으로 이것을 내 스타일 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">

감사. API 16 및 19가 필요합니다.
CoolMind

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);
Protonflux

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>

이것은 내 spalsh 활동입니다

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);
    }
}

안드로이드

 <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 ()로 Window 객체를 전달하십시오 .

    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
    );
}

이 코드는 노치 스크린에서도 작동합니다. 노치 전체 화면을 확인하려면 안드로이드 P가 필요하지만 노치 디스플레이 전화가있는 경우 설정-> 디스플레이 설정-> 앱 디스플레이 비율 ---> 앱 선택 ---> 안전한 두 가지 옵션이 있습니다. 디스플레이 및 전체 화면, 전체 화면을 선택하고 응용 프로그램을 실행하십시오, 당신은 안드로이드 파이 없이도 노치로 전체 화면을 볼 수 있습니다


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"

kotlin 애호가를 위해 확장 기능을 사용하지 않는 것이 좋습니다.

첫 번째 경우 :

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

Android 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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.