Android 粘性沉浸模式
Android Sticky Immersive mode
所以我有一个 activity,我希望它全屏显示,显示标题栏和系统按钮(后退、最小化...)。
我确实从 developers.android.com 获取了一个代码,它确实全屏显示,但是当我按下屏幕时,标题弹出,按钮也出现,我希望它只在我滑动手指时弹出 up/down 在我屏幕的 top/bottom 上。
我的 activity 看起来像:
package com.example.nsomething.main;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.nsomething.R;
public class Report extends Activity {
@TargetApi(Build.VERSION_CODES.KITKAT)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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);
setContentView(R.layout.report);
initialize();
}
private void initialize() {
Button report = (Button) findViewById(R.id.button1);
report.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(Report.this, Harta.class));
finish();
}
});
}
}
与official tutorial处的代码一样,最好将代码放在onWindowFocusChanged.
中
@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);
}
}
所以我有一个 activity,我希望它全屏显示,显示标题栏和系统按钮(后退、最小化...)。 我确实从 developers.android.com 获取了一个代码,它确实全屏显示,但是当我按下屏幕时,标题弹出,按钮也出现,我希望它只在我滑动手指时弹出 up/down 在我屏幕的 top/bottom 上。
我的 activity 看起来像:
package com.example.nsomething.main;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.nsomething.R;
public class Report extends Activity {
@TargetApi(Build.VERSION_CODES.KITKAT)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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);
setContentView(R.layout.report);
initialize();
}
private void initialize() {
Button report = (Button) findViewById(R.id.button1);
report.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(Report.this, Harta.class));
finish();
}
});
}
}
与official tutorial处的代码一样,最好将代码放在onWindowFocusChanged.
中@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);
}
}