最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實(shí)現(xiàn)類似qq微信消息懸浮窗通知功能

 更新時(shí)間:2018年02月10日 15:17:14   投稿:mrr  
這篇文章主要介紹了Android實(shí)現(xiàn)類似qq微信消息懸浮窗通知,需要的朋友可以參考下

實(shí)現(xiàn)方法:(需要開啟懸浮窗通知權(quán)限、允許應(yīng)用在其他應(yīng)用上顯示)

一.利用headsup

懸掛式Notification,他是5.0中新增的,也就是API中的Headsup的Notification,可以在不打斷用戶操作的時(shí)候,給用戶通知

二.使用Window創(chuàng)建懸浮窗

當(dāng)window屬性設(shè)置為FLAGE_NOT_FOCUSABLE表示不需要獲取焦點(diǎn),也不需要接受各種輸入事件,此標(biāo)記會(huì)同時(shí)啟用FLAGE_NOT_TOUCH_MODEL,最終事件會(huì)直接傳遞給下層具有焦點(diǎn)的Widow

FLAGE_NOT_TOUCH_MODE 在此模式下,系統(tǒng)會(huì)將當(dāng)前Window區(qū)域以外的單擊事件傳遞給底層的Window,當(dāng)前Window區(qū)域以內(nèi)的單擊事件則自己處理,如果不開啟此標(biāo)記,其他Window將無法接收到單擊事件

FLAGE_SHOW_WHEN_LOCKED 開啟此模式可以讓W(xué)indow顯示在鎖屏的桌面上(不是所有的rom都支持)

widow類型設(shè)置,每個(gè)window都有對(duì)應(yīng)的z-ordered,層級(jí)大的會(huì)覆蓋層級(jí)小的,Window有三種類型:應(yīng)用Window(1-99),子Window(1000-1999),系統(tǒng)Window(2000-2999),因此,桌面懸浮窗需要系統(tǒng)Window,設(shè)置系統(tǒng)級(jí)的type有很多值,經(jīng)常用的是TYPE_SYSTEM_ALERT,此設(shè)置需要添加權(quán)限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

但是經(jīng)測試當(dāng)類型設(shè)置為TYPE_TOAST的時(shí)候是不需要添加權(quán)限的( 部分rom仍舊需要權(quán)限(比如小米?。。?!)小米真的是開發(fā)人員的噩夢(mèng)! )

提示:6.0之后需要?jiǎng)討B(tài)權(quán)限

注意:在某些rom下使用headsup并不會(huì)顯示桌面懸浮窗,而是直接跳轉(zhuǎn)到相應(yīng)的界面,親測華為,小米都是這種情況,這種情況下需要自己實(shí)現(xiàn)懸浮窗

具體實(shí)現(xiàn):

利用headsup

manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); notification = new NotificationCompat.Builder(this) .setVisibility(Notification.VISIBILITY_PRIVATE) .setSmallIcon(R.mipmap.ic_launcher) .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) .setFullScreenIntent(pendingIntent, false) .setContentTitle("標(biāo)題") .setContentText("內(nèi)容") .build(); manager.notify(1, notification);

使用Window

``private void initWindowManager(){
 wm = (WindowManager) getApplicationContext().getSystemService(
     Context.WINDOW_SERVICE);
 params = new WindowManager.LayoutParams();
 // 設(shè)置window type
 params.type = WindowManager.LayoutParams.TYPE_PHONE;
 /*
  * 如果設(shè)置為params.type = WindowManager.LayoutParams.TYPE_PHONE; 那么優(yōu)先級(jí)會(huì)降低一些,
  * 即拉下通知欄不可見
  */
 params.format = PixelFormat.RGBA_8888; // 設(shè)置圖片格式,效果為背景透明
 // 設(shè)置Window flag
 params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
     | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
     | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
 /*
  * 下面的flags屬性的效果形同“鎖定”。 懸浮窗不可觸摸,不接受任何事件,同時(shí)不影響后面的事件響應(yīng)。
  * wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL |
  * LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE;
  */
 // 設(shè)置懸浮窗的長得寬
 params.width = wm.getDefaultDisplay().getWidth();
 params.height = 200;
 params.gravity = Gravity.LEFT | Gravity.TOP;}
private void createFloatView(String str) {
 if (btn_floatView == null){
   btn_floatView = new Button(getApplicationContext());
   wmTag = true;
 }
 btn_floatView.setText(str);
 Log.i(TAG, "createFloatView: "+str);
 // 設(shè)置懸浮窗的Touch監(jiān)聽
 btn_floatView.setOnTouchListener(new View.OnTouchListener() {
   int lastX, lastY;
   int paramX, paramY;
   public boolean onTouch(View v, MotionEvent event) {
     switch (event.getAction())
     {
       case MotionEvent.ACTION_DOWN:
         if (MainActivity.lifeTag == 1) {
           Intent intent = new Intent(DataService.this, MainActivity.class);
           startActivity(intent);
         }
         wm.removeViewImmediate(btn_floatView);
         btn_floatView = null;
         break;
       case MotionEvent.ACTION_MOVE:
         break;
     }
     return true;
   }
 });
 if (wmTag){
   wm.addView(btn_floatView, params);
   wmTag = false;
 }else {
   wm.updateViewLayout(btn_floatView,params);
 } }```

效果圖

總結(jié)

以上所述是小編給大家介紹的Android實(shí)現(xiàn)類似qq微信消息懸浮窗通知功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android實(shí)現(xiàn)2048小游戲

    Android實(shí)現(xiàn)2048小游戲

    這篇文章主要為大家介紹了Android實(shí)現(xiàn)2048小游戲的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Android?Activity啟動(dòng)流程刨析

    Android?Activity啟動(dòng)流程刨析

    Activity作為Android四大組件之一,他的啟動(dòng)絕對(duì)沒有那么簡單。這里涉及到了系統(tǒng)服務(wù)進(jìn)程,啟動(dòng)過程細(xì)節(jié)很多,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值
    2022-08-08
  • 詳解Android首選項(xiàng)框架的使用實(shí)例

    詳解Android首選項(xiàng)框架的使用實(shí)例

    首選項(xiàng)這個(gè)名詞對(duì)于熟悉Android的朋友們一定不會(huì)感到陌生,它經(jīng)常用來設(shè)置軟件的運(yùn)行參數(shù)。本篇文章主要介紹詳解Android首選項(xiàng)框架的使用實(shí)例,有興趣的可以了解一下。
    2016-11-11
  • Android 關(guān)機(jī)彈出選擇菜單的深入解析

    Android 關(guān)機(jī)彈出選擇菜單的深入解析

    本篇文章是對(duì)Android 關(guān)機(jī)彈出選擇菜單進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 安卓輸入框被虛擬鍵盤擋住的問題(微信開發(fā))

    安卓輸入框被虛擬鍵盤擋住的問題(微信開發(fā))

    這篇文章主要介紹了安卓輸入框被虛擬鍵盤擋住的問題(微信開發(fā))的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Android底部導(dǎo)航欄的三種風(fēng)格實(shí)現(xiàn)

    Android底部導(dǎo)航欄的三種風(fēng)格實(shí)現(xiàn)

    這篇文章主要介紹了Android底部導(dǎo)航欄的三種風(fēng)格實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 詳解Android中visibility屬性VISIBLE、INVISIBLE、GONE的區(qū)別

    詳解Android中visibility屬性VISIBLE、INVISIBLE、GONE的區(qū)別

    在Android開發(fā)中,大部分控件都有visibility這個(gè)屬性,其屬性有3個(gè)分別為“visible ”、“invisible”、“gone”。主要用來設(shè)置控制控件的顯示和隱藏。本文就詳細(xì)的講解一下。
    2016-12-12
  • Android仿支付寶微信支付密碼界面彈窗封裝dialog

    Android仿支付寶微信支付密碼界面彈窗封裝dialog

    這篇文章主要介紹了Android仿支付寶微信支付密碼界面彈窗封裝dialog的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • Kotlin中協(xié)程的創(chuàng)建過程詳析

    Kotlin中協(xié)程的創(chuàng)建過程詳析

    使用協(xié)程的專業(yè)開發(fā)者中有超過 50% 的人反映使用協(xié)程提高了工作效率,下面這篇文章主要給大家介紹了關(guān)于Kotlin中協(xié)程創(chuàng)建過程的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Android 自定義LineLayout實(shí)現(xiàn)滿屏任意拖動(dòng)功能的示例代碼

    Android 自定義LineLayout實(shí)現(xiàn)滿屏任意拖動(dòng)功能的示例代碼

    這篇文章主要介紹了Android 自定義LineLayout實(shí)現(xiàn)滿屏任意拖動(dòng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

轮台县| 桑植县| 梁河县| 始兴县| 黄山市| 黄龙县| 高台县| 绥德县| 景宁| 兴业县| 昌平区| 南华县| 错那县| 贵港市| 同仁县| 保亭| 宁城县| 杨浦区| 锦州市| 丰都县| 南岸区| 安阳县| 滦南县| 临沧市| 柳河县| 沭阳县| 宜兰县| 西安市| 平阴县| 抚顺县| 峨边| 石林| 德令哈市| 云梦县| 石门县| 五原县| 巨野县| 手游| 尼勒克县| 全南县| 固原市|