• Android浮动按钮


    https://www.jianshu.com/p/18cbc862ba7b

    https://github.com/yhaolpz/FloatWindow

    这样就解决了切换 Activity 时悬浮控件短暂消失一下这个问题,然后在添加悬浮控件时,初始化旋转角度就可以实现文章开头的效果了。但是这种方式存在很大的缺陷,首先就是它不兼容 Andorid 5.0 以下,看看 4.4 那百分之十几的小伙伴,嗯~ 缺陷很大,其次还有一个致命缺陷,不管把悬浮控件设为 INVISIBLE 还是透明,只要已经添加了此控件,在切换时它都会先显示一下,这应该是共享元素动画本身的一个 BUG .

    OK~ 放弃共享元素方案, 真的绕不过申请权限了吗? 再考虑一下 TYPE_TOAST 方案, 为什么它失效了呢? 应该是系统对此类型的控件加了限制, 对待 TYPE_TOAST 不再跳过检查权限步骤, 而是像 TYPE_PHONE 之类一视同仁, 那为什么我们的 toast 却可以跳过呢? toast 不就是 TYPE_TOAST 类型的视图吗? 不管如何, 反正 toast 是不需要权限的, 那就尝试从 toast 入手. OK~ ,现在的关键词是 自定义 toast .

    查看 Toast 类源码, 有一个方法眼前一亮:



    作者:王英豪
    链接:https://www.jianshu.com/p/18cbc862ba7b
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    库 : FixedFloatWindow , 即 fixed (位置固定的) float(悬浮) Window (窗), 可以很方便的使用 :

        FixedFloatWindow fixedFloatWindow = new FixedFloatWindow(getApplicationContext());
        fixedFloatWindow.setView(view);
        fixedFloatWindow.setGravity(Gravity.RIGHT | Gravity.TOP, 100, 150);
        fixedFloatWindow.show();
    //   fixedFloatWindow.hide();
    

    最后还有一个问题要解决, 我们要实现的是应用内悬浮控件 , 此方案应用退到后台后仍然可以在桌面显示 , 怎么控制呢? 我们可以记录当前 start 的 Activity 数量, 每当有 Activity stop 时, 便将此数量减 1 , 当此数量为 0 时表示应用退到后台 , 这时隐藏悬浮窗即可 , 类似于这样:

        @Override
        public void onActivityStarted(Activity activity) {
            mActivityNum++;
            if (isNeedShow(activity)) {
                show();
            }else{
                hide();
            }
        }
    
        @Override
        public void onActivityStopped(Activity activity) {
            mActivityNum--;
            if (mActivityNum == 0) {
                hide();
            }
        }


    作者:王英豪
    链接:https://www.jianshu.com/p/18cbc862ba7b
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    DRF 版本和认证
    DRF 视图和路由
    DRF 序列化组件
    RESTful
    Vuex以及axios
    npm、webpack、vue-cli
    Vue 生命周期
    Vue Router
    Vue 组件
    Vue 快速入门
  • 原文地址:https://www.cnblogs.com/wcLT/p/8891402.html
Copyright © 2020-2023  润新知