WindowManager为每个视图维护至少两个LayoutParams类实例,除了View本身之外的那个实例.
检查WindowManager的updateViewLayout方法,特别是这部分:
view.setLayoutParams(wparams);
synchronized (this) {
int index = findViewLocked(view,true);
ViewRoot root = mRoots[index];
mParams[index] = wparams;
root.setLayoutParams(wparams,false);
}
我相信你可以通过直接调用布局来制造一些混乱.请改用WindowManager.updateViewLayout.它会更慢,但更安全(只是IMO).
UPDATE
WindowManager windowsManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE)
WindowManager.LayoutParams windowParams = new WindowManager.LayoutParams();
windowParams.x = ;
windowParams.y =
windowParams.height = myImageView.getHeight();
windowParams.width = myImageView.getWidth();
windowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
windowParams.format = PixelFormat.TRANSLUCENT;
windowParams.windowAnimations = 0;
windowManager.updateViewLayout(myImageView,windowParams);