sourcetip

Android에서 전체 화면 활동?

fileupload 2023. 6. 17. 09:37
반응형

Android에서 전체 화면 활동?

활동을 전체 화면으로 만들려면 어떻게 해야 합니까?알림 표시줄 없이.

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

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

편집:

AppCompativity를 사용하는 경우 새 테마를 추가해야 합니다.

<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 덕분입니다.

킷캣에는 몰입형 전체 화면 모드라는 기술이 있습니다. Immersive Full-Screen Mode Demo

이 테마를 테마를않는경우려으지용사하경우▁if.@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>

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

AppCompat 및 ActionBarActivity를 사용하는 경우 다음을 사용합니다.

getSupportActionBar().hide();

AndroidX의 경우

투명 상태 표시줄

    window?.decorView?.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
    window.statusBarColor = Color.TRANSPARENT

enter image description here

투명 상태 표시줄 및 아래쪽 탐색 모음

    window.setFlags(
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
    );

enter image description here

상태 표시줄 숨기기

API 30+용 권장 호환 솔루션(역호환 포함)

  val windowInsetsController =
      WindowCompat.getInsetsController(window, window.decorView) ?: return
  windowInsetsController.systemBarsBehavior =
      WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
  windowInsetsController.hide(WindowInsetsCompat.Type.statusBars())

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

enter image description here

상태 표시줄 & 아래쪽 탐색 막대 숨기기

API 레벨 30:

System UiVisibility 플래그는 더 이상 사용되지 않습니다.대신 WindowInsetsController를 사용합니다.

로 3번만 그냥 사용하세요.WindowInsetsCompat.Type.systemBars()

    val actionBar: ActionBar? = supportActionBar
        if (actionBar != null) actionBar.hide()

    val windowInsetsController =
        WindowCompat.getInsetsController(window, window.decorView) ?: return
    windowInsetsController.systemBarsBehavior =
        WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
    windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())

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

enter image description here

이 코드를 어디에 두나요?

   override fun onCreate(savedInstanceState: Bundle?) {

        /*  Put above code here ..... */
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_slider)
   }

메모

  • 픽셀 3A 에뮬레이터에서 이 코드를 확인했습니다.
  • 사용자 지정 안드로이드 OS가 지원되지 않을 수 있습니다.
  • 스타일 세트스일타<style name="Theme.FullScreen" parent="Theme.MaterialComponents.DayNight.NoActionBar">

조심하세요

requestWindowFeature(Window.FEATURE_NO_TITLE);

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

getSupportActionBar().setHomeButtonEnabled(true);

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

"compat"의을 사용해 .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" />

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

단계를 참조하십시오.

  1. 자바 메인 패키지 우클릭 > '신규' 선택 > '활동' 선택 > '전체화면 활동'을 클릭합니다.

Step one

  1. 활동("활동 이름", "레이아웃 이름" 등)을 사용자 정의하고 "완료"를 누릅니다.

Step two

알았어!

이제 전체 화면 활동을 쉽게 만들 수 있습니다(Java 클래스 및 활동 레이아웃 참조).

먼저 아래와 같이 "No Action Bar"로 앱 테마를 설정해야 합니다.

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

전체 화면 활동에서 작업 표시줄/도구 모음 및 상태 표시줄이 숨겨집니다.

AppCompact를 사용하는 사용자의 경우...style.xml

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

그 이름을 매니페스트에...

Android Manifest.xml

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

I. 당신의 메인 앱 주제는 테마입니다.AppCompat.라이트.다크 액션 막대

수행 표시줄/상태 표시줄 숨기기
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. 당신의 주요 앱 주제는 테마입니다.AppCompat.빛. 액션 바 없음

수행 표시줄/상태 표시줄 숨기기
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.

데모

답변 감사합니다. @크리스티안 나는 오류를 겪고 있었습니다.

안드로이드. 안드로이드.안드로이드 런타임예외: 콘텐츠를 추가하기 전에 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);

    -----
    -----
}

styles.xml에 추가합니다.

<item name="android:windowFullscreen">true</item>

예 -

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:windowFullscreen">true</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

And Android Manifest 파일을 아래 코드로 변경합니다.

android:theme="@style/AppTheme"

예 -

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/AppTheme"
    android:supportsRtl="true">

전체 몰입형 표시:

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

여기 코드 예제가 있습니다.플래그를 설정/해제하여 특정 부분을 숨기거나 표시할 수 있습니다.

enter image description here

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

그런 다음 기본 상태로 재설정합니다.

enter image description here

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

@android:style/Theme.NoTitleBar.전체 화면 대신 내 테마를 사용하고 싶었습니다.하지만 여기 어떤 게시물이 언급한 것처럼 작동하지 않아서, 저는 그것을 알아내기 위해 약간의 수정을 했습니다.

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 버전으로 포팅해야 할 경우를 대비해 두 가지를 모두 사용했습니다.

KOTLIN

구글 문서를 따르는 쉬운 방법이 있습니다.

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

구글 문서

활동을 전체 화면으로 만들려면 다음을 수행합니다.

    // 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()

주제

    <style name="Theme.FluidWallpaper.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:navigationBarColor">@android:color/transparent</item>
    <item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="o_mr1">shortEdges</item>
     </style>

안드로이드 매니페스트

   <activity android:exported="false"
        android:name=".FullScreenActivity"
        android:screenOrientation="fullSensor"
        android:theme="@style/Theme.FluidWallpaper.FullScreen"/>

팁: getWindow().setLayout()을 사용하면 전체 화면 디스플레이가 망가질 수 있습니다!이 방법에 대한 설명서에는 다음이 나와 있습니다.

창의 너비 및 높이 레이아웃 파라미터 설정...이 값을 ...(절대값)으로 변경하여 전체 화면이 아닌 창을 만들 수 있습니다.

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

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

그런 다음 창 크기가 올바르게 조정되고 상태 표시줄은 이를 트리거한 이벤트에 관계없이 다시 나타나지 않습니다.

그것은 나에게 효과가 있었다.

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

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

Android 매니페스트:

 <activity android:name=".LoginActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_login"
            android:theme="@style/FullscreenTheme"
            ></activity>
 @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);
    }
}

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

이것은 저에게 효과가 있었습니다.도움이 되길 바랍니다.

코틀린과 함께 한 방법은 다음과 같습니다.

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

를 이코를에붙니다습넣여드다에 만 하면 .onCreate()방법

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

Create()에서 ContentView를 설정한 후 이 메서드를 사용하고 Window 개체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
    );
}

이 코드는 노치 화면에서도 작동합니다.노치 전체 화면을 확인하려면 안드로이드 P가 필요하지만 노치 디스플레이 폰이 있다면 설정으로 이동합니다.-->디스플레이 설정 -->앱 디스플레이 비율 --->앱 선택 --->안전한 디스플레이와 전체 화면 두 가지 옵션이 있습니다,안드로이드 파이 없이도 노치에서 전체 화면을 볼 수 있다

enter image description here

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); if (getSupportActionBar() != null){ getSupportActionBar().hide(); }

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

}

언급URL : https://stackoverflow.com/questions/2868047/fullscreen-activity-in-android

반응형