私は単純なゲームを作成しており、これまではブランクアクティビティを使用してきました。画面全体をカバーしたいのですが、フルスクリーンアクティビティを使用して全体を再コーディングする必要がありますか?私はオンラインで何かを探してみましたが、出会ったすべてのものにこのビットが追加されていました:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
これにより、デバイスで起動するとすぐにアプリがクラッシュします。 SO誰かが私のエラーを見せてくれるなら、お願いします。
Logcat出力とゲームコードへのリンクは次のとおりです
これを試して、アクティビティをフルスクリーンに設定します。
_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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
_
このコードをonCreate()
メソッドに配置できます
次のコードを試すことができます。
style.xml:
<style name="AppTheme.NoTitle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="Android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowContentOverlay">@null</item>
</style>
AndroidManifest.xml:
<activity
Android:name=".FullScreenActivity"
Android:theme="@style/AppTheme.NoTitle"
Android:screenOrientation="portrait"
Android:launchMode="singleTop">
</activity>
上記の答えはどれも正しく機能しません。 onResume()
メソッドに問題があり、ソフトキーが表示されます。
それを行う正しい方法はかなり簡単です。フルスクリーンになるActivity
でこのメソッドをオーバーライドします。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
「スティッキーイマージョン」が欲しければ。完全なドキュメント here を確認して、使用例に適したものを決定してください。
AndroidManifest.xmlファイル内
<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>
クラスはAppCompatActivityではなくActivityを拡張する必要があります...
あなたが欲しかったのはイマーシブモードと呼ばれ、Android 4.4以上で動作します
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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
公式ドキュメントは こちら にあります
マニフェストファイルに移動し、要件に応じて、マニフェストファイルのAndroid:theme="@Android:style/Theme.NoTitleBar.Fullscreen"
または<activity />
タグに<application />
を追加するだけです。