Skip to content

3. Api总览

Petterp edited this page Oct 26, 2022 · 9 revisions

Helper 构建器总览 :

FloatingX.init {
            // 设置悬浮窗layout
            setLayout(R.layout.item_floating)
            // 设置悬浮窗View, 与上面二选一
            setLayoutView(TextView(applicationContext))
            // 设置悬浮窗默认方向
            setGravity(Direction.RIGHT_OR_BOTTOM)
            // 设置是否启用日志
            setEnableLog(true)
            // 启用辅助方向
            setEnableAssistDirection(0f, 0f, 0f, 100f)
            // 设置x轴默认坐标
	    setX()
            // 设置y轴默认坐标
	    setY()
            // 设置启用边缘吸附
            setEnableEdgeAdsorption(true)
            // 设置边缘偏移量
            setEdgeOffset(10f)
            // 设置启用悬浮窗可屏幕外回弹
            setEnableScrollOutsideScreen(true)
            // 设置辅助方向辅助
            // 设置点击事件
            setOnClickListener { }
            // 设置view-lifecycle监听
	    setViewLifecycle()
            // 设置启用悬浮窗位置修复
            setEnableAbsoluteFix(true)
            // 设置启用动画
            setEnableAnimation(true)
            // 设置启用动画实现
            setAnimationImpl(FxAnimationImpl())
            // 设置方向保存impl
            setSaveDirectionImpl(FxConfigStorageToSpImpl(applicationContext))
  	    // 使用默认
	    defaultSaveDirection(applicationContext)
            // 设置底部偏移量
            setBorderBorderMargin(100f)
            // 设置顶部偏移量
            setTopBorderMargin(100f)
            // 设置左侧偏移量
            setLeftBorderMargin(100f)
            // 设置右侧偏移量
            setRightBorderMargin(100f)
            // 设置悬浮窗LayoutParams(1.0.3已废弃,建议在setLayout时一并传递,对setLayoutView的浮窗无效)
	    setLayoutParams()
  
  	 
            /** 指定浮窗可显示的activity方式,黑名单功能 */
            // 1.设置是否允许所有activity都进行显示,默认true
            setEnableAllInstall(true)
            // 2.禁止插入Activity的页面, setEnableAllBlackClass(true)时,此方法生效
            // addInstallBlackClass(BlackActivity::class.java)
            // 3.允许插入Activity的页面, setEnableAllBlackClass(false)时,此方法生效
            // addInstallWhiteClass()

            // 设置允许触摸事件,默认true,false即禁止activity
            setEnableTouch(true)
            // 设置tag-Activity生命周期回调时的触发
            setTagActivityLifecycle(object : FxTagActivityLifecycleImpl() {
                override fun onCreated(activity: Activity, bundle: Bundle?) {
                    // 允许插入的浮窗activity执行到onCreated时会回调相应方法
                }
            })
            // 设置是否启用日志,tag:自定义的tag
            setEnableLog(BuildConfig.DEBUG,"xx")
            // 开启悬浮窗
	    enableFx()
        }

基础悬浮窗控制器 - IFxControl

/** 获取配置层控制器,以便运行时动态调整某些基础配置
     * */
    val helperControl: IFxHelperControl

    /** 显示悬浮窗 */
    fun show()

    /** 隐藏悬浮窗-不会解绑app-lifecycle
     * */
    @MainThread
    fun hide()

    /**
     * 当前是否显示
     * @return 是否显示
     * */
    fun isShow(): Boolean

    /**
     * 关闭fx,并释放所有监听
     * 在普通模式,这相当于干掉当前悬浮窗
     * 在全局application,这等于只保留helper,移除其他所有监听
     * */
    fun cancel()

    /** 获取悬浮窗view
     * @return 悬浮窗view->managerView
     * */
    fun getManagerView(): FxMagnetView?

    fun getManagerViewHolder(): FxViewHolder?

    /** 获取传递进去的layout对应的悬浮窗view */
    fun getView(): View?

    /** 更新params
     * @param params 悬浮窗管理器的layoutParams
     * */
    @MainThread
    fun updateParams(params: ViewGroup.LayoutParams)

    /** 提供一个回调入口,用于快捷刷新
     * @param obj
     * */
    @MainThread
    fun updateView(obj: (FxViewHolder) -> Unit)

    /**
     * 更新当前view
     * @param resource 新的布局layout
     * */
    @MainThread
    fun updateManagerView(@LayoutRes resource: Int)

    /** 更新当前View,如果要通过view更新视图,建议通过此方法,可以帮助选用合适的context,来避免因context所导致的内存泄漏 */
    @MainThread
    fun updateManagerView(obj: (context: Context) -> View)


    /** 设置点击事件 */
    fun setClickListener(time: Long = 500L, obj: (View) -> Unit)

App级别悬浮窗控制器 - IFxAppControl

  fun show(activity: Activity)
  fun detach(activity: Activity)
  /** 获得当前绑定的activity,不要手动保留此activity,以避免泄漏 */
  fun getBindActivity(): Activity?

局部浮窗控制器 - IFxScopeControl

  // 在指定viewGroup中添加一个浮窗
  fun init(viewGroup: ViewGroup): T
  // 在指定fragment中添加一个浮窗
  fun init(fragment: Fragment): T
  // 在指定activity中添加一个浮窗
  fun init(activity: Activity): T

配置控制器 - IFxConfigControl

   
    /** 是否启用动画
     * @param isEnable 是否启用
     * @param animationImpl 具体实现实例
     * */
    fun setEnableAnimation(isEnable: Boolean, animationImpl: FxAnimation)

    /** 是否启用动画 */
    fun setEnableAnimation(isEnable: Boolean)

    /** 设置边框相对应父view的偏移量 */
    fun setBorderMargin(t: Float, l: Float, b: Float, r: Float)

    /** 设置是否启用点击事件 */
    fun setEnableClick(isEnable: Boolean)

    /** 设置边缘偏移量 */
    fun setEdgeOffset(edgeOffset: Float)

    /** 启用位置修复 */
    fun setEnableAbsoluteFix(isEnable: Boolean)

    /** 启用边缘回弹
     * */
    fun setEnableEdgeRebound(isEnable: Boolean)

    /** 设置是否启用触摸事件
     * @param isEnable  true,则允许悬浮窗拖动
     * */
    fun setEnableTouch(isEnable: Boolean)

    /**
     * 启用边缘吸附
     * */
    fun setEnableEdgeAdsorption(isEnable: Boolean)

    /** 设置滑动监听 */
    fun setScrollListener(listener: IFxScrollListener)

    /** 设置view-lifecycle监听 */
    fun setViewLifecycleListener(listener: IFxViewLifecycle)

    /** 设置允许保存方向 */
    fun setEnableSaveDirection(impl: IFxConfigStorage, isEnable: Boolean = true)

    /** 设置方向保存开关
     * 设置之前,请确保已经设置了方向保存实例
     * */
    fun setEnableSaveDirection(isEnable: Boolean = true)

    /** 清除保存的位置信息 */
    fun clearLocationStorage()