Duc*_*eon 18 service android android-activity
我使用WindowManager创建了一个没有Activity的视图.
但我必须改变下面的观点
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
但getWindow()无法在服务中使用.
有办法吗?
您无法在服务中获得窗口.但您可以使用WindowManager添加视图(root).
您还可以通过updateViewLayout更新视图,您可以更改窗口的状态(窗口类型,标记,x,y,w,h,重力等...),如下面的代码.
private WindowManager mWindowManager;
private WindowManager.LayoutParams mLayoutParams;
..........
//let's assume that an event occurred
if(mConfiguration.orientation==Configuration.ORIENTATION_LANDSCAPE){
mLayoutParams.screenOrientation=Configuration.ORIENTATION_PORTRAIT;
}
mLayoutParams.softInputMode=WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN;
mLayoutParams.gravity = Gravity.TOP|Gravity.CENTER;
int flag=0
|WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN
|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
|WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
;
mLayoutParams.flags=flag;
mWindowManager.updateViewLayout(mRootView, mLayoutParams);
Run Code Online (Sandbox Code Playgroud)
由于服务没有 UI,您必须从它启动活动到 getWindow() 属性。
要么创建一个透明活动,要么只是启动活动, getWindow() 并立即完成它。我认为你必须创建一个透明活动。(这是我个人的看法)
| 归档时间: |
|
| 查看次数: |
18653 次 |
| 最近记录: |