日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 微信浮窗实现_Android实现类似qq微信消息悬浮窗通知功能

發布時間:2025/4/16 Android 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 微信浮窗实现_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,此設置需要添加權限

但是經測試當類型設置為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 微信浮窗实现_Android实现类似qq微信消息悬浮窗通知功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。