您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页Android 6.0之前 创建window方法如下:

Android 6.0之前 创建window方法如下:

来源:二三娱乐

Android 6.0之前 创建window方法如下:

@SuppressWarnings("rawtypes")
Class policyManagerClass = Class.forName("com.android.internal.policy.PolicyManager");
@SuppressWarnings("rawtypes")
Class[] parameterTypes = { Context.class };
Method method = policyManagerClass.getMethod("makeNewWindow", parameterTypes);
mWindow = (Window) method.invoke(null, mContext);

Android 6.0 以及后续版本,com.android.internal.policy.PolicyManager 已经被删除,所以创建window方法如下:

方法一
Dialog dialog  = new Dialog(mContext);
mWindow = dialog.getWindow();

方法二,此方法不适合非手机端
Class windowClass = Class.forName("com.android.internal.policy.PhoneWindow");
Constructor<?> localConstructor = windowClass.getConstructor(new Class[]{Context.class});
mWindow = (Window) localConstructor.newInstance(new Object[]{mContext});

完整代码为:

private void initWindow() {
    try {
        Dialog dialog  = new Dialog(mContext);
        mWindow = dialog.getWindow();
        mWindow.setFormat(PixelFormat.TRANSLUCENT);
        mWindow.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
        mWindow.requestFeature(Window.FEATURE_NO_TITLE);
        mWindow.setSoftInputMode(LayoutParams.SOFT_INPUT_ADJUST_RESIZE | LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        mWindow.setWindowManager(wm, null, null);
        colorDrawable = new ColorDrawable();
        colorDrawable.setAlpha(0);
        mWindow.setBackgroundDrawable(colorDrawable);
        mWindow.setCallback(this);
        defindedView = new DefindedView(mContext);
        defindedView.addView(mView);
        mWindow.setContentView(defindedView.getView());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

参考

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务