国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

android 12后WindowManager事件穿透類型懸浮窗無效問題

這篇具有很好參考價值的文章主要介紹了android 12后WindowManager事件穿透類型懸浮窗無效問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

筆記:
項目需要將一個懸浮窗WindowManager僅顯示view給用戶看,不可操作,將觸摸事件穿透到后面的窗口。WindowManager.LayoutParams代碼如下

WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.type = Build.VERSION.SDK_INT < Build.VERSION_CODES.O ?
        WindowManager.LayoutParams.TYPE_SYSTEM_ALERT : WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
lp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
        WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
        WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW;

在android12以下的機型中測試都沒問題,觸摸事件可以穿透懸浮窗。但在android 12機型測試時,觸摸事件無法穿透懸浮窗了。

原因

查了android開發(fā)者官網(wǎng)的android12變化后,發(fā)現(xiàn)
windowmanager.layoutparams.type_accessibility_overlay unable to add window -,筆記,android,android,android studio,ide

解決

方法1:

例外情況下運行執(zhí)行穿透操作,這里就使用無障礙窗口
windowmanager.layoutparams.type_accessibility_overlay unable to add window -,筆記,android,android,android studio,ide

創(chuàng)建個無障礙服務,在服務連接后回調里創(chuàng)建個無障礙窗口類型的懸浮窗就好了

public class MyAccessibilityService extends AccessibilityService {

    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        createWindow();
    }

    public void createWindow() {
        //懸浮窗類型
        int type;
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
            type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
            type = WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
        } else {
            type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        }

        WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
        lp.type = type;
        lp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
                WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
                WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW;

        wm.addView(view, lp);
    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {

    }

    @Override
    public void onInterrupt() {
    }
}

經(jīng)測試有效

方法2:

此方法比方法1更簡單,來源于WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE的源碼注釋。翻譯截圖如下
windowmanager.layoutparams.type_accessibility_overlay unable to add window -,筆記,android,android,android studio,ide
也就是說,只要在觸摸路徑中,它是該UID下唯一的TYPE_APPLICATION_OVERLAY窗口,并且alpha等于或小于最大遮擋不透明度也就是0.8。那么久可以使用WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE來實現(xiàn)觸摸事件穿透

WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.type = Build.VERSION.SDK_INT < Build.VERSION_CODES.O ?
        WindowManager.LayoutParams.TYPE_SYSTEM_ALERT : WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
lp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
        WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
        WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW;
//將alpha設置為最大遮擋不透明度
lp.alpha = 0.8f;

經(jīng)測試有效文章來源地址http://www.zghlxwxcb.cn/news/detail-541316.html

到了這里,關于android 12后WindowManager事件穿透類型懸浮窗無效問題的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Android使用Jetpack WindowManager來開發(fā)可折疊設備的探索

    Android使用Jetpack WindowManager來開發(fā)可折疊設備的探索

    我們在Google開發(fā)者大會上,看到Jetpack WindowManager和WindowSizeClass這些技術,如下圖。 那這里不得不說折疊屏手機了 在其中一個顯示區(qū)域中運行一個應用。 同時運行兩個應用,各位于一個顯示區(qū)域中(在 multi-window 模式下)。 可折疊設備還支持不同的折疊狀態(tài)。折疊狀態(tài)可用來

    2024年02月08日
    瀏覽(25)
  • Unity3D Button 鼠標懸浮進入與鼠標懸浮退出按鈕事件

    Unity3D Button 鼠標懸浮進入與鼠標懸浮退出按鈕事件

    由于甲方驗收未通過,項目需要改版,在修改界面時,想實現(xiàn)鼠標在一級菜單懸浮即可顯示二級菜單的功能,主要如下圖 注意,上圖鼠標只是懸浮在場景漫游按鈕上,并未點擊左鍵或右鍵等 思路是讓類繼承IPointerEnterHandler IPointerExitHandler兩個接口,然后實現(xiàn)其中的方法 代碼如

    2024年02月16日
    瀏覽(27)
  • 瀏覽器F12定位懸浮下拉框元素

    瀏覽器F12定位懸浮下拉框元素

    ?解決辦法 1. 鼠標懸浮于 設置 2. 點擊鼠標右鍵顯示 3. 鼠標移動到F12窗口,按N,成功定位到下拉框元素?

    2024年02月12日
    瀏覽(29)
  • Vue實現(xiàn)鼠標懸浮隱藏與顯示圖片效果 @mouseenter 和 @mouseleave事件

    Vue實現(xiàn)鼠標懸浮隱藏與顯示圖片效果 @mouseenter 和 @mouseleave事件

    前端vue 有個功能是鼠標移動到指定item上顯示出來一個編輯和刪除的圖標 鼠標懸停在列表那么需要有懸浮顯示的列表編輯和刪除icon 文字不好描述,因為是web端錄屏也比較麻煩 這里用截圖說明 之前沒做過這種效果,問了一下我的組長-豪哥 他告訴我很簡單,利用vue的@mouseent

    2023年04月08日
    瀏覽(26)
  • android 懸浮窗 模擬微信通話返回桌面懸浮

    現(xiàn)有一款IM聊天需求,在通話頁面點擊縮小視圖或者Home鍵返回桌面,點擊懸浮窗回到通話頁面這樣一個需求。 權限 首先是權限的獲取,請注意,在Android 8.0及以上版本中,需要申請懸浮窗權限(SYSTEM_ALERT_WINDOW)才能顯示懸浮窗。你可以在應用啟動時請求該權限,或者引導用

    2024年02月01日
    瀏覽(14)
  • Android 項目必備(四十四)-->Android 實現(xiàn)懸浮窗

    Android 項目必備(四十四)-->Android 實現(xiàn)懸浮窗

    懸浮窗是一種比較常見的需求。例如把視頻通話界面縮小成一個懸浮窗,然后用戶可以在其他界面上處理事情。 本文將講解懸浮窗實現(xiàn)步驟、原理、實例代碼等 1. WindowMananger 接口 Android 的界面繪制,都是通過 WindowMananger 的服務來實現(xiàn)的。那么,既然要實現(xiàn)一個能夠在自身應

    2024年02月12日
    瀏覽(15)
  • 怎么實現(xiàn)android 全局懸浮窗

    要實現(xiàn) Android 全局懸浮窗,可以按照以下步驟: 在 AndroidManifest.xml 文件中添加 SYSTEM_ALERT_WINDOW 權限: 創(chuàng)建一個 Service 類,并在其中創(chuàng)建一個 WindowManager 來管理懸浮窗: 在懸浮窗 View 的布局文件中添加需要展示的內容: 在 Activity 中啟動 Service: 最后,記得在不需要展示懸浮

    2024年02月11日
    瀏覽(18)
  • Android NestedScrollView懸浮固定頂部

    Android NestedScrollView懸浮固定頂部

    項目中有頁面涉及到多個元素組 需要NestedScrollView包裹來上下滑動 接到需求 一些標題在滑動到頂部時需要置頂 我之前做過關于Android Behavior之ViewPager+Fragment+RecyclerView實現(xiàn)吸頂效果 大概就是這種效果 只不過這次是隨意的組件 比如 TextView 或布局組件 RelativeLayout 等 廢話不多說來

    2024年01月24日
    瀏覽(13)
  • Android 應用彈出懸浮窗

    Android 應用彈出懸浮窗

    Android開發(fā)者經(jīng)常遇到應用想彈出懸浮窗的操作,而且有可能還想要高層級彈窗,就像ipone的浮標touch一樣。android當然也有類似的懸浮圖標,比如前些年我們的流量監(jiān)控提醒。 ?這里我們忽略UI美學,簡單記錄一下: 1、基本使用 它的基本使用步驟是不會變的,只是有時候我們

    2024年02月16日
    瀏覽(16)
  • QML---鼠標事件與鼠標事件穿透

    QML中MouseArea作為一個界面常用的類型,經(jīng)常會出現(xiàn)鼠標區(qū)域重合的問題,這個時候會觸發(fā)鼠標事件的只有最上層(可以設置Item的z屬性來控制item的z序,而在其下層的鼠標事件則不會觸發(fā),但是往往開發(fā)者所想的是兩個都觸發(fā),這個時候就需要鼠標事件穿透了。但是在先穿透之

    2024年02月09日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包