91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android實現類似qq微信消息懸浮窗通知功能

發布時間:2021-04-17 10:29:06 來源:億速云 閱讀:707 作者:小新 欄目:移動開發

這篇文章主要介紹了Android實現類似qq微信消息懸浮窗通知功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

實現方法:(需要開啟懸浮窗通知權限、允許應用在其他應用上顯示)

一.利用headsup

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

二.使用Window創建懸浮窗

當window屬性設置為FLAGE_NOT_FOCUSABLE表示不需要獲取焦點,也不需要接受各種輸入事件,此標記會同時啟用FLAGE_NOT_TOUCH_MODEL,最終事件會直接傳遞給下層具有焦點的Widow

FLAGE_NOT_TOUCH_MODE 在此模式下,系統會將當前Window區域以外的單擊事件傳遞給底層的Window,當前Window區域以內的單擊事件則自己處理,如果不開啟此標記,其他Window將無法接收到單擊事件

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

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

但是經測試當類型設置為TYPE_TOAST的時候是不需要添加權限的( 部分rom仍舊需要權限(比如小米!!!!)小米真的是開發人員的噩夢! )

提示:6.0之后需要動態權限

注意:在某些rom下使用headsup并不會顯示桌面懸浮窗,而是直接跳轉到相應的界面,親測華為,小米都是這種情況,這種情況下需要自己實現懸浮窗

具體實現:

利用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("標題") .setContentText("內容") .build(); manager.notify(1, notification);

使用Window

``private void initWindowManager(){
 wm = (WindowManager) getApplicationContext().getSystemService(
     Context.WINDOW_SERVICE);
 params = new WindowManager.LayoutParams();
 // 設置window type
 params.type = WindowManager.LayoutParams.TYPE_PHONE;
 /*
  * 如果設置為params.type = WindowManager.LayoutParams.TYPE_PHONE; 那么優先級會降低一些,
  * 即拉下通知欄不可見
  */
 params.format = PixelFormat.RGBA_8888; // 設置圖片格式,效果為背景透明
 // 設置Window flag
 params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
     | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
     | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
 /*
  * 下面的flags屬性的效果形同“鎖定”。 懸浮窗不可觸摸,不接受任何事件,同時不影響后面的事件響應。
  * wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL |
  * LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE;
  */
 // 設置懸浮窗的長得寬
 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);
 // 設置懸浮窗的Touch監聽
 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);
 } }```

效果圖

Android實現類似qq微信消息懸浮窗通知功能

Android實現類似qq微信消息懸浮窗通知功能

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Android實現類似qq微信消息懸浮窗通知功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永靖县| 德清县| 云梦县| 怀集县| 西青区| 伊金霍洛旗| 青浦区| 大田县| 唐海县| 白朗县| 松滋市| 伊金霍洛旗| 称多县| 汨罗市| 甘德县| 阿城市| 南城县| 延安市| 大名县| 曲周县| 鹿泉市| 榆社县| 榆树市| 松阳县| 新建县| 天长市| 黄山市| 平泉县| 贡嘎县| 礼泉县| 汝南县| 吴江市| 柯坪县| 广丰县| 西盟| 峡江县| 偏关县| 巧家县| 林西县| 九寨沟县| 霍林郭勒市|