android 实现悬架控制
實現桌面View 如桌面歌詞
?1)將要顯示在桌面的view,通過WindowManager.addView。掛在到WindowManager下;注意,WindowManager對象來源,源代碼有解釋。 而且配置好view的WindowManager.LayoutParams
? ? ? ? ?1-1)WindowManager.LayoutParams.type 設置為 WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;時。桌面UI不能夠直接setOnClickListener(),該View的onTouchEvent()函數也無效了 設置為WindowManager.LayoutParams.TYPE_SYSTEM_ALERT(2003)或者WindowManager.LayoutParams.TYPE_PHONE(2002)才有效。
1-2)WindowManager.LayoutParams.flag 設置為LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE
?假設設置了WindowManager.LayoutParams.type為2002,2003;那么flag不設置為這兩個flag的話。那么其它組件就無法獲得touch和focus事件了。
?設置了該兩個屬性之后就大家都能夠獲得Touch和Focus事件
?2)androidManifest里申明權限
? ? ? ? ?<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
// WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE); //一定要通過getApplicationContext()獲取WindowManager,這樣的情況下,當Application終止后。懸浮控件才會被退出 WindowManager wm = (WindowManager)getApplicationContext().getSystemService(WINDOW_SERVICE); WindowManager.LayoutParams params = new WindowManager.LayoutParams(); // params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY; //假設設置為 params.type = WindowManager.LayoutParams.TYPE_PHONE; // params.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; wm.addView(childView, params); }
版權聲明:本文博客原創文章,博客,未經同意,不得轉載。
總結
以上是生活随笔為你收集整理的android 实现悬架控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二分搜索 POJ 3273 Monthl
- 下一篇: Android .9.png图片的处理