我正在开发一个锁屏应用程序,我在服务中使用WindowManager添加一个View。 我已在清单文件中为所有活动设置了Orientation PORTRAIT,但这似乎不适用于此动态添加的视图。
请参阅下面的代码段
public class LockerService extends Service{
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
lockScreenView = new LockScreenView(this, this);
windowManager.addView(lockScreenView, params);
}
}
锁屏视图如下:
public class LockScreenView extends RelativeLayout{
public LockScreenView(Context context, ScreenUnlockedDeligate screenUnlockedDeligate) {
super(context);
setSystemUiVisibility(SYSTEM_UI_FLAG_IMMERSIVE_STICKY | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION);
inflate(getContext(), R.layout.view_lock, this);
}
}
有什么方法可以禁用此视图的方向更改?即Orientation.PORTRAIT
修改
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
似乎在此上下文中不可用
提前致谢!!
干杯
答案 0 :(得分:1)
经过一番搜索,我找到了解决方案。
添加
在添加视图之前params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
将解决问题并根据需要锁定方向。
像:
public class LockerService extends Service{
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
lockScreenView = new LockScreenView(this, this);
params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
windowManager.addView(lockScreenView, params);
}
}