7

Androidでフルスクリーンではない状態からフルスクリーンに移行することは問題なく機能します。ただし、フルスクリーンアクティビティ(フルスクリーンビデオプレーヤー)から戻ると、ステータスバーが下にアニメーション化されると、アクティビティが下にスライドしてポップアップします。再開アクティビティは全画面モードからアニメーション化されているようですが、ステータスバーがない場合、実際のアクティビティは欠落しているかのように描画されます。

テーマ/スタイルを指定してマニフェストファイルをいじってみました。コンテンツビューが設定される前、およびアクティビティライフサイクルの他のさまざまな場所で、onCreate()でこれをプログラムで実行してみました。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

ステータスバーが下にアニメーション化されないようにしたり、コンテンツビューからステータスバーなしで最初に描画してから下に調整したりするのを防ぐ方法はないようです。

誰かこれについて何か考えがありますか?これを変更する方法があるかどうかはわかりませんが、これはAndroidの動作にすぎません。

前もって感謝します。

4

8 に答える 8

2
private void toggleFullscreen(boolean fullscreen)
{
    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    if (fullscreen)
    {
        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    else
    {
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    getWindow().setAttributes(attrs);
}

これを使えば確実にうまくいく

于 2014-08-21T06:13:02.100 に答える
2

さらにいくつかのフラグが必要です: FLAG_LAYOUT_IN_SCREEN と FLAG_LAYOUT_NO_LIMITS。

http://nubinewsblog.blogspot.com/2009/11/smooth-full-screen-transition.htmlをご覧ください。

于 2011-11-08T17:05:10.313 に答える
1

アクティビティ レイアウトのルート ビューに追加します。

android:paddingTop="25dp"

onCreateアクティビティの で、追加setContentView()する前に

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
于 2014-07-07T08:35:10.903 に答える
1

この問題を解消する完璧な方法は次のとおりです。

private void setFullscreen(boolean fullscreen) {
    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    if (fullscreen) {
        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
        attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
        attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
    }
    else {
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
    }
    getWindow().setAttributes(attrs);
}

super.onCreate(...)アクティビティ内でこれを呼び出します。

于 2017-08-16T06:51:42.533 に答える
0

私はこれを2つのステップで達成することができました。

  1. Theme.AppCompat.Light.NoActionBarフルスクリーンで表示したいアクティビティのスタイルで使用します。

  2. アクティビティのonCreate(Bundle savedInstanceState)メソッド WindowManager.LayoutParams attributes = getWindow().getAttributes();で以下のコードを使用します。attributes.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; getWindow().setAttributes(属性);

お役に立てれば。ハッピーコーディング:)

于 2016-11-14T14:58:55.487 に答える