Android中的全屏服务
我做了一个服务,在每个活动的顶部都放上黑色矩形,屏幕变黑,除了状态/通知栏和导航栏。我的目标是隐藏一切。如何使这个黑色矩形全屏显示?我尝试过使用Android中的全屏服务,android,service,android-service,layoutparams,android-windowmanager,Android,Service,Android Service,Layoutparams,Android Windowmanager,我做了一个服务,在每个活动的顶部都放上黑色矩形,屏幕变黑,除了状态/通知栏和导航栏。我的目标是隐藏一切。如何使这个黑色矩形全屏显示?我尝试过使用FLAG\u全屏和FLAG\u布局(在屏幕中),但没有成功。我读过关于禁用TypeGuard的文章,但即使这样也不起作用。提前谢谢 这是我的密码 WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); ImageView black
FLAG\u全屏
和FLAG\u布局(在屏幕
中),但没有成功。我读过关于禁用TypeGuard的文章,但即使这样也不起作用。提前谢谢
这是我的密码
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
ImageView black = new ImageView(this);
black.setImageResource(R.drawable.black);
LinearLayout layout = new LinearLayout(this);
layout.addView(black);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 0;
windowManager.addView(layout, params);
试试这个:
assert getSupportActionBar() != null;
getSupportActionBar().hide();
mContentView = findViewById(R.id.fullscreen_content);
mContentView.setSystemUiVisibility(View.GONE | View.SYSTEM_UI_FLAG_FULLSCREEN);
其中全屏内容是父布局。我解决了这个程序
if (null == mInflater) {
mInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}if (mLockscreenView == null) mLockscreenView = mInflater.inflate(R.layout.view_locokscreen, null);
mLockscreenView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
mWindowManager.addView(mLockscreenView, mParams);
final Handler handler = new Handler();
mLockscreenView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
mLockscreenView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
},2000);
}
});
我只需添加一行就解决了这个问题
layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
这不能应用于服务getSupportActionBar()
是一种可以在扩展活动的类中使用的方法。您解决了问题了吗?如何解决?感谢您的回答,但这不起作用。服务中的视图不会在导航键和状态栏上绘制。