Android WindowManager是Android系統(tǒng)中用于管理窗口層級(jí)和顯示的類。要管理窗口層級(jí),您需要遵循以下步驟:
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
// 創(chuàng)建一個(gè)對(duì)話框
Dialog dialog = new Dialog(this, R.style.CustomDialog);
dialog.setContentView(R.layout.dialog_layout);
// 設(shè)置窗口的布局屬性
WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
// 設(shè)置窗口的層級(jí)
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; // 用于懸浮窗
// layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; // 用于系統(tǒng)警告框
// layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE; // 用于電話窗口
// layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR; // 用于系統(tǒng)錯(cuò)誤窗口
// 設(shè)置窗口的寬高
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
// 設(shè)置窗口的位置
layoutParams.gravity = Gravity.CENTER;
// 設(shè)置窗口是否允許背景透明
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// layoutParams.flags = WindowManager.LayoutParams.FLAG_FULLSCREEN; // 設(shè)置全屏
// 設(shè)置窗口的層級(jí)
layoutParams.priority = WindowManager.LayoutParams.PRIORITY_HIGH; // 設(shè)置高優(yōu)先級(jí)
windowManager.addView(dialog, layoutParams);
要管理窗口層級(jí),您可以使用WindowManager.LayoutParams.type
屬性設(shè)置不同的窗口類型。例如,要?jiǎng)?chuàng)建一個(gè)懸浮窗,您可以將其類型設(shè)置為WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
。要?jiǎng)?chuàng)建一個(gè)系統(tǒng)警告框,您可以將其類型設(shè)置為WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
。
請(qǐng)注意,某些窗口類型可能需要系統(tǒng)簽名或系統(tǒng)安裝的特權(quán)。在這種情況下,您需要在AndroidManifest.xml中添加相應(yīng)的權(quán)限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
并在運(yùn)行時(shí)請(qǐng)求權(quán)限(針對(duì)Android 6.0及更高版本):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.SYSTEM_ALERT_WINDOW) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW}, REQUEST_CODE);
}
}
通過(guò)以上步驟,您可以使用Android WindowManager管理窗口層級(jí)。請(qǐng)注意,這些示例代碼僅適用于Dialog窗口。如果您使用的是Activity窗口,您需要相應(yīng)地調(diào)整代碼。