在Android中,WindowManager用于管理和控制應(yīng)用程序的窗口。要在Android中使用WindowManager添加視圖,請(qǐng)按照以下步驟操作:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
TextView customView = new TextView(this);
customView.setText("Hello, this is a custom view!");
customView.setLayoutParams(new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT));
這里,我們?cè)O(shè)置了視圖的布局參數(shù),包括類型(TYPE_APPLICATION_OVERLAY)和標(biāo)志(FLAG_NOT_FOCUSABLE)。請(qǐng)注意,從Android 6.0(API級(jí)別23)開(kāi)始,您需要在運(yùn)行時(shí)請(qǐng)求SYSTEM_ALERT_WINDOW權(quán)限。
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
windowManager.addView(customView, customView.getLayoutParams());
現(xiàn)在,您的自定義視圖應(yīng)該已經(jīng)添加到應(yīng)用程序窗口中。如果需要在視圖上添加事件監(jiān)聽(tīng)器,請(qǐng)?jiān)谧远x視圖類中實(shí)現(xiàn)相應(yīng)的監(jiān)聽(tīng)器接口。
請(qǐng)注意,從Android 10(API級(jí)別29)開(kāi)始,對(duì)于非系統(tǒng)應(yīng)用使用SYSTEM_ALERT_WINDOW權(quán)限的方式有所變化。您需要在應(yīng)用程序的AndroidManifest.xml
文件中聲明SYSTEM_ALERT_WINDOW
權(quán)限,并在運(yùn)行時(shí)向用戶請(qǐng)求權(quán)限。此外,您還需要在應(yīng)用程序的res/xml
目錄下創(chuàng)建一個(gè)名為window_overlay.xml
的文件,其中包含自定義視圖的布局信息。然后,您需要在代碼中使用WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
類型的參數(shù),并設(shè)置相應(yīng)的布局文件路徑。