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();
}
}
參考
相關文章
- Android-Window(一)——初識WindowAndroid
- Android 中的 WindowAndroid
- Android6.0~9.0適配Android
- Android之Window與WindowManagerAndroid
- webpack 流程解析(1):建立compiler之前WebCompile
- Android 6.0、7.0、8.0、9.0適配Android
- Android6.0動態許可權最簡單的解決方法Android
- window 建立py虛擬環境
- android 6.0三星5.1.1RootAndroid
- Android開發 - inflate方法與建立檢視解析Android
- Android 懸浮窗 System Alert WindowAndroid
- Android全面解析之Window機制Android
- window下 ionic框架 Android打包須知框架Android
- Android之Window和彈窗問題Android
- Android知識進階樹——Window & ViewRootImplAndroidView
- Android解析WindowManager(二)Window的屬性Android
- Android之window機制token驗證Android
- React Native Android 原始碼分析之前期準備React NativeAndroid原始碼
- 2.2 資料庫建立之前需考慮的事資料庫
- android api各個版本特性簡單描述到6.0AndroidAPI
- Android 6.0 在執行時請求許可權Android
- Android6.0許可權的動態適配Android
- Android6.0 顯示系統(五) SurfaceFlinger服務Android
- 原生Android之(6.0及以上)許可權申請Android
- window10選單介面切換到window7的方法
- Android顯示框架:Android應用檢視的管理者WindowAndroid框架
- Android app 線上更新那點事兒(適配Android6.0、7.0、8.0)AndroidAPP
- Google 釋出 Android 6.0 SDK & Android M 開發者預覽最終版GoAndroid
- win10怎麼建立賬戶 window10如何建立新賬戶Win10
- Android 6.0 執行時許可權管理最佳實踐Android
- android 6.0許可權申請機制(簡單案例)Android
- 「Android6.0許可權適配| 掘金技術徵文 」Android
- Android 採用AOP方式封裝6.0許可權管理Android封裝
- 內網滲透測試時,通常的策略和方法如下:內網
- Android 拍照及相簿選取圖片功能,已適配Android6.0、7.0、8.0Android
- 圖解Android - Android GUI 系統 (2) - 視窗管理 (View, Canvas, Window Manager)圖解AndroidGUIViewCanvas
- 如何建立一個瀏覽器版的`Window11`瀏覽器
- Android 6.0 7.0 8.0三個版本Install Apk 採坑記錄AndroidAPK