Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

안드로이드 앱 만들기 상태바 숨기기 / 전체화면 만들기.

Billcorea 2021. 7. 28. 23:09
반응형

앱을 하나 만들다 보니.... 전체 화면에 보일 수 있도록 만들어 달라는 요청이 있네... 어떻게 하나 ?

구글님에게 질문을 해 본다... 그러고선 이렇게 구현을 해 보았다.

    @Override
    protected void onPostResume() {
        super.onPostResume();

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                hideSystemUI();
            }
        }, 500);
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            hideSystemUI();
        }
    }

    private void hideSystemUI() {

        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                          View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

        decorView.requestLayout();
    }

 

먼저 activity 의 lifecycle 을 대해서 찾아볼 필요가 있다. 왜 그런가 하면 액티비티가 생성되면서 어느 시점에 화면을 다시 그리게 할 것인가를 정해야 할 것 같아서 이다.  개발자 페이지에서 받아온 이미지 하나를 링크을 달았다.

저 그림의 순서을 보면 onCreate 나 onStart 에 화면 다시 그리기를 넣어 놓으면 처음 실행할 때는 적용이 되겠지만, 다른 액티비티로 갔다가 돌아올때는 실행이 되지 않는 다, 그래서 혹시나, 이 액티비티에서 다른 액티비티를 호출했다가 돌아와야 하는 경우가 있다면 필수적으로 onResume에 넣어 주는 것이 좋을 것 같다.

이미지 출처 : https://developer.android.com/guide/components/activities/activity-lifecycle

 

그리고 위의 소스에서 onWindowFocusChanged 는 구글링에서 나온 부분일껀데, 아마도 윈도우가 다시 활성화 되는 시점에 처리를 하고 넣은 게 아닐까 ? 

뭐 아무튼 이렇게 처리를 하게 되면 앱이 실행되고 나서 화면 전체를 차지하게 된다.

내가 만든 앱 실행화면

이런식으로 위/아래 있는 상태바, 네비게이션바등이 다 숨어지게 된다.

 

끝.

반응형