标签: android-fullscreen

当屏幕在 android 10 中锁定时,setFullScreenIntent 不起作用

我正在尝试在闹钟响起时使用 android 10 中的 NotificationCompat设置fullScreentIntent,但即使闹钟响起时 fullScreenIntent 也没有显示。

我在清单文件中添加了USE_FULL_SCREEN_INTENT。我尝试获取部分唤醒锁定,禁用键盘锁,但仍然无法使用全屏意图。

AndroidManifest.xml

<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
Run Code Online (Sandbox Code Playgroud)

警报广播接收器.java

public class AlarmBroadcastReceiver extends BroadcastReceiver {

    private static final String TAG = "AlarmBroadcastReceiver";
    public static final String STOP_CHANNEL_ID = "Location Alert";
    public static final int ALARM_NOTIFICATION_ID = 2;

    public static MediaPlayer mp;
    public static Vibrator vibrator;

    private boolean isVibrationEnabled = false;
    KeyguardManager keyguardManager;

    @Override
    public void onReceive(Context context, Intent intent) {

        showStopNotification(context);

        long[] mVibratePattern …
Run Code Online (Sandbox Code Playgroud)

broadcastreceiver android-alarms android-fullscreen android-10.0

6
推荐指数
1
解决办法
1812
查看次数

接收隐藏状态栏/在服务上输入全屏活动事件

我有一项服务可以向窗口管理器添加一些视图(类似于 Facebook 的聊天头)。即使我使用相机应用程序,此视图始终位于所有内容之上。是否可以知道某些活动(例如相机或视频播放器)何时使用全屏,以便我可以隐藏我的视图?

编辑:

有一个名为 View.OnSystemUiVisibilityChangeListener 的东西,但它需要 API 11。我的目标是 9,但看起来这正是我需要的。API 9 有替代方案吗?

android overlay android-view android-windowmanager android-fullscreen

5
推荐指数
1
解决办法
3634
查看次数

如何撤消对窗口装饰视图的更改?

我的活动中有两个片段,fA 和 fB。当我单击 fA 中的按钮时,fB 会替换 fA。fB 就像 Google Play 商店视图一样,当您打开查看某些应用程序时。该图像位于透明状态栏下方。我通过将以下代码添加到 fB#onCreateView 来做到这一点:

    Window w = getActivity().getWindow();
    w.getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    w.setStatusBarColor(Color.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)

当我按返回时,fB被删除并被fA取代,一切正常,但工具栏位于状态栏下方。喜欢:

在此输入图像描述

然而,它应该看起来像: 在此输入图像描述

这就是片段首次加载时的样子。

有什么办法可以清除我在 fB 中设置的标志吗?我尝试将此代码放入片段的 onResume 中,但没有成功!

    w.getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    |View.SYSTEM_UI_FLAG_VISIBLE);
Run Code Online (Sandbox Code Playgroud)

而且,我也尝试过:

    w.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    w.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以解决这个问题吗?谢谢你!

android android-fragments android-view android-fullscreen android-statusbar

5
推荐指数
1
解决办法
1583
查看次数

键盘弹出时如何保持全屏

我最近在做我的全屏项目,它是通过Immersive mode实现的。除了一部分之外,它可以正常工作:

当键盘弹出时,隐藏状态栏也会出现。

我怎样才能摆脱它?当我单击布局中的 edittext 时,我希望状态栏保持隐藏。

这是我的代码:

    int flag = View.SYSTEM_UI_FLAG_LOW_PROFILE
                    |View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    |View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    |View.SYSTEM_UI_FLAG_FULLSCREEN
                    |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    |View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDecorView = activity.getWindow().getDecorView();
        mDecorView.setSystemUiVisibility(flag);     
        mDecorView.setOnSystemUiVisibilityChangeListener(
            new View.OnSystemUiVisibilityChangeListener() {
            @Override
            public void onSystemUiVisibilityChange(int visibility) {
                if ((visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0) {
                    mDecorView.setSystemUiVisibility(flag);
                }
            }
        });
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if ((visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0) {
            mDecorView.setSystemUiVisibility(flag);
        }
    }
Run Code Online (Sandbox Code Playgroud)

它必须有一些绕行解决方案。我已经看到一些应用程序即使在键盘弹出时也能很好地隐藏状态栏。

任何想法如何解决这个问题?

android android-softkeyboard android-fullscreen

5
推荐指数
1
解决办法
2082
查看次数

Android:从全屏返回后内容高度偏移了一些像素

我正在使用 Android Studio 创建一个全屏应用程序。我使用了Android Studio提供的FullScreenActivity模板。

它可以完美地切换全屏模式,只是从全屏返回时,活动内容的顶部向上偏移了一些像素(类似于状态栏的高度)。

以下是不同阶段的屏幕截图:全屏前、全屏时、全屏返回。当我打开布局边界设置的显示时,您可以看到作为视图边界的红色矩形。

全屏之前,边界很清晰:操作栏的底部与内容的顶部重叠 截图:全屏前

全屏时 截图:全屏

从全屏返回后:操作栏的底部与内容的顶部重叠,这就是问题,内容的顶部似乎向上移动。 截图:从全屏返回

为什么会发生这种情况以及我该如何解决它?请帮我一下,谢谢

全屏活动.java

import android.annotation.SuppressLint;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;

/**
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 */
public class FullscreenActivity extends AppCompatActivity {
    /**
     * Whether or not the system UI should be auto-hidden after
     * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
     */
    private static final boolean AUTO_HIDE …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-view android-fullscreen android-statusbar

5
推荐指数
1
解决办法
1874
查看次数

如果我们隐藏状态栏,为什么要隐藏操作栏?

尽管可以在保留操作栏的同时隐藏状态栏,但此处的文档强调

“你不应该在没有状态栏的情况下显示操作栏。”

这是什么原因?它只是一个用户体验指南还是有其他原因?

android android-actionbar android-fullscreen android-statusbar

5
推荐指数
0
解决办法
139
查看次数

Android全屏导航栏透明度渗入导航视图

我正在全屏使用设计库导航视图。但是导航栏和状态栏的透明度会渗透到 上NavigationView。透明的黑色矩形出现在 的右侧和顶部NavigationView

我的布局

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <include
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        layout="@layout/layout_custom_view" />
</RelativeLayout>

<!-- Navigation View -->

<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/navigation_view_header"
    app:menu="@menu/navigation_menu" />
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    if (Build.VERSION.SDK_INT < 16) {
        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    } else {
        hideSystemUI();
    }
    setContentView(R.layout.activity_main);

    // Set NavigationView with Header and Menu
    setNavigationView();
}

/*
 * ************ SETTING FULLSCREEN TRANSIONS ************
 */

/**
 * Hide …
Run Code Online (Sandbox Code Playgroud)

android uinavigationbar android-fullscreen android-statusbar navigationview

5
推荐指数
1
解决办法
1412
查看次数

在Android中以全屏模式显示键盘

问题在于,显示键盘(将焦点设置为EditText)会关闭“活动”的全屏模式:所有条再次变为可见。以下代码段显示了如何为活动设置全屏模式。是否可以全屏模式显示键盘?谢谢。

View content = activity.findViewById(android.R.id.content);
int v = View.SYSTEM_UI_FLAG_LOW_PROFILE |
            View.SYSTEM_UI_FLAG_FULLSCREEN |
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

v = v | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;

content.setSystemUiVisibility(v);
Run Code Online (Sandbox Code Playgroud)

android android-fullscreen

5
推荐指数
0
解决办法
1069
查看次数

如何修复:打开弹出菜单时导航栏图标仍然显示(全屏 - 沉浸式粘性)

我正在尝试实现一个全屏应用程序,其中用户无法访问状态栏和导航栏

最好我希望它们被完全删除,但从我读到的情况来看,这是不可能的,除非你root设备

所以我的问题基本上是:当我显示弹出菜单时,如何隐藏导航栏图标

前

后

到目前为止,我已经尝试过:

  • hideNavigation()显示弹出菜单之前和之后调用
  • 呼入hideNavigation()onCreate(), onResume() & onWindowFocusChanged()
  • 请求焦点到另一个视图
  • 尝试从下拉列表中清除焦点(尝试失败,没有真正找到方法来做到这一点)
  • 更改图标颜色,“假装”它会被隐藏(尝试失败,没有真正找到方法来做到这一点)
  • hideNavigation()结合使用(Handler失败的尝试,可能是我没做对)
  • 尝试配置一些 COSU/KIOSK 模式选项(也许有某种方法可以完全禁用整个导航栏?我还没有找到隐藏后退按钮的方法

活动


    class PinCodeActivity, HasTitleBar {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_pin_code)
            initTitleBarWith(this)
            hideNavigation()
        }

        override fun onResume() {
            super.onResume()
            hideNavigation()
        }

        fun hideNavigation() {
            window.decorView.apply {
                systemUiVisibility = FLAGS
            }
        }

        override fun onWindowFocusChanged(hasFocus: Boolean) {
            super.onWindowFocusChanged(hasFocus)
            hideNavigation()
        }
    }

const val FLAGS = (View.SYSTEM_UI_FLAG_LOW_PROFILE or …
Run Code Online (Sandbox Code Playgroud)

android android-fullscreen android-immersive android-navigation-bar

5
推荐指数
1
解决办法
2570
查看次数

Android - 为带有导航抽屉和应用栏的应用完全隐藏状态和导航栏

如何动态隐藏状态和导航栏彻底

该应用程序包含一个带有应用栏/工具栏和 FAB 按钮的常规导航抽屉。

当切换到全屏模式,在内容的导航和状态栏的滚动了。屏幕上留下两个空条。我想要隐藏那些空条。

我创建了一个最小的演示应用程序。左侧是常规应用程序。当推动晶圆厂时,应用程序应该全屏显示。

在此处输入图片说明

我怎样才能让酒吧隐藏?

问题:请写出最小演示项目中需要哪些更改?

更新了第二个解决方案

@Roaim 提供的 GREAT 解决方案有效。必要的是将android:fitsSystemWindows布局属性设置为 false。

如果您仍然无法显示和隐藏状态/导航栏,此解决方案可能会对您有所帮助。

完全隐藏条形:

public static void hideSystemUI() {
    if (getSupportActionBar() != null) {
        getSupportActionBar().hide();
    }
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE
                    | 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);
}
Run Code Online (Sandbox Code Playgroud)

并显示所有条:

public static void showSystemUI() {
    if (getSupportActionBar() != null) {
        getSupportActionBar().show();
    }
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
Run Code Online (Sandbox Code Playgroud)

android-layout android-actionbar android-fullscreen android-statusbar android-navigation-bar

5
推荐指数
1
解决办法
4783
查看次数