web-dev-qa-db-ja.com

Androidのフルスクリーンアクティビティ?

アクティビティをフルスクリーンにする方法通知バーがないということです。何か案は?

536
Praveen

あなたはプログラム的にそれを行うことができます:

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

編集:

AppCompatActivityを使用している場合は、新しいテーマを追加する必要があります。

<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 に感謝します

938
Cristian

没入型フルスクリーンモード というテクニックがあり、 KitKat で利用できます。 Immersive Full-Screen Mode Demo

120
Dmide

すでに自分のテーマを使用しているためにテーマ@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>
71
Ariel Cabib

AndroidManifest.xml file:

<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 codeに:

protected void onCreate(Bundle savedInstanceState){
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

AppCompatとActionBarActivityを使用している場合は、これを使用してください。

getSupportActionBar().hide();

27
Bala Vishnu

気をつけて

requestWindowFeature(Window.FEATURE_NO_TITLE);

次のようにアクションバーを設定する方法を使用している場合

getSupportActionBar().setHomeButtonEnabled(true);

Nullポインタ例外が発生します。

23
jiahao

style.xmlのappcompatでこれを試してください。すべてのプラットフォームでサポートできます。

<!-- 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" />
20
Rohit Suthar

Android Studio(現在のバージョンは現在2.2.2です)を使用すると、フルスクリーンアクティビティを簡単に追加できます。

手順を参照してください。

  1. Javaメインパッケージを右クリックし、「New」を選択し、「Activity」を選択します。次に、「Fullscreen Activity」をクリックします。

Step one

  1. アクティビティをカスタマイズし(「アクティビティ名」、「レイアウト名」など)、「終了」をクリックします。

Step two

完了しました。

これで、フルスクリーンのアクティビティを簡単に作成できます(Javaクラスとアクティビティのレイアウトを参照して、仕組みがどのように機能するかを知ってください)。

12

AppCompat ... style.xmlを使用している場合

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

それからあなたのマニフェストに名前を入れてください...

7
X-Black...

回答ありがとうございます@クリスティアン私はエラーを受けていました

Android.util.AndroidRuntimeException:コンテンツを追加する前に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);

    -----
    -----
}
6
Bikesh M

まず、あなたは以下のように "NoActionBar"であなたのアプリのテーマを設定する必要があります

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

それはあなたのフルスクリーンアクティビティでアクションバー/ツールバーとステータスバーを隠します

6
Rajesh Peram

AndroidManifest.xml

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

I.あなたのメインアプリのテーマはTheme.AppCompat.Light.DarkActionBarです

非表示ActionBar/StatusBar
style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
</style>

<style name="FullScreenTheme" parent="AppTheme">
    <!--this property will help hide 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。あなたのメインアプリのテーマはTheme.AppCompat.Light.NoActionBarです

非表示ActionBar/StatusBar
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のように。

デモ
助けになれば

5
Phan Van Linh

これがコード例です。特定の部分を表示/非表示にするには、フラグをオン/オフにします。

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

次に、 default 状態にリセットします。

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

@Android:style/Theme.NoTitleBar.Fullscreenを使用する代わりに自分のテーマを使用したいと思いました。しかし、ここでの記事が述べたようにそれは機能していなかったので、私はそれを把握するためにいくつかの調整をしました。

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バージョンに移植する必要がある場合に備えて、両方を使用して確認しています。

2
Chef Pharaoh

ヒント: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 );
        }

ウィンドウは正しくサイズ変更され、ステータスバーはこれを引き起こしたイベントに関係なく再表示されませんでした。

1
BuvinJ
 @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);
    }
}
1
Tarun konda

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

これは私のために働きました。お役に立てば幸いです。

1
Anuj Sain

コトリンでこれは私がやった方法です:

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

スティッキーイマーシブ

通常のイマーシブモードでは、ユーザーがEdgeからスワイプするたびに、システムがシステムバーを表示するようにします。ジェスチャが発生したことをアプリが認識することすらありません。そのため、スワイプを多く必要とするゲームや描画アプリの使用など、ユーザーが主にアプリの操作の一部として画面の端からスワイプする必要がある場合は、代わりに「スティッキー」イマーシブモードを有効にする必要があります。 。

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

詳細情報: フルスクリーンモードを有効にする

キーボードを使用している場合、キーボードが表示されたときにStatusBarが表示されることがあります。その場合私は通常これを私のスタイル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">
1
Jorge Casariego

フルイマーシブを表示:

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);
    }
1
Gal Rom

空のアクティビティを作成してonCreateに2行追加します。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // full screen activity
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getSupportActionBar().hide();

        setContentView(R.layout.activity_main);
    }
    ...
}
0
wannik

_ kotlin _

Googleドキュメントに従うと、簡単な方法があります。

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

Googleドキュメント

0
Álvaro Agüero

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

AndroidManifests:

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

}
0
saigopi

それは私のために働きました。

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

このコードをonCreate()メソッドに貼り付けるだけです

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

OnCreate()でsetContentViewの後にこのメソッドを使用し、 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
    );
}

このコードは、ノッチスクリーンにも機能します。ノッチフルスクリーンを確認するにはAndroid Pが必要ですが、ノッチディスプレイ付き携帯電話がある場合は 設定 - >ディスプレイ設定 - >アプリ表示率--->アプリの選択 --->があります。安全な2つのオプションはディスプレイとフルスクリーンです、フルスクリーンを選択してアプリを実行してください、あなたはノッチでフルスクリーンも見ることができます アンドロイドパイを持たずに

0
Prakash Sharma

多くの時間が経っても成功しなかったので、私は他の開発者と同様にやめられた私自身の解決策を思いつきました。だから誰かが彼女を必要としている場合はそれです。私の問題は、システムナビゲーションバーが呼び出した後に隠れていなかったということでした。また私の場合は風景が必要だったので、念のためにその行とそのすべてについてコメントしてください。まず第一にスタイルを作成する

    <style name="FullscreenTheme" parent="AppTheme">
    <item name="Android:actionBarStyle">@style/FullscreenActionBarStyle</item>
    <item name="Android:windowActionBarOverlay">true</item>
    <item name="Android:windowBackground">@null</item>
    <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
    <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
</style>

これは私のマニフェストファイルです

<activity
        Android:name=".Splash"
        Android:screenOrientation="landscape"
        Android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize"
        Android:label="@string/app_name"
        Android:theme="@style/SplashTheme">

        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        Android:name=".MainActivity"
        Android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize"
        Android:screenOrientation="landscape"
        Android:label="@string/app_name"
        Android:theme="@style/FullscreenTheme">
    </activity>

これは私のスパルシュ活動です

public class Splash extends Activity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 2000;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.splash_creen);

    /* New Handler to start the Menu-Activity
     * and close this Splash-Screen after some seconds.*/
    new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {
            /* Create an Intent that will start the Menu-Activity. */
            Intent mainIntent = new Intent(Splash.this,MainActivity.class);
            Splash.this.startActivity(mainIntent);
            Splash.this.finish();
        }
    }, SPLASH_DISPLAY_LENGTH);
}

}

これが私の主なフルスクリーンアクティビティです。 onSystemUiVisibilityChange thiメソッドは重要ではありません。そうでなければ、Androidメインナビゲーションバーを呼び出した後は、表示されたままになります。本当にいらいらさせる問題ですが、この機能はその問題を解決します。

パブリッククラスMainActivityはAppCompatActivityを拡張します

private View mContentView;
@Override
public void onResume(){
    super.onResume();

    mContentView.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);

}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fullscreen2);
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null)
    {
        actionBar.hide();
    }
    mContentView = findViewById(R.id.fullscreen_content_text);
    mContentView.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);



    View decorView = getWindow().getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener
            (new View.OnSystemUiVisibilityChangeListener()
            {
                @Override
                public void onSystemUiVisibilityChange(int visibility)
                {
                    System.out.println("print");

                    if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
                    {
                        mContentView.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);
                    }
                    else
                    {

                        mContentView.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);

                        }
                }
            });

}

}

これは私のスプラッシュスクリーンレイアウトです:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical" Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">
    <ImageView Android:id="@+id/splashscreen" Android:layout_width="wrap_content"
        Android:layout_height="fill_parent"
        Android:background="@Android:color/white"
        Android:src="@drawable/splash"
        Android:layout_gravity="center"/>
    <TextView Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="Hello World, splash"/>
</LinearLayout>

This is my fullscreen layout
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="#0099cc"
        >
        <TextView
            Android:id="@+id/fullscreen_content_text"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:gravity="center"
            Android:keepScreenOn="true"
            Android:text="@string/dummy_content2"
            Android:textColor="#33b5e5"
            Android:textSize="50sp"
            Android:textStyle="bold" />

    </FrameLayout>

私はこれがあなたを助けることを願っています

0