您的位置:首页 > 其它

activity或者window:addview

2016-04-16 21:54 232 查看
window添加view

WindowManager windowManager = (WindowManager) getApplication().getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics displayMetrics = getWindowMetrics();
mParentViewHeight = getWindowMetrics().heightPixels;
mParentViewWidth = getWindowMetrics().widthPixels;
calculatePosition(displayMetrics.widthPixels, displayMetrics.heightPixels);
int defaultWindowType = WindowManager.LayoutParams.TYPE_TOAST;
if (Build.VERSION.SDK_INT < 19) {
defaultWindowType = WindowManager.LayoutParams.TYPE_PHONE;
}
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
mWidth,
mHeight,
mInitXoffset,
mInitYoffset,
defaultWindowType,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.RGBA_8888);
lp.token = mChild.getWindowToken();
lp.gravity = Gravity.TOP | Gravity.LEFT;

WindowManager.LayoutParams childLp = (WindowManager.LayoutParams) childView.getLayoutParams();
windowManager.addView(childView,childLp);


ac ti vi ty添加view:

FrameLayout root = getRootFrame(activity);

frameLayout = new FrameLayout(activity);
activityParentFrameMap.put(hashCode, frameLayout);
root.addView(frameLayout,fillParentParams);


特别的,为一个activity添加framelayout,这个framelayout事可以点透的,并不会影响activity上的view的行为;

但是在一个window上直接添加framelayout时,这个framelayout会点不透,下面的ac ti vi ty的view将无法响应到点击事件。

原因可能是基于window的framelayout和基于activity建的layout不在同一个view的管理器中,需要深入研究。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: