Android开源库

Android-推荐一个全局悬浮窗的框架(FloatWindow

2022-08-31  本文已影响0人  阿博聊编程
图片来源网络,入侵必删

在日常Android开发当中,我们可能要实现全局悬浮窗的需求。这里分享一个快速实现的框架,希望能帮小伙伴们提高开发效率。

FloatWindow

一个全局悬浮窗的框架,主要特性如下:
1.支持拖动,提供自动贴边等动画
2.内部自动进行权限申请操作
3.可自由指定要显示悬浮窗的界面
4.应用退到后台时,悬浮窗会自动隐藏
5.除小米外,4.4~7.0 无需权限申请
6.位置及宽高可设置百分比值,轻松适配各分辨率
7.支持权限申请结果、位置等状态监听
8.链式调用,简洁清爽

集成到项目

项目的build.gradle:

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

应用的build.gradle:

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

截止我发布博客,开源库版本是1.0.9如果想要查看最新版本,请看开源库wiki

需要权限

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

基础使用

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();

可以指定界面显示

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

部分界面不展示

.setFilter(false, B_Activity.class)

可拖动悬浮窗以及回弹动画

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

主要有4种MoveType:

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

多个悬浮窗


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");
上一篇下一篇

猜你喜欢

热点阅读