137

GitHub - yhaolpz/FloatWindow: Andorid 任意界面悬浮窗,实现悬浮窗如此简单

 7 years ago
source link: https://github.com/yhaolpz/FloatWindow
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

FloatWindow 安卓任意界面悬浮窗

悬浮按钮图

1.支持拖动,提供自动贴边等动画

2.内部自动进行权限申请操作

3.可自由指定要显示悬浮窗的界面

4.应用退到后台时,悬浮窗会自动隐藏

5.除小米外,4.4~7.0 无需权限申请

6.位置及宽高可设置百分比值,轻松适配各分辨率

7.支持权限申请结果、位置等状态监听

8.链式调用,简洁清爽

第 1 步、在工程的 build.gradle 中添加:

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

第 2 步、在应用的 build.gradle 中添加:

	dependencies {
	        compile 'com.github.yhaolpz:FloatWindow:1.0.9'
	}

0.声明权限

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

1.基础使用

        FloatWindow
              .with(getApplicationContext())
              .setView(view)
              .setWidth(100)                               //设置控件宽高
              .setHeight(Screen.width,0.2f)
              .setX(100)                                   //设置控件初始位置
              .setY(Screen.height,0.3f)
              .setDesktopShow(true)                        //桌面显示
              .setViewStateListener(mViewStateListener)    //监听悬浮控件状态改变
              .setPermissionListener(mPermissionListener)  //监听权限申请结果
              .build();

宽高及位置可设像素值或屏幕宽/高百分比,默认宽高为 wrap_content;默认位置为屏幕左上角,x、y 为偏移量。

2.指定界面显示

              .setFilter(true, A_Activity.class, C_Activity.class)

此方法表示 A_Activity、C_Activity 显示悬浮窗,其他界面隐藏。

              .setFilter(false, B_Activity.class)

此方法表示 B_Activity 隐藏悬浮窗,其他界面显示。

注意:setFilter 方法参数可以识别该 Activity 的子类

也就是说,如果 A_Activity、C_Activity 继承自 BaseActivity,你可以这样设置:

              .setFilter(true, BaseActivity.class)

3.可拖动悬浮窗及回弹动画

              .setMoveType(MoveType.slide)
              .setMoveStyle(500, new AccelerateInterpolator())  //贴边动画时长为500ms,加速插值器

共提供 4 种 MoveType :

MoveType.slide : 可拖动,释放后自动贴边 (默认)

MoveType.back : 可拖动,释放后自动回到原位置

MoveType.active : 可拖动

MoveType.inactive : 不可拖动

setMoveStyle 方法可设置动画效果,只在 MoveType.slide 或 MoveType.back 模式下设置此项才有意义。默认减速插值器,默认动画时长为 300ms。

4.后续操作

        //手动控制
        FloatWindow.get().show();
        FloatWindow.get().hide();

        //修改显示位置
        FloatWindow.get().updateX(100);
        FloatWindow.get().updateY(100);

        //销毁
        FloatWindow.destroy();

以上操作应待悬浮窗初始化后进行。

5.多个悬浮窗

        FloatWindow
                .with(getApplicationContext())
                .setView(imageView)
                .build();

        FloatWindow
                .with(getApplicationContext())
                .setView(button)
                .setTag("new")
                .build();


        FloatWindow.get("new").show();
        FloatWindow.get("new").hide();
        FloatWindow.destroy("new");

创建第一个悬浮窗不需加 tag,之后再创建就需指定唯一 tag ,以此区分,方便进行后续操作。

点击查看 : 示例代码

悬浮按钮图

本人已尽量去兼容更多机型,但经济有限,如果你想帮助此库,提 Issues 标出当前版本不适配的机型即可,感谢~

更新日志

v1.0.9

修复拖动点击事件冲突

添加权限结果监听、位置等状态监听

支持贴边边距设置

v1.0.8

适配 4.4~8.0 及各大国产机型

支持桌面显示

v1.0.7

适配 Android 8.0

v1.0.6

支持悬浮窗拖动及相关动效

位置及宽高可设置百分比值

更改相关类名及使用方法

v1.0.5

修复未调用show显示悬浮窗bug

v1.0.4

返回桌面将会自动隐藏控件,无需再监听应用退到后台等操作

新增 Activity 过滤器,可自由指定哪些界面显示,哪些界面不显示

FixedFloatWindow 类改为 FFWindow

v1.0.3

修复已知 bug

新增 dismiss 方法

新增其他方案,如:所有版本都申请权限


Recommend

  • 56

    FloatWindow readme-中文 Android自定义悬浮窗 原理很简单,就是借用了WindowManager这个管理类来实现的。 1. 首先在AndroidManifest.xml中添加使用权限: uses-permission android:name="...

  • 111

    背景最近在做 Lavas App 相关的项目,Lavas App 是一个可以将 PWA 站点打包成 Andorid App 的 在线打包工具。当用户的安卓设备或者浏览器不支持 PWA 特性的时候,可以引导用户安装一个小的 Apk 文件,这个 Apk 文件安装后就是一个 PWA 在桌面上的入口,代替了 mani...

  • 41
    • www.codeboy.me 6 years ago
    • Cache

    Andorid AsyncTask解析

    前言 AsyncTask 在Android开发中是一个经常用到的类,允许用户在工作线程上完成后台计算等任务,之后将结果同步UI线程,比起 Thread 和 Handler 模型使用起来方便一些。 AsyncTask 使用起来如此方便了,那么有什么需...

  • 33
    • www.tuicool.com 5 years ago
    • Cache

    Andorid组件化跳转路由

    Andorid组件化跳转路由 简单介绍 路由在组件化工程中有非常重要的作用,两个没有相互引用的module之间怎么通信呢。 可以使用EventBus,使用广播,使用类加载,使用反射,scheme,隐式意图等等,这些方法各自都...

  • 46
    • www.tuicool.com 5 years ago
    • Cache

    Andorid Hook进阶

    Android Hook入门 上一篇文章学习了Hook的简单用,这次来做个稍微麻烦一点的,我们知道新建一个Activity之后我们需要在manifest中注册,否则启动的时候就会崩溃,现在使用Hook的方法绕过检查来启动一个没有注册的Activity...

  • 30
    • Github github.com 5 years ago
    • Cache

    Build APKs on Andorid Device in Termux

    buildAPKs -r--r--r-- setup.buildAPKs.bash -rwxr...

  • 60

    Andorid加载大图,双击放大,手势缩放 Android开发中,有时候会有加载巨图的需求,如何加载一个大图而不产生OOM呢,使用系统提供的BitmapRegionDecoder这个类可以很轻松的完成。 效果图:

  • 4

    更新于 2021/07/15 |  创建于 2021/07/15 如何使用scrcpy远程控制Andorid手机 scrcpy 是一个免费的开源屏幕镜像应用程序,允许从 Windows、macOS 或 Linux 台式计...

  • 5

    微软确认Windows 11还无法运行Andorid app,未来几个月内将开始进行测试

  • 9

    在过去的 12 个月内,有约 1 亿台新平板设备被激活,Chrome OS 的激活量增长了 92%,是增长速度最快的桌面平台。这意味着在平板电脑、可折叠设备和 Chrome OS 设备上,有超过 2.5 亿台大屏幕设备运行着 Android 系统,而关于可折叠设备的使用数量也在不断增长,...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK