我正在创建一个应该绘制全屏叠加效果的应用。锁屏等东西。用户设置了一些计时器,当时间到了,这个叠加应该出现。
但叠加层并不涵盖系统导航栏。当导航栏是半透明的时,这是一个问题。用户可以触摸系统按钮,并可以看到它们背后的一些可变背景。因此,用户可以看到锁定屏幕后面的内容。这是一个问题。 我怎么能阻止这种情况呢?
请注意,锁屏覆盖不是活动。用户设置计时器,可以自由浏览他的设备。当时机到来时,应用程序会在屏幕上绘制一些视图,如下所示:
var serializer = new JsonSerializer();
serializer.TypeNameHandling = TypeNameHandling.Auto;
JArray jArr = JArray.FromObject(paramsGenericArr, serializer);
,其中
View overlayView = new OverlayView(this);
windowManager.addView(overlayView, OverlayView.createLayoutParams(retrieveScreenHeight()));
答案 0 :(得分:0)
如果您想覆盖系统栏,我假设您希望将覆盖视图的活动设置为全屏。
类似下面的代码。
public class ActivityName extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
}
然后您的活动不会显示系统栏,您的视图会一直显示在屏幕顶部。
编辑:从你上次评论开始,我就是这样做的:
步骤1:创建此FullScreenLockActivity:
public class FullScreenLockActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
// set to fullScreen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//Load your black semi-transparent view
setContentView(R.layout.lock_screen);
}
//Override this to prevent the user to close this activity by pressing the back button
@Override
public void onBackPressed() {}
}
第2步:在FullScreenLockActivity中实现“解锁屏幕”行为
步骤3:要显示锁定屏幕,请致电
Intent i = new Intent(yourCurrentActivity.this, FullScreenLockActivity.class);
startActivity(i);