生成PhoneWindow
反射生成:
private final String POLICY_CLASS_PATH = "com.android.internal.policy.impl.Policy";
private Window getPhoneWindow(Context context) {
try{
Class<?> pmclazz = Class.forname(POLICY_CLASS_PATH);
Object pmco = pmclazz.newInstance();
Method makeNewWindowMethod = pmclazz.getDeclaredMethod("makeNewWindow",Context.class);
makeNewWindowMethod.setAccessible(true);
return (Window)makeNewWindowMethod.invoke(poco, context);
}catch(Exception e){
return null;
}
}
初步初始化界面为一条蓝色长块,去掉标题
private void initDecor() {
View view = new View(mContext);
ViewGroup.LayoutParams vp =
new ViewGroup.LayoutParams(MATCH_PARENT, 80);
view.setBackgroundColor(Color.BLUE);
mWindow.requestFeature(Window.FEATURE_NO_TITLE);
mWindow.setContentView(View, vp);
mWindow.setBackgroundDrawableResource(color);
WindowManager.LayoutParams l = mWindow.getAttributes();
l.type = WindowManager.LayoutParams.TYPE_PHONE;
l.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
mWindwoManager.addView(mWindow.getDecorView(),l);
}