關於WindowManager.addView() 不顯示新增的View的問題!
阿新 • • 發佈:2019-01-31
就不說怎麼來的了!!
遇到的問題:公司做一個IM聊天系統,想通過最小化來實現和QQ語音和QQ視訊類似的效果,但是老闆說使用者都是傻瓜 不會開啟懸浮窗許可權!!!!
所以讓我做一個不用懸浮窗許可權的 小視訊視窗 和小語音視窗
在做小視訊視窗的時候,之前的人寫的addview是寫在Service的onCreate中的,小視訊的addView沒有問題 ,用WindowManager.addView()正常顯示小懸浮窗!
但是在做語音的懸浮窗的時候,真的是一模一樣的程式碼!!!!除了佈局不一樣,其他的WindowManager.LayoutParams 引數全都一樣
,下面是程式碼
windowManager = (WindowManager)getApplication().getSystemService(Context.WINDOW_SERVICE);
linearLayout = (LinearLayout) LayoutInflater.from(getApplication()).inflate(R.layout.view_audio_surfaceview, null); WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.type =WindowManager.LayoutParams.TYPE_TOAST; params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; params.format=PixelFormat.TRANSLUCENT; params.width = 192; params.height =252; params.gravity = Gravity.RIGHT | Gravity.TOP; params.alpha = 0.5f; windowManager.addView(linearLayout, params);
照這個程式碼是沒有問題的,但是就是在新增的時候就是不出來這個佈局,!!!
最後在網上檢視之後!發現 有一個朋友好像也是這個問題,addView之後 這個View不顯示的問題
解決辦法
linearLayout = (LinearLayout) LayoutInflater.from(getApplication()).inflate(R.layout.view_audio_surfaceview, null);
把這段程式碼 移動到 Service的onCreate方法中 即可
至於原因:下班之後看看怎麼回事!!!!在後續更新新增上來!!!!
在這裡記錄這篇文章 避免之後自己再犯同樣的錯誤,如果有朋友也是和我一樣的話!這個方法或許對你有幫助!!!