游乐游手机版
首页/科技数码/文章详情

让你的应用"飘"起来!Android悬浮窗+自动吸边效果实战

时间:2025-12-15 20:35
重要注意事项1 版本适配:Android 8 0+要用TYPE_APPLICATION_OVERLAY类型。2 内存管理:记得在onDestroy里移除视图!3 用户体验:拖动时可以考虑增加半

重要注意事项1. 版本适配:Android 8.0+要用TYPE_APPLICATION_OVERLAY类型。2. 内存管理:记得在onDestroy里移除视图!3. 用户体验:拖动时可以考虑增加半透明效果。4. 权限提示:优雅地引导用户开启权限

先搞张"通行证"(权限篇)

在AndroidManifest里挂个牌子

这就像在游乐园门口挂了个"VIP通道"的牌子~

向用户申请"特别通行证"

// 检查是不是Android 6.0以上的"高级游乐园"if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // 看看通行证有没有过期 if (!Settings.canDrawOverlays(this)) { // 申请权限 Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); startActivityForResult(intent, 1001); } else { showFloatingWindow(); // 亮出我们的悬浮窗! }}

图片图片

创建会"跑"的悬浮窗(核心实现)

悬浮窗基础配置

// 窗口管家(WindowManager)登场windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);// 给悬浮窗穿件"衣服"ImageView floatView = new ImageView(this);floatView.setImageResource(R.drawable.ic_float); // 悬浮窗的"身份证信息"WindowManager.LayoutParams params = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY : // Android 8.0+用这个 WindowManager.LayoutParams.TYPE_PHONE, // 老版本用这个 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // 别抢焦点,做个安静的美窗 PixelFormat.TRANSLUCENT // 半透明效果更高级);// 初始位置:屏幕左上角+向下偏移100像素params.gravity = Gravity.START | Gravity.TOP;params.x = 0;params.y = 100;// 把悬浮窗"放"到屏幕上windowManager.addView(floatView, params);

图片图片

让悬浮窗"动"起来

floatView.setOnTouchListener(new View.OnTouchListener() { private int startX, startY; private float touchX, touchY; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // 手指按下 startX = params.x; startY = params.y; touchX = event.getRawX(); // 记录触点X touchY = event.getRawY(); // 记录触点Y return true; case MotionEvent.ACTION_MOVE: // 手指滑动 // 计算新位置 params.x = startX + (int)(event.getRawX() - touchX); params.y = startY + (int)(event.getRawY() - touchY); windowManager.updateViewLayout(floatView, params); return true; case MotionEvent.ACTION_UP: // 手指松开 autoAttachToEdge(); // 触发吸边效果 return true; } return false; }});

磁吸边效果实现(魔法时刻)

private void autoAttachToEdge() { int screenWidth = getResources().getDisplayMetrics().widthPixels; int viewCenterX = params.x + floatView.getWidth()/2; // 判断离哪边近 if(viewCenterX < screenWidth/2) { params.x = 0; // 吸到左边缘 } else { params.x = screenWidth - floatView.getWidth(); // 吸到右边缘 } // 添加弹性动画 ValueAnimator animator = ValueAnimator.ofInt(params.x, targetX); animator.addUpdateListener(animation -> { params.x = (int) animation.getAnimatedValue(); windowManager.updateViewLayout(floatView, params); }); animator.setDuration(300).start();}

图片图片

重要注意事项

1. 版本适配:Android 8.0+要用TYPE_APPLICATION_OVERLAY类型

2. 内存管理:记得在onDestroy里移除视图!

3. 用户体验:拖动时可以考虑增加半透明效果

4. 权限提示:优雅地引导用户开启权限

快来打造属于你的"桌面小精灵"吧!代码在手,创意我有,让你的应用瞬间拥有灵魂~

来源:https://www.51cto.com/article/817808.html
上一篇毁灭战士:黑暗时代完整剧情影片意外发布,引发玩家热议 下一篇神州数码:覆盖服务器、PC、算力与私有化解决方案
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
宫本茂亲签3DS XL拍卖价破两万美元
科技数码 · 2026-05-29

宫本茂亲签3DS XL拍卖价破两万美元

今天来说一件挺有意思的事:2015年任天堂世界锦标赛冠军约翰·戈德堡,近日将他当年夺冠时赢得的宫本茂亲笔签名版3DS XL掌机放上了拍卖平台。截至2026年5月29日,这台签名掌机的竞拍价已突破两万美元,并且价格还在持续攀升。戈德堡在社交媒体上发布声明表示,经过相当长时间的慎重考虑,他决定将这台对自

七彩虹隐星P16 Pro游戏本新配置仅售7799元
科技数码 · 2026-05-29

七彩虹隐星P16 Pro游戏本新配置仅售7799元

七彩虹近期推出隐星P16Pro游戏本新配置,售价7799元。其搭载酷睿i9-13900HX处理器与RTX5060显卡,配备16英寸2 5K高刷电竞屏及高效散热系统。存储组合为16GB内存与1TB固态硬盘,支持后续扩展。该配置主打高性能性价比,适合预算有限但追求强劲性能的游戏玩家与轻度创作者。

苹果iPhone Hikawa握把支架448元重新上架
科技数码 · 2026-05-29

苹果iPhone Hikawa握把支架448元重新上架

苹果公司重新上架了与艺术家贝利·桧川及PopSockets合作设计的iPhone专用握把支架。该配件采用磁吸设计,兼具握持与支架功能,旨在通过人性化设计降低握持负担,并提供三种配色可选,售价448元。

苹果体育应用扩展至170市场 为2026世界杯引入对阵图
科技数码 · 2026-05-29

苹果体育应用扩展至170市场 为2026世界杯引入对阵图

苹果体育应用新增覆盖90多个国家和地区,全球可用市场总数超过170个。为迎接2026年世界杯,应用加入了完整的赛程对阵图和可视化阵型卡片,方便用户追踪赛事与战术。同时,应用支持实时活动功能,可将比分固定在锁屏或表盘,并新增一键跳转至新闻的入口。目前该应用仍仅限iPhone用户使用。

小米史上最强国产巅峰芯片玄戒O3 6月台积电3nm投产
科技数码 · 2026-05-29

小米史上最强国产巅峰芯片玄戒O3 6月台积电3nm投产

据博主爆料,小米下一代自研玄戒芯片计划于今年6月正式进入量产阶段,此次将采用台积电3nm工艺。初代玄戒O1累计出货量已突破100万颗,量产验证十分扎实。新一代芯片的产能将显著提升,这意味着供货问题基本得到解决。 根据现有曝光信息,这颗迭代芯片极有可能命名为玄戒O3,首发搭载机型预计为小米MIX Fo