关于WindowManager.addview()的问题

起源:某个程序,主界面是一个surfaceView,本来想做一个类似于封面的东西,在程序启动以后马上加载,,发现直接在布局里面直接addView,覆盖不了SurfaceView,于是想用WindowManager去实现。

于是写了这样一段代码:

[java]  view plain copy
  1. public void addCover(){  
  2.         LayoutInflater inflater = LayoutInflater.from(this);  
  3.         FrameLayout cover = (FrameLayout) inflater.inflate(R.layout.waiting, null);  
  4.           
  5.         cover.setBackgroundColor(Color.GRAY);  
  6.         mCover = cover;  
  7.    
  8.     WindowManager.LayoutParams params = new WindowManager.LayoutParams(  
  9.                 WindowManager.LayoutParams.MATCH_PARENT,   
  10.                 WindowManager.LayoutParams.MATCH_PARENT,   
  11.                 WindowManager.LayoutParams.TYPE_APPLICATION + 3,   
  12.                 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,   
  13.                 PixelFormat.TRANSLUCENT);  
  14.         getWindowManager().addView(mCover,params);  
  15.     }  
 

 

然后在onCreate中调用这个方法。

 

之后问题出现了...

 

程序启动后,没有响应...

 

在尝试修改各种参数未果以后,我抱着一试的希望吧addCover从onCreate搬到某个Click事件中执行,结果就正常了。

 

结果是,不能在onCreate中往WindowManager里面addView?或者是我用的这个设备,它的framework兼容性有问题?

 

最后,我选择了在onCreate里面Handler.sendEmptyMessage()的方式解决了问题。

你可能感兴趣的:(java,null,application)