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