【问题标题】:Fullscreen service in AndroidAndroid中的全屏服务
【发布时间】:2016-10-13 00:31:02
【问题描述】:

我做了一项服务,将黑色矩形放在每个活动的顶部,除了状态/通知栏和导航栏外,屏幕变黑。我的目标是隐藏一切。我怎样才能让这个黑色矩形全屏显示?我尝试过使用FLAG_FULLSCREENFLAG_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);

【问题讨论】:

  • 你的问题解决了吗,怎么解决的?

标签: android service android-service layoutparams android-windowmanager


【解决方案1】:

试试这个:

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

fullscreen_content 是父布局。

【讨论】:

  • 这不能应用于服务。 getSupportActionBar() 是一种可以在扩展 Activity 的类中使用的方法。
【解决方案2】:

我解决了这个程序

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

【讨论】:

  • 感谢您的回答,但这不起作用。服务中的视图不会绘制在导航键和状态栏上。
【解决方案3】:

我只是简单地添加了一行就解决了这个问题

layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多