浮窗开组件

FloatUtil

项目地址: liuguangli/FloatUtil
简介:浮窗开组件
更多: 作者    提 Bug    示例 APK   
标签:
悬浮窗-

一个简单的浮窗工具。封装了浮窗的使用方法,并做了系统、版本的兼容处理,帮你绕过权限的限制。

浮窗

开始

项目使用 jitpack 做开源库的托管,你需要在 .gradle 中添加 jitpack 的仓库。

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

在添加 FloatUtil 的依赖引用:

dependencies {
     compile 'com.github.liuguangli:FloatUtil:-SNAPSHOT'
}

创建一个简单的浮窗

  SimpleView floatView = new SimpleView(this);
  FloatUtil.showFloatView(floatView, null);

SimpleView 是你自定义的 View,就这么简单,浮窗显示出来了。

浮窗

关闭浮窗

  FloatUtil.hideFloatView(context, SimpleView.class, false);

同一个 View 类,同时只能显示一个实例, 关闭的时候指定一个 class 对象便能知道关闭哪个浮窗实例。 最后一个参数 决定要不要将当前实例缓存,以便下次快速显示并维持状态,false 代表不缓存,true 表示要缓存。

向浮窗传递参数

FloatUtil 提供了一个接口:ParamReceiver。你自定义的 View 实现这个接口便能接收参数。

 public class SimpleViewWitchParam extends FrameLayout implements ParamReceiver {
    public static final java.lang.String PARAM = "PARAM";
    public static final String CONTENT = "content";
    @Override
    public void onParamReceive(Bundle bundle) {
        // 在这个回调方法中接收参数并解析
        if (bundle != null) {
            String param = bundle.getString(PARAM);

        }
    }
}

然后在添加这个 SimpleViewWitchParam 到浮窗。

    SimpleViewWitchParam floatView = new SimpleViewWitchParam(this);
    Bundle bundle = new Bundle();
    bundle.putString(SimpleViewWitchParam.PARAM, "我是传过来的参数");
    FloatUtil.showFloatView(floatView, bundle);

浮窗

指定层级和对齐方式

    SimpleViewWitchParam floatView = new SimpleViewWitchParam(this);
    // 居中对齐,浮窗层级为 WindowManager.LayoutParams.TYPE_TOAST
    FloatUtil.showFloatView(floatView, Gravity.CENTER,WindowManager.LayoutParams.TYPE_TOAST , null);

浮窗

浮窗类型 type 决定了浮窗的层级,关于浮窗层级的详细理解可以参考我的博客:《浮窗开发之窗口层级》, Android 系统对窗体的某些层级有权限限制,例如 WindowManager.LayoutParams.TYPE_PHONE 类型的窗体需要授权。

智能浮窗(突破授权)

FloatUtil 提供智能方式添加浮窗,针对特定的系统版本、机型为你选择合适的浮窗 type ,越过授权(详细参考我的博客:越过用户授权使用浮窗),你不需要再去关注复杂的处理过程。

    SimpleViewWitchParam floatView = new SimpleViewWitchParam(this);
    Bundle bundle = new Bundle();
    bundle.putString(SimpleViewWitchParam.PARAM, "智能浮窗");
    // 指定浮窗显示的位置
    Point point = new Point();
    point.x = 0;
    point.y = 0;
    FloatUtil.showSmartFloat(floatView, Gravity.CENTER, point, bundle);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值