我正在尝试在闹钟响起时使用 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
我有一项服务可以向窗口管理器添加一些视图(类似于 Facebook 的聊天头)。即使我使用相机应用程序,此视图始终位于所有内容之上。是否可以知道某些活动(例如相机或视频播放器)何时使用全屏,以便我可以隐藏我的视图?
编辑:
有一个名为 View.OnSystemUiVisibilityChangeListener 的东西,但它需要 API 11。我的目标是 9,但看起来这正是我需要的。API 9 有替代方案吗?
android overlay android-view android-windowmanager android-fullscreen
我的活动中有两个片段,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
我最近在做我的全屏项目,它是通过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 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
我正在全屏使用设计库导航视图。但是导航栏和状态栏的透明度会渗透到 上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
问题在于,显示键盘(将焦点设置为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) 我正在尝试实现一个全屏应用程序,其中用户无法访问状态栏和导航栏。
最好我希望它们被完全删除,但从我读到的情况来看,这是不可能的,除非你root设备
所以我的问题基本上是:当我显示弹出菜单时,如何隐藏导航栏图标?
到目前为止,我已经尝试过:
hideNavigation()显示弹出菜单之前和之后调用hideNavigation()onCreate(), onResume() & onWindowFocusChanged()hideNavigation()结合使用(Handler失败的尝试,可能是我没做对)
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
如何动态隐藏状态和导航栏彻底?
该应用程序包含一个带有应用栏/工具栏和 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