lmw
2025-01-08 09b34483033cf5f117103f9bb82a90da8a42e80a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.lzf.easyfloat.data
 
import android.view.View
import com.lzf.easyfloat.anim.DefaultAnimator
import com.lzf.easyfloat.enums.ShowPattern
import com.lzf.easyfloat.enums.SidePattern
import com.lzf.easyfloat.interfaces.*
import com.lzf.easyfloat.utils.DefaultDisplayHeight
 
/**
 * @author: liuzhenfeng
 * @function: 浮窗的数据类,方便管理各属性
 * @date: 2019-07-29  10:14
 */
data class FloatConfig(
 
    // 浮窗的xml布局文件
    var layoutId: Int? = null,
    var layoutView: View? = null,
 
    // 当前浮窗的tag
    var floatTag: String? = null,
 
    // 是否可拖拽
    var dragEnable: Boolean = true,
    // 是否正在被拖拽
    var isDrag: Boolean = false,
    // 是否正在执行动画
    var isAnim: Boolean = false,
    // 是否显示
    var isShow: Boolean = false,
    // 是否包含EditText
    var hasEditText: Boolean = false,
    // 状态栏沉浸
    var immersionStatusBar: Boolean = false,
 
    // 浮窗的吸附方式(默认不吸附,拖到哪里是哪里)
    var sidePattern: SidePattern = SidePattern.DEFAULT,
 
    // 浮窗显示类型(默认只在当前页显示)
    var showPattern: ShowPattern = ShowPattern.CURRENT_ACTIVITY,
 
    // 宽高是否充满父布局
    var widthMatch: Boolean = false,
    var heightMatch: Boolean = false,
 
    // 浮窗的摆放方式,使用系统的Gravity属性
    var gravity: Int = 0,
    // 坐标的偏移量
    var offsetPair: Pair<Int, Int> = Pair(0, 0),
    // 固定的初始坐标,左上角坐标
    var locationPair: Pair<Int, Int> = Pair(0, 0),
    // ps:优先使用固定坐标,若固定坐标不为原点坐标,gravity属性和offset属性无效
 
    // 四周边界值
    var leftBorder: Int = 0,
    var topBorder: Int = -999,
    var rightBorder: Int = 9999,
    var bottomBorder: Int = 9999,
 
    // Callbacks
    var invokeView: OnInvokeView? = null,
    var callbacks: OnFloatCallbacks? = null,
    // 通过Kotlin DSL设置回调,无需复写全部方法,按需复写
    var floatCallbacks: FloatCallbacks? = null,
 
    // 出入动画
    var floatAnimator: OnFloatAnimator? = DefaultAnimator(),
 
    // 设置屏幕的有效显示高度(不包含虚拟导航栏的高度),仅针对系统浮窗,一般不用复写
    var displayHeight: OnDisplayHeight = DefaultDisplayHeight(),
 
    // 不需要显示系统浮窗的页面集合,参数为类名
    val filterSet: MutableSet<String> = mutableSetOf(),
    // 是否设置,当前创建的页面也被过滤
    internal var filterSelf: Boolean = false,
    // 是否需要显示,当过滤信息匹配上时,该值为false(用户手动调用隐藏,该值也为false,相当于手动过滤)
    internal var needShow: Boolean = true
 
)