Полноэкранный сервис в Android

Я сделал сервис, который помещает черный прямоугольник поверх каждого действия, и экран становится черным, за исключением строки состояния / уведомлений и панели навигации. Моя цель - спрятать все. Как я могу сделать этот черный прямоугольник полноэкранным? Я пытался использовать FLAG_FULLSCREEN а также FLAG_LAYOUT_IN_SCREEN, но это не сработало. Я читал об отключении 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);

3 ответа

Я решил эту проблему, просто добавив одну строку

layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);

Я решил эту программу

    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);
                }
            });

Попробуй это:

assert getSupportActionBar() != null;
getSupportActionBar().hide();   
mContentView = findViewById(R.id.fullscreen_content);
mContentView.setSystemUiVisibility(View.GONE | View.SYSTEM_UI_FLAG_FULLSCREEN);

куда fullscreen_content это родительский макет.

Другие вопросы по тегам