Android悬浮窗实现源码-悬浮球转盘悬浮加速小火箭效果悬浮播放视频图片

news2024/11/20 10:02:31

一、实现思路

悬浮窗是一种比较常见的需求,就是把需要展示的内容界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情。

基本实现原理
主要是通过WindowManager这个类来实现
addView方法用于添加一个悬浮窗,
updateViewLayout方法用于更新悬浮窗的参数,
removeView用于移除悬浮窗。

相关API
① WindowManager
windowManager.addView(View var1, ViewGroup.LayoutParams var2);//添加悬浮窗View
windowManager.removeView(View var1));//移除悬浮窗View
windowManager.updateViewLayout(View var1, ViewGroup.LayoutParams var2);//设置悬浮窗View布局参数

② WindowManager.LayoutParams 这个类用于提供悬浮窗所需的参数,其中有几个经常会用到的变量:

type :值用于确定悬浮窗的类型,一般设为2002,表示在所有应用程序之上,但在状态栏之下。
flags:值用于确定悬浮窗的行为,比如说不可聚焦,非模态对话框等等,属性非常多,大家可以查看文档。
gravity:值用于确定悬浮窗的对齐方式,一般设为左上角对齐,这样当拖动悬浮窗的时候方便计算坐标。
x:值用于确定悬浮窗的位置,如果要横向移动悬浮窗,就需要改变这个值。
y :值用于确定悬浮窗的位置,如果要纵向移动悬浮窗,就需要改变这个值。
width :值用于指定悬浮窗的宽度。 height :值用于指定悬浮窗的高度。

③ mView.setOnTouchListener(OnTouchListener l) //监听 MotionEvent.ACTION_DOWN 和 MotionEvent.ACTION_MOVE事件 更新设置悬浮窗的参数

相关权限

创建悬浮窗这种窗体需要向用户申请权限才可以的。因此需要在AndroidManifest.xml中加入SYSTEM_ALERT_WINDOW权限。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.crazy.floatwindow">

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.GET_TASKS" />
</manifest>

设置WindowManager.LayoutParams里面的type参数时需要注意的问题

//设置类型  android8.0后有变化此处进行修改
if (Build.VERSION.SDK_INT >= 26) {
    mWindowParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
    mWindowParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}

二、效果展示

悬浮球转盘效果

在这里插入图片描述

悬浮加速小火箭效果

在这里插入图片描述

悬浮播放视频图片效果

在这里插入图片描述

三、源码下载

源码放在CSDN上了,包含上述三种悬浮窗效果实现APK源码,有需要的可以借鉴

=====> Android悬浮窗Demo源码-悬浮球转盘&悬浮加速小火箭效果&悬浮播放视频图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1000581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何拆卸滚珠螺杆的螺母?

现在滚珠螺杆的使用中&#xff0c;相信很多人都遇到过因外力原因需要拆卸螺母这种状况&#xff0c;对螺母不熟悉&#xff0c;在拆卸的过程中很容易会损坏螺母&#xff01;因此&#xff0c;掌握正确的拆卸方法是非常必要的。 拆卸滚珠螺杆螺母需要准备一些工具&#xff0c;包括扳…

提升运营效率:仓储可视化的实时监控与优化

当今&#xff0c;仓储管理已经不再是简单的储存和分发商品的过程。随着供应链的复杂性增加&#xff0c;企业需要更高效的方式来管理和优化其仓储运营。在这个背景下&#xff0c;仓储可视化成为了一项关键的技术&#xff0c;它利用先进的数字化工具和数据分析来提升仓储管理的效…

【Linux基础】权限管理

​&#x1f47b;内容专栏&#xff1a; Linux操作系统基础 &#x1f428;本文概括&#xff1a; 用户之间的切换、sudo提权、Linux权限管理、文件访问权限的相关方法、目录权限、粘滞位等 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.9.11 …

D1. Candy Party (Easy Version) Codeforces Round 896 (Div. 2)

Problem - D1 - Codeforces 题目大意&#xff1a;有一个n个数的数组a&#xff0c;要求令每一个数减去一个任意数&#xff0c;然后任选一个数加上&#xff0c;问能否使所有数相等 1<n<2e5 思路&#xff1a;因为要让每个数相等&#xff0c;首先检查他们的和能否平分成n份…

Linux文件属性操作函数

access函数 chmod函数 chown函数 修改文件的所在组或者所有者 truncate函数

RabbitMQ - 如保证消息的可靠性?

目录 一、消息可靠性 1.1、生产者消息确认&#xff08;生产者角度&#xff09; 1.1.1、理论 1.1.2、实践 1.2、消息持久化&#xff08;消息角度&#xff09; 1.2.1、理论 1.3、消费者消息确认&#xff08;消费者角度&#xff09; 1.3.1、理论 1.3.2、实践 1.4、失败重…

母婴用品小程序开发

母婴用品小程序商城开发 商品分类与搜索&#xff1a; 提供母婴用品的分类&#xff0c;如奶粉、尿片、婴儿服装等。 用户可以根据需求进行搜索&#xff0c;快速找到所需的母婴用品。 商品详情与评价&#xff1a; 展示母婴用品的详细信息&#xff0c;包括商品图片、价格、规…

使用Cpolar和极简主义文件管理器构建个人云储存平台并进行公网访问

文章目录 1. 前言2.Tiny File Manager网站搭建2.1.Tiny file manager下载和安装2.2 Tiny file manager网页测试2.2 Tiny file manager网页测试3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试总结 1. 前言 文件共享和查阅是现在网络最常见的应用场景&am…

再见ChatGPT 无需代码能力创建自定义ChatGPT

【无需代码技能】您可以使用3个不同的LLM创建自己的自定义ChatGPT GPT-4 Llama 2Falcon LLM 这是如何与Dante AI创建自己的聊天机器人 Dante AI是一个去中心化的人工智能平台&#xff0c;允许用户创建和训练自己的AI模型。它使用基于区块链的系统来管理数据和交易&#xff…

UG\NX二次开发 获取曲面uv中心点 UF_MODL_ask_face_props

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 获取曲面uv中心点 UF_MODL_ask_face_props。 效果: 代码: #include "me.hpp"void AskFaceMidpoint() {//选择面tag_t face …

C语言猜数字游戏详解及代码优化

目录 引言&#xff1a; 1.程序思路&#xff1a; 2.代码实现&#xff1a; 2.1.生成游戏菜单&#xff1a; 2.2.构建主函数框架&#xff1a; 2.3.构建游戏函数&#xff1a; 3.游戏源码&#xff1a; 4.程序优化&#xff1a; &#x1f388;优化后源码&#xff1a; 结论…

Power Series and Laplace Transforms

See https://math.libretexts.org/Bookshelves/Analysis/Supplemental_Modules_(Analysis)/Ordinary_Differential_Equations/6%3A_Power_Series_and_Laplace_Transforms

计算机毕设之基于Hadoop+springboot的物品租赁系统的设计与实现(前后端分离,内含源码+文档+教程)

该系统基于Hadoop平台&#xff0c;利用Java语言、MySQL数据库&#xff0c;结合目前流行的 B/S架构&#xff0c;将物品租赁管理的各个方面都集中到数据库中&#xff0c;以便于用户的需要。在确保系统稳定的前提下&#xff0c;能够实现多功能模块的设计和应用。该系统由管理员功能…

编译CentOS Stream 8系统的OpenSSHV9.4rpm安装包

目前OpenSSH版本已至9.4&#xff0c;其作为操作系统底层管理平台软件&#xff0c;需要保持更新以免遭受安全攻击&#xff0c;编译生成rpm包是生产环境中批量升级的最佳途径。编译软件包时与当前的运行环境有较大关系&#xff0c;请注意本安装包系在CentOS Stream 8原生系统纯净…

游戏发行平台都有什么服务和功能?

游戏发行平台通常提供一系列服务和功能&#xff0c;以帮助游戏开发商将游戏推向市场&#xff0c;并为玩家提供游戏。以下是一些常见的游戏发行平台服务和功能&#xff1a; 1、游戏发布 发行平台允许游戏开发商将游戏上传到平台上&#xff0c;以供玩家下载和安装。 2、游戏销售…

【C++】构造函数与析构函数概念简介 ( 构造函数和析构函数引入 | 构造函数定义与调用 | 析构函数定义与调用 | 代码示例 )

文章目录 一、构造函数和析构函数引入二、构造函数简介1、构造函数定义2、构造函数调用3、代码示例 - 构造函数定义与调用 三、析构函数简介1、析构函数定义2、析构函数调用3、代码示例 - 析构函数定义与调用 一、构造函数和析构函数引入 在 C 语言中 , 创建对象时 , 需要进行对…

【数据结构】二叉树的链式存储结构

【数据结构】二叉树的链式存储结构 二叉树的存储结构 typedef int BTDataType; // 二叉树的结构 typedef struct BinaryTreeNode {BTDataType data; // 树的值struct BinaryTreeNode *left; // 左孩子struct BinaryTreeNode *right;// 右孩子 } BinaryTreeNode;二…

华为云云服务器云耀L实例评测 | 上手华为云耀L实例:一篇教学文章就够了

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Linux驱动【day2】

mychrdev.c: #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include<linux/uaccess.h> #include<linux/io.h> #include"head.h" unsigned int major; // 保存主设备号 char kbuf[128]{0}; unsigned int…