アンドロイド - ActivityをFull screenで作成(Statusbarを隠す)

By JS | Last updated: March 05, 2018

アプリをフルスクリーンで実行させるか、ステータスバー(Statusbar)がUXと似合わないとき削除したいときがあります。 Statusbarを隠す方法についてまとめました。 (Androidのバージョンに応じて、コードが若干異なります。)

ステータスバーと全画面を非表示

Android activityをFull screen設定とStatusbarを隠す方法は大きく2つあります。 最初はAndroidManifest.xmlにActivityのthemeを設定したり、2番目はJavaでCodeに設定する方法です。

ActivityのTheme変更

事前に定義された属性を使用する場合、Theme属性をFullscreenに設定します。

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@style/AppTheme.NoActionBar.Fullscreen" >
    ....
</activity>

私は定義したThemeを使用する場合、windowFullscreenを私Themeに定義してくれるとします。

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

Javaコード

Javaでコードを設定するには、次のコードを使用してください。注意すべき点は、Android OSのバージョンごとに設定するflagが異なります。

private void setFullscreen(boolean fullscreen) {
    ActionBar actionBar = getSupportActionBar();

    if (fullscreen) {
        if (actionBar != null) actionBar.hide();

        int flag = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            flag |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
            flag |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
            flag |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
        }
        getWindow().getDecorView().setSystemUiVisibility(flag);
    }
    else {
        if (actionBar != null) actionBar.show();

        int flag = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            flag |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
        }
        getWindow().getDecorView().setSystemUiVisibility(flag);
    }
}

もし setSystemUiVisibility()に設定した後UIが変わらなければ、 requestLayout()でrefreshします。

if(isFullScreen) {
    isFullScreen = false;
    setFullscreen(false);
} else {
    isFullScreen = true;
    setFullscreen(true);
}
getWindow().getDecorView().requestLayout();

Related Posts

codechachaCopyright ©2019 codechacha