ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 안드로이드 전체화면 (Full Screen Activity) 만들기
    Android 2019. 5. 12. 14:46

    Immersive Mode

     

    특정 안드로이드 앱들은 사용자에게 몰입된 경험을 주기 위해 전체 화면을 사용하는 풀스크린 형태로 만들어진다. 그런데 안드로이드 프로젝트를 처음 생성하면 기본적으로 보이는 Activity는 상단에 커다란 타이틀바가 있는 형태를 가지고 있다. 오랫만에 풀스크린 형태의 안드로이드 앱 개발을 하게되었을 때, 큼지막하게 나오는 타이틀바를 보면서 이것을 어떻게 없애야 하나 한참 고민했었다. 아주 옛날에는 AndroidManifest.xml 내부에 android:theme에 타이틀바가 없는 형태의 테마를 지정할 수 있었던 것으로 기억하는데, 해당 테마를 적용하면 호환성 문제가 있다고 워닝이 뜨는 것을 발견했다. 안드로이드는 높은 점유율에도 불구하고 짧은 기간 동안 너무 변화가 많이 일어나는 것 같다.

     

    문제 해결 방법을 찾아보니 테마를 만들거나 해서 해결할 수 있는 방법이 있는 것 같았지만, xml로 무엇인가를 하는 것을 극도록 꺼리는 성격탓에 코드상에서 변경을 해보기로 했다. 사실 전체화면 앱에 대한 설명은 안드로이드 개발문서에 잘 나와있다. 해당 문서는 풀스크린 모드를 여러 경우로 나누어 각각에 대한 자세한 설명과 적용 방법을 알려주고 있다. 그러나 올드스쿨 개발자인 내 경우에는 그냥 닥치고 풀스크린을 원했기 때문에 그냥 전부 적용했다.

     

    원리는 android.view.Window에서 decorView를 찾은 다음 decorView에 시스템 UI의 Visibility를 설정해 주는 것이다. 다음은 해당 작업을 담은 코드이다.

     

    // Make the full-screen activity
    private void doFullScreen() {
        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE| 
            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);
    }

     

    풀스크린을 만들기 원하는 액티비티 내에서 상기 코드를 불러주면 화면이 풀스크린으로 전환되는 것을 볼 수 있다.

     

     

    Fin.

     

     

    반응형

    댓글

Calvin's Memo