티스토리 뷰

반응형

안드로이드 앱 개발하다보면 Full Screen을 요구하는 경우가 많습니다.

보통은 ActionBar을 숨기는 정도만 하는데, 

게임이나 컨트롤러 같은 앱을 개발하다보면 StatusBar와 SoftKey을 숨기는 경우가 발생합니다.


SoftKey가 화면에 표시되기 시작한 것은 디바이스 액정크기를 늘리면서 그 안에 소프트키를 넣는 방식으로 전환되었습니다.

따라서 실제 앱을 조작하다보면 실수로 누르는 경우가 발생합니다.


KitKat(android 4.4) 버전 이후부터는 코드 몇 줄로 해결할 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class MainActivity extends Activity {
    
    private View decorView;
    private int  uiOption;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        decorView = getWindow().getDecorView();
        uiOption = getWindow().getDecorView().getSystemUiVisibility();
        if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH )
            uiOption |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
        if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN )
            uiOption |= View.SYSTEM_UI_FLAG_FULLSCREEN;
        if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT )
            uiOption |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
        
        decorView.setSystemUiVisibility( uiOption );
    }
}

cs


팝업이나 다이얼로그가 호출되면 자동으로 SoftKey 가 보이게 됩니다.

표시된 이후 자동 숨김이 안되므로 onWindowFocusChanged을 오버라이딩하여 SoftKey을 자동으로 숨겨지도록 합니다.


1
2
3
4
5
6
7
8
public void onWindowFocusChanged(boolean hasFocus)
{
       // super.onWindowFocusChanged(hasFocus);
       if (hasFocus)
       { 
           hideSystemBar();
       }
}

cs


위의 방식으로 하면 완전한 Full-Screen을 구성할 수 있을 것으로 예상됩니다.




참고

http://m.blog.daum.net/creazier/15310030

http://cloudylab.blogspot.kr/2015/02/android-full-screen.html


반응형
댓글