没入モードとも呼ばれる全画面表示のアクティビティを実装しようとしています。Androidのドキュメントで、「没入型フルスクリーンモードが有効になっている場合、アクティビティは引き続きすべてのタッチイベントを受け取ります。ユーザーは、システムバーが通常表示される領域に沿って内側にスワイプしてシステムバーを表示できます。」エミュレーターを使用してAndroidスタジオで多くの例を試しました。また、独自のコードで没入型フルスクリーンモードに入ることができますが、そこから終了できません。アクションバーを再表示するための内側へのスワイプジェスチャのみですが、できません。仮想デバイスをシャットダウンして再度開いた後も、初めて没入モードに入ったときに、リマインダー バブルが表示されないことに気付きました。これがコード、gradle です (使用される avd は lollipop API レベル 21 です):
package net.missionaridellavia.gospelway.activity;
import android.os.Bundle;
import android.view.View;
import net.missionaridellavia.gospelway.R;
public class MainActivity extends AbstractCustomActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.container);
}
@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);}
}
}
package net.missionaridellavia.gospelway.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.view.Menu;
import android.view.MenuItem;
import net.missionaridellavia.gospelway.R;
import net.missionaridellavia.gospelway.service.DebuggerActivity;
public class AbstractCustomActivity extends DebuggerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//
final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.action_settings:
Intent intentSettings = new Intent(getApplicationContext(),
SettingsActivity.class);
startActivity(intentSettings);
return true;
}
return super.onOptionsItemSelected(item);
}
}
build.gradle は次のとおりです。
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "net.missionaridellavia.gospelway"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
}