Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
359cc726
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
10 个月 前同步成功
通知
166
Star
19623
Fork
3062
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DoraemonKit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
359cc726
编写于
9月 29, 2021
作者:
A
alvince
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Feat: [Android] fits entry classes code style in Kotlin
上级
ec6c9b99
变更
33
隐藏空白更改
内联
并排
Showing
33 changed file
with
473 addition
and
572 deletion
+473
-572
Android/.editorconfig
Android/.editorconfig
+17
-0
Android/dokit-weex/src/main/java/com/didichuxing/doraemonkit/weex/log/WeexLogKit.kt
...n/java/com/didichuxing/doraemonkit/weex/log/WeexLogKit.kt
+3
-3
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoKit.kt
.../dokit/src/main/java/com/didichuxing/doraemonkit/DoKit.kt
+163
-205
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoKitEnv.kt
...kit/src/main/java/com/didichuxing/doraemonkit/DoKitEnv.kt
+19
-0
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoKitReal.kt
...it/src/main/java/com/didichuxing/doraemonkit/DoKitReal.kt
+8
-10
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DokitActivityLifecycleCallbacks.kt
...idichuxing/doraemonkit/DokitActivityLifecycleCallbacks.kt
+8
-8
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoraemonKit.kt
.../src/main/java/com/didichuxing/doraemonkit/DoraemonKit.kt
+2
-2
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/alignruler/AlignRulerKit.kt
...m/didichuxing/doraemonkit/kit/alignruler/AlignRulerKit.kt
+12
-16
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/core/BlockMonitorManager.java
...oraemonkit/kit/blockmonitor/core/BlockMonitorManager.java
+5
-5
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/colorpick/ImageCapture.java
...m/didichuxing/doraemonkit/kit/colorpick/ImageCapture.java
+3
-3
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/AbsDokitView.kt
...java/com/didichuxing/doraemonkit/kit/core/AbsDokitView.kt
+16
-16
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/AbsDokitViewManager.kt
...m/didichuxing/doraemonkit/kit/core/AbsDokitViewManager.kt
+1
-3
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/DokitViewManager.kt
.../com/didichuxing/doraemonkit/kit/core/DokitViewManager.kt
+61
-95
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/DokitViewManagerInterface.kt
...chuxing/doraemonkit/kit/core/DokitViewManagerInterface.kt
+4
-10
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/NormalDoKitViewManager.kt
...idichuxing/doraemonkit/kit/core/NormalDoKitViewManager.kt
+31
-51
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/SimpleDoKitLauncher.kt
...m/didichuxing/doraemonkit/kit/core/SimpleDoKitLauncher.kt
+4
-5
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/SystemDoKitViewManager.kt
...idichuxing/doraemonkit/kit/core/SystemDoKitViewManager.kt
+43
-60
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/largepicture/LargeImageListAdapter.java
...g/doraemonkit/kit/largepicture/LargeImageListAdapter.java
+3
-3
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/layoutborder/LayoutBorderKit.kt
...dichuxing/doraemonkit/kit/layoutborder/LayoutBorderKit.kt
+4
-6
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/manual/PosAdjustKit.kt
...om/didichuxing/doraemonkit/kit/lbs/manual/PosAdjustKit.kt
+7
-8
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/loginfo/LogInfoDokitView.java
...didichuxing/doraemonkit/kit/loginfo/LogInfoDokitView.java
+3
-3
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/loginfo/LogInfoKit.kt
...ava/com/didichuxing/doraemonkit/kit/loginfo/LogInfoKit.kt
+7
-9
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/main/MainIconDoKitView.kt
...com/didichuxing/doraemonkit/kit/main/MainIconDoKitView.kt
+4
-3
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/network/room_db/DokitDbManager.java
...uxing/doraemonkit/kit/network/room_db/DokitDbManager.java
+8
-8
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/network/ui/NetworkDetailView.java
...chuxing/doraemonkit/kit/network/ui/NetworkDetailView.java
+4
-4
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/performance/PerformanceDataManager.java
...g/doraemonkit/kit/performance/PerformanceDataManager.java
+3
-2
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/timecounter/AppStartInfoFragment.java
...ing/doraemonkit/kit/timecounter/AppStartInfoFragment.java
+3
-3
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/toolpanel/ToolPanelDoKitView.kt
...dichuxing/doraemonkit/kit/toolpanel/ToolPanelDoKitView.kt
+2
-2
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/uiperformance/UIPerformanceKit.kt
...chuxing/doraemonkit/kit/uiperformance/UIPerformanceKit.kt
+8
-9
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/viewcheck/ViewCheckerKit.kt
...m/didichuxing/doraemonkit/kit/viewcheck/ViewCheckerKit.kt
+6
-8
Android/dokit/src/main/java/com/didichuxing/doraemonkit/util/DoKitCommUtil.java
.../java/com/didichuxing/doraemonkit/util/DoKitCommUtil.java
+6
-8
Android/dokit/src/main/java/com/didichuxing/doraemonkit/util/UIUtils.java
...c/main/java/com/didichuxing/doraemonkit/util/UIUtils.java
+4
-4
Android/settings.gradle
Android/settings.gradle
+1
-0
未找到文件。
Android/.editorconfig
0 → 100644
浏览文件 @
359cc726
# http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
[*.java]
max_line_length = 140
wildcard_import_limit = 99
[*.kt]
max_line_length = 160
wildcard_import_limit = 99
Android/dokit-weex/src/main/java/com/didichuxing/doraemonkit/weex/log/WeexLogKit.kt
浏览文件 @
359cc726
...
...
@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.weex.log
import
android.app.Activity
import
android.content.Context
import
com.didichuxing.doraemonkit.DoKit
.Companion.launchFloating
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.kit.AbstractKit
import
com.didichuxing.doraemonkit.kit.loginfo.LogInfoManager
import
com.didichuxing.doraemonkit.weex.R
...
...
@@ -20,7 +20,7 @@ class WeexLogKit : AbstractKit() {
get
()
=
R
.
mipmap
.
dk_log_info
override
fun
onClickWithReturn
(
activity
:
Activity
):
Boolean
{
launchFloating
(
WeexLogInfoDokitView
::
class
.
java
)
DoKit
.
launchFloating
<
WeexLogInfoDokitView
>(
)
//开启日志服务
LogInfoManager
.
getInstance
().
start
()
...
...
@@ -34,4 +34,4 @@ class WeexLogKit : AbstractKit() {
override
fun
innerKitId
():
String
{
return
"dokit_sdk_weex_ck_log"
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoKit.kt
浏览文件 @
359cc726
...
...
@@ -21,192 +21,171 @@ import kotlin.reflect.KClass
* 修订历史:
* ================================================
*/
public
class
DoKit
private
constructor
()
{
companion
object
{
const
val
TAG
=
"DoKit"
lateinit
var
APPLICATION
:
Application
/**
* 主icon是否处于显示状态
*/
@JvmStatic
val
isMainIconShow
:
Boolean
get
()
=
DoKitReal
.
isShow
/**
* 是否已完成初始化
*/
@JvmStatic
val
isInit
:
Boolean
get
()
=
DoKitReal
.
isInit
/**
* 显示主icon
*/
@JvmStatic
fun
show
()
{
DoKitReal
.
show
()
}
/**
* 直接显示工具面板页面
*/
@JvmStatic
fun
showToolPanel
()
{
DoKitReal
.
showToolPanel
()
}
/**
* 直接隐藏工具面板
*/
@JvmStatic
fun
hideToolPanel
()
{
DoKitReal
.
hideToolPanel
()
}
object
DoKit
{
const
val
TAG
=
"DoKit"
@Deprecated
(
message
=
"Instead with DokitEnv.requireApp()"
,
replaceWith
=
ReplaceWith
(
"DokitEnv.requireApp()"
,
"com.didichuxing.doraemonkit.DokitEnv"
)
)
val
APPLICATION
:
Application
get
()
=
DoKitEnv
.
requireApp
()
/**
* 主icon是否处于显示状态
*/
@JvmStatic
val
isMainIconShow
:
Boolean
get
()
=
DoKitReal
.
isShow
/**
* 是否已完成初始化
*/
@JvmStatic
val
isInit
:
Boolean
get
()
=
DoKitReal
.
isInit
/**
* 显示主icon
*/
@JvmStatic
fun
show
()
{
DoKitReal
.
show
()
}
/**
* 隐藏主icon
*/
@JvmStatic
fun
hide
()
{
DoKitReal
.
hide
()
}
/**
* 直接显示工具面板页面
*/
@JvmStatic
fun
showToolPanel
()
{
DoKitReal
.
showToolPanel
()
}
/**
* 启动悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun
launchFloating
(
targetClass
:
Class
<
out
AbsDokitView
>,
mode
:
DoKitViewLaunchMode
=
DoKitViewLaunchMode
.
SINGLE_INSTANCE
,
bundle
:
Bundle
?
=
null
)
{
DoKitReal
.
launchFloating
(
targetClass
,
mode
,
bundle
)
}
/**
* 直接隐藏工具面板
*/
@JvmStatic
fun
hideToolPanel
()
{
DoKitReal
.
hideToolPanel
()
}
/**
* 隐藏主icon
*/
@JvmStatic
fun
hide
()
{
DoKitReal
.
hide
()
}
/**
* 启动悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun
launchFloating
(
targetClass
:
KClass
<
out
AbsDokitView
>,
mode
:
DoKitViewLaunchMode
=
DoKitViewLaunchMode
.
SINGLE_INSTANCE
,
bundle
:
Bundle
?
=
null
)
{
launchFloating
(
targetClass
.
java
,
mode
,
bundle
)
}
/**
* 启动悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun
launchFloating
(
targetClass
:
Class
<
out
AbsDokitView
>,
mode
:
DoKitViewLaunchMode
=
DoKitViewLaunchMode
.
SINGLE_INSTANCE
,
bundle
:
Bundle
?
=
null
)
{
DoKitReal
.
launchFloating
(
targetClass
,
mode
,
bundle
)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun
removeFloating
(
targetClass
:
Class
<
out
AbsDokitView
>)
{
DoKitReal
.
removeFloating
(
targetClass
)
}
/**
* 启动悬浮窗
*/
@Deprecated
(
"Use launchFloating(DoKitViewLaunchMode, Bundle) directly"
,
ReplaceWith
(
"Dokit.launchFloating(mode, bundle)"
)
)
fun
launchFloating
(
targetClass
:
KClass
<
out
AbsDokitView
>,
mode
:
DoKitViewLaunchMode
=
DoKitViewLaunchMode
.
SINGLE_INSTANCE
,
bundle
:
Bundle
?
=
null
)
{
launchFloating
(
targetClass
.
java
,
mode
,
bundle
)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun
removeFloating
(
targetClass
:
KClass
<
out
AbsDokitView
>)
{
removeFloating
(
targetClass
.
java
)
}
/**
* 启动悬浮窗
*/
inline
fun
<
reified
T
:
AbsDokitView
>
launchFloating
(
mode
:
DoKitViewLaunchMode
=
DoKitViewLaunchMode
.
SINGLE_INSTANCE
,
bundle
:
Bundle
?
=
null
)
{
DoKitReal
.
launchFloating
(
T
::
class
.
java
,
mode
,
bundle
)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun
removeFloating
(
dokitView
:
AbsDokitView
)
{
DoKitReal
.
removeFloating
(
dokitView
)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun
removeFloating
(
targetClass
:
Class
<
out
AbsDokitView
>
)
{
DoKitReal
.
removeFloating
(
targetClass
)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@Deprecated
(
"Use removeFloating(Class) directly"
,
ReplaceWith
(
"Dokit.removeFloating(class)"
))
fun
removeFloating
(
targetClass
:
KClass
<
out
AbsDokitView
>)
{
removeFloating
(
targetClass
.
java
)
}
/**
* 启动全屏页面
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun
launchFullScreen
(
targetClass
:
Class
<
out
BaseFragment
>,
context
:
Context
?
=
null
,
bundle
:
Bundle
?
=
null
,
isSystemFragment
:
Boolean
=
false
)
{
DoKitReal
.
launchFullScreen
(
targetClass
,
context
,
bundle
,
isSystemFragment
)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun
removeFloating
(
dokitView
:
AbsDokitView
)
{
DoKitReal
.
removeFloating
(
dokitView
)
}
/**
* 启动全屏页面
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun
launchFullScreen
(
targetClass
:
KClass
<
out
BaseFragment
>,
context
:
Context
?
=
null
,
bundle
:
Bundle
?
=
null
,
isSystemFragment
:
Boolean
=
false
)
{
launchFullScreen
(
targetClass
.
java
,
context
,
bundle
,
isSystemFragment
)
}
/**
* 启动全屏页面
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun
launchFullScreen
(
targetClass
:
Class
<
out
BaseFragment
>,
context
:
Context
?
=
null
,
bundle
:
Bundle
?
=
null
,
isSystemFragment
:
Boolean
=
false
)
{
DoKitReal
.
launchFullScreen
(
targetClass
,
context
,
bundle
,
isSystemFragment
)
}
/**
* 启动全屏页面
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@Deprecated
(
"Use launchFullScreen(Class, Context, Bundle, Boolean) directly"
,
ReplaceWith
(
"Dokit.launchFullScreen(class, context, bundle, isSystemFragment)"
)
)
fun
launchFullScreen
(
targetClass
:
KClass
<
out
BaseFragment
>,
context
:
Context
?
=
null
,
bundle
:
Bundle
?
=
null
,
isSystemFragment
:
Boolean
=
false
)
{
launchFullScreen
(
targetClass
.
java
,
context
,
bundle
,
isSystemFragment
)
}
@JvmStatic
fun
<
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
?,
clazz
:
Class
<
out
T
>
):
T
?
{
return
DoKitReal
.
getDoKitView
<
T
>(
activity
,
clazz
)
}
@JvmStatic
fun
<
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
?,
clazz
:
Class
<
out
T
>):
T
?
{
return
DoKitReal
.
getDoKitView
<
T
>(
activity
,
clazz
)
}
@JvmStatic
fun
<
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
?,
clazz
:
KClass
<
out
T
>
):
T
?
{
return
getDoKitView
(
activity
,
clazz
.
java
)
}
@Deprecated
(
"Use getDoKitView(activity) directly"
,
ReplaceWith
(
"DoKit.getDoKitView(activity)"
))
fun
<
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
?,
clazz
:
KClass
<
out
T
>):
T
?
{
return
getDoKitView
(
activity
,
clazz
.
java
)
}
/**
* 发送自定义一机多控事件
*/
@JvmStatic
fun
sendCustomEvent
(
eventType
:
String
,
view
:
View
?
=
null
,
param
:
Map
<
String
,
String
>?
=
null
)
{
DoKitReal
.
sendCustomEvent
(
eventType
,
view
,
param
)
}
inline
fun
<
reified
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
):
T
?
=
DoKitReal
.
getDoKitView
(
activity
,
T
::
class
.
java
)
/**
* 获取一机多控类型
*/
@JvmStatic
fun
mcMode
():
WSMode
{
return
DoKitManager
.
WS_MODE
}
/**
* 发送自定义一机多控事件
*/
@JvmStatic
fun
sendCustomEvent
(
eventType
:
String
,
view
:
View
?
=
null
,
param
:
Map
<
String
,
String
>?
=
null
)
{
DoKitReal
.
sendCustomEvent
(
eventType
,
view
,
param
)
}
/**
* 获取一机多控类型
*/
@JvmStatic
fun
mcMode
():
WSMode
=
DoKitManager
.
WS_MODE
class
Builder
(
private
val
app
:
Application
)
{
private
var
productId
:
String
=
""
...
...
@@ -214,111 +193,90 @@ public class DoKit private constructor() {
private
var
listKits
:
List
<
AbstractKit
>
=
arrayListOf
()
init
{
APPLICATION
=
app
DoKitEnv
.
app
=
app
}
fun
productId
(
productId
:
String
):
Builder
{
this
.
productId
=
productId
return
this
}
fun
productId
(
productId
:
String
):
Builder
=
apply
{
this
.
productId
=
productId
}
/**
* mapKits & listKits 二选一
*/
fun
customKits
(
mapKits
:
LinkedHashMap
<
String
,
List
<
AbstractKit
>>):
Builder
{
this
.
mapKits
=
mapKits
return
this
}
fun
customKits
(
mapKits
:
LinkedHashMap
<
String
,
List
<
AbstractKit
>>):
Builder
=
apply
{
this
.
mapKits
=
mapKits
}
/**
* mapKits & listKits 二选一
*/
fun
customKits
(
listKits
:
List
<
AbstractKit
>):
Builder
{
this
.
listKits
=
listKits
return
this
}
fun
customKits
(
listKits
:
List
<
AbstractKit
>):
Builder
=
apply
{
this
.
listKits
=
listKits
}
/**
* H5任意门全局回调
*/
fun
webDoorCallback
(
callback
:
WebDoorManager
.
WebDoorCallback
):
Builder
{
fun
webDoorCallback
(
callback
:
WebDoorManager
.
WebDoorCallback
):
Builder
=
this
.
apply
{
DoKitReal
.
setWebDoorCallback
(
callback
)
return
this
}
/**
* 禁用app信息上传开关,该上传信息只为做DoKit接入量的统计,如果用户需要保护app隐私,可调用该方法进行禁用
*/
fun
disableUpload
():
Builder
{
fun
disableUpload
():
Builder
=
this
.
apply
{
DoKitReal
.
disableUpload
()
return
this
}
fun
debug
(
debug
:
Boolean
):
Builder
{
fun
debug
(
debug
:
Boolean
):
Builder
=
this
.
apply
{
DoKitReal
.
setDebug
(
debug
)
return
this
}
/**
* 是否显示主入口icon
*/
fun
alwaysShowMainIcon
(
alwaysShow
:
Boolean
):
Builder
{
fun
alwaysShowMainIcon
(
alwaysShow
:
Boolean
):
Builder
=
this
.
apply
{
DoKitReal
.
setAlwaysShowMainIcon
(
alwaysShow
)
return
this
}
/**
* 设置加密数据库密码
*/
fun
databasePass
(
map
:
Map
<
String
,
String
>):
Builder
{
fun
databasePass
(
map
:
Map
<
String
,
String
>):
Builder
=
this
.
apply
{
DoKitReal
.
setDatabasePass
(
map
)
return
this
}
/**
* 设置文件管理助手http端口号
*/
fun
fileManagerHttpPort
(
port
:
Int
):
Builder
{
fun
fileManagerHttpPort
(
port
:
Int
):
Builder
=
this
.
apply
{
DoKitReal
.
setFileManagerHttpPort
(
port
)
return
this
}
/**
* 一机多控端口号
*/
fun
mcWSPort
(
port
:
Int
):
Builder
{
fun
mcWSPort
(
port
:
Int
):
Builder
=
this
.
apply
{
DoKitReal
.
setMCWSPort
(
port
)
return
this
}
/**
* 一机多控自定义拦截器
*/
fun
mcClientProcess
(
interceptor
:
McClientProcessor
):
Builder
{
fun
mcClientProcess
(
interceptor
:
McClientProcessor
):
Builder
=
this
.
apply
{
DoKitReal
.
setMCIntercept
(
interceptor
)
return
this
}
/**
*设置dokit的性能监控全局回调
*/
fun
callBack
(
callback
:
DoKitCallBack
):
Builder
{
fun
callBack
(
callback
:
DoKitCallBack
):
Builder
=
this
.
apply
{
DoKitReal
.
setCallBack
(
callback
)
return
this
}
/**
* 设置扩展网络拦截器的代理对象
*/
fun
netExtInterceptor
(
extInterceptorProxy
:
DokitExtInterceptor
.
DokitExtInterceptorProxy
):
Builder
{
fun
netExtInterceptor
(
extInterceptorProxy
:
DokitExtInterceptor
.
DokitExtInterceptorProxy
):
Builder
=
this
.
apply
{
DoKitReal
.
setNetExtInterceptor
(
extInterceptorProxy
)
return
this
}
fun
build
()
{
DoKitReal
.
install
(
app
,
mapKits
,
listKits
,
productId
)
}
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoKitEnv.kt
0 → 100644
浏览文件 @
359cc726
package
com.didichuxing.doraemonkit
import
android.app.Application
/**
* Created by alvince on 2021/9/29
*
* @author alvince.zy@gmail.com
*/
internal
object
DoKitEnv
{
@Volatile
var
app
:
Application
?
=
null
@JvmStatic
fun
requireApp
():
Application
{
return
app
?:
throw
IllegalStateException
(
"Dokit app no set"
)
}
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoKitReal.kt
浏览文件 @
359cc726
...
...
@@ -150,7 +150,7 @@ object DoKitReal {
//addSystemKitForTest(app)
//初始化悬浮窗管理类
DokitViewManager
.
instance
.
init
()
DokitViewManager
.
INSTANCE
.
init
()
//上传app基本信息便于统计
if
(
DoKitManager
.
ENABLE_UPLOAD
)
{
try
{
...
...
@@ -425,7 +425,7 @@ object DoKitReal {
* 显示系统悬浮窗icon
*/
private
fun
showMainIcon
()
{
DokitViewManager
.
instance
.
attachMainIcon
(
ActivityUtils
.
getTopActivity
())
DokitViewManager
.
INSTANCE
.
attachMainIcon
(
ActivityUtils
.
getTopActivity
())
}
fun
show
()
{
...
...
@@ -439,17 +439,17 @@ object DoKitReal {
* 直接显示工具面板页面
*/
fun
showToolPanel
()
{
DokitViewManager
.
instance
.
attachToolPanel
(
ActivityUtils
.
getTopActivity
())
DokitViewManager
.
INSTANCE
.
attachToolPanel
(
ActivityUtils
.
getTopActivity
())
}
fun
hideToolPanel
()
{
DokitViewManager
.
instance
.
detachToolPanel
()
DokitViewManager
.
INSTANCE
.
detachToolPanel
()
}
fun
hide
()
{
DoKitManager
.
MAIN_ICON_HAS_SHOW
=
false
DoKitManager
.
ALWAYS_SHOW_MAIN_ICON
=
false
DokitViewManager
.
instance
.
detachMainIcon
()
DokitViewManager
.
INSTANCE
.
detachMainIcon
()
}
fun
sendCustomEvent
(
eventType
:
String
,
view
:
View
?
=
null
,
param
:
Map
<
String
,
String
>?
=
null
)
{
...
...
@@ -575,12 +575,10 @@ object DoKitReal {
activity
:
Activity
?,
clazz
:
Class
<
out
T
>
):
T
?
{
return
if
(
DokitViewManager
.
instance
.
getDoKitView
(
activity
,
clazz
)
==
null
)
{
return
if
(
DokitViewManager
.
INSTANCE
.
getDoKitView
(
activity
,
clazz
)
==
null
)
{
null
}
else
{
DokitViewManager
.
instance
.
getDoKitView
(
activity
,
clazz
)
as
T
DokitViewManager
.
INSTANCE
.
getDoKitView
(
activity
,
clazz
)
as
T
}
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DokitActivityLifecycleCallbacks.kt
浏览文件 @
359cc726
...
...
@@ -66,7 +66,7 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
return
}
if
(
startedActivityCounts
==
0
)
{
DokitViewManager
.
instance
.
notifyForeground
()
DokitViewManager
.
INSTANCE
.
notifyForeground
()
}
startedActivityCounts
++
}
catch
(
e
:
Exception
)
{
...
...
@@ -106,7 +106,7 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
for
(
listener
in
LifecycleListenerUtil
.
LIFECYCLE_LISTENERS
)
{
listener
.
onActivityPaused
(
activity
)
}
DokitViewManager
.
instance
.
onActivityPaused
(
activity
)
DokitViewManager
.
INSTANCE
.
onActivityPaused
(
activity
)
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
...
...
@@ -121,11 +121,11 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
startedActivityCounts--
//通知app退出到后台
if
(
startedActivityCounts
==
0
)
{
DokitViewManager
.
instance
.
notifyBackground
()
DokitViewManager
.
INSTANCE
.
notifyBackground
()
//app 切换到后台 上传埋点数据
DataPickManager
.
getInstance
().
postData
()
}
DokitViewManager
.
instance
.
onActivityStopped
(
activity
)
DokitViewManager
.
INSTANCE
.
onActivityStopped
(
activity
)
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
...
...
@@ -153,7 +153,7 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
sFragmentLifecycleCallbacks
)
}
DokitViewManager
.
instance
.
onActivityDestroyed
(
activity
)
DokitViewManager
.
INSTANCE
.
onActivityDestroyed
(
activity
)
//暂时无法很好的解决屏幕旋转的问题
//DoKitOrientationEventListener orientationEventListener = mOrientationEventListeners.get(activity.getClass().getSimpleName());
...
...
@@ -175,11 +175,11 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
private
fun
dispatchOnActivityResumed
(
activity
:
Activity
)
{
if
(
DoKitManager
.
IS_NORMAL_FLOAT_MODE
)
{
//显示内置dokitView icon
DokitViewManager
.
instance
.
dispatchOnActivityResumed
(
activity
)
DokitViewManager
.
INSTANCE
.
dispatchOnActivityResumed
(
activity
)
}
else
{
//悬浮窗权限 vivo 华为可以不需要动态权限 小米需要
if
(
DoKitPermissionUtil
.
canDrawOverlays
(
activity
))
{
DokitViewManager
.
instance
.
dispatchOnActivityResumed
(
activity
)
DokitViewManager
.
INSTANCE
.
dispatchOnActivityResumed
(
activity
)
}
else
{
//请求悬浮窗权限
requestPermission
(
activity
)
...
...
@@ -315,4 +315,4 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
init
{
sFragmentLifecycleCallbacks
=
DokitFragmentLifecycleCallbacks
()
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/DoraemonKit.kt
浏览文件 @
359cc726
...
...
@@ -65,7 +65,7 @@ object DoraemonKit {
productId
:
String
?
=
""
)
{
APPLICATION
=
app
DoKit
.
APPLICATION
=
app
DoKit
Env
.
app
=
app
try
{
DoKitReal
.
install
(
app
,
mapKits
?:
linkedMapOf
(),
listKits
...
...
@@ -176,4 +176,4 @@ object DoraemonKit {
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/alignruler/AlignRulerKit.kt
浏览文件 @
359cc726
...
...
@@ -2,8 +2,7 @@ package com.didichuxing.doraemonkit.kit.alignruler
import
android.app.Activity
import
android.content.Context
import
com.didichuxing.doraemonkit.DoKit.Companion.getDoKitView
import
com.didichuxing.doraemonkit.DoKit.Companion.launchFloating
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.config.AlignRulerConfig
import
com.didichuxing.doraemonkit.kit.AbstractKit
...
...
@@ -21,16 +20,15 @@ class AlignRulerKit : AbstractKit() {
get
()
=
R
.
mipmap
.
dk_align_ruler
override
fun
onClickWithReturn
(
activity
:
Activity
):
Boolean
{
launchFloating
(
AlignRulerMarkerDokitView
::
class
.
java
)
launchFloating
(
AlignRulerLineDokitView
::
class
.
java
)
launchFloating
(
AlignRulerInfoDokitView
::
class
.
java
)
val
alignRulerInfoDokitView
=
getDoKitView
(
ActivityUtils
.
getTopActivity
(),
AlignRulerInfoDokitView
::
class
.
java
)
!!
alignRulerInfoDokitView
.
setCheckBoxListener
{
isChecked
->
val
alignRulerLineDokitView
=
getDoKitView
(
ActivityUtils
.
getTopActivity
(),
AlignRulerLineDokitView
::
class
.
java
)
!!
alignRulerLineDokitView
.
alignInfoView
.
refreshInfo
(
isChecked
)
}
DoKit
.
launchFloating
<
AlignRulerMarkerDokitView
>()
DoKit
.
launchFloating
<
AlignRulerLineDokitView
>()
DoKit
.
launchFloating
<
AlignRulerInfoDokitView
>()
DoKit
.
getDoKitView
<
AlignRulerInfoDokitView
>(
ActivityUtils
.
getTopActivity
())
?.
setCheckBoxListener
{
isChecked
->
DoKit
.
getDoKitView
<
AlignRulerLineDokitView
>(
ActivityUtils
.
getTopActivity
())
?.
alignInfoView
?.
refreshInfo
(
isChecked
)
}
AlignRulerConfig
.
setAlignRulerOpen
(
true
)
return
true
}
...
...
@@ -42,7 +40,5 @@ class AlignRulerKit : AbstractKit() {
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
innerKitId
():
String
{
return
"dokit_sdk_ui_ck_aligin_scaleplate"
}
}
\ No newline at end of file
override
fun
innerKitId
():
String
=
"dokit_sdk_ui_ck_aligin_scaleplate"
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/core/BlockMonitorManager.java
浏览文件 @
359cc726
package
com.didichuxing.doraemonkit.kit.blockmonitor.core
;
import
static
android
.
app
.
PendingIntent
.
FLAG_UPDATE_CURRENT
;
import
android.app.PendingIntent
;
import
android.content.Context
;
import
android.content.Intent
;
...
...
@@ -9,13 +11,13 @@ import android.text.TextUtils;
import
androidx.annotation.NonNull
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKit
Env
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.constant.BundleKey
;
import
com.didichuxing.doraemonkit.kit.core.DoKitManager
;
import
com.didichuxing.doraemonkit.constant.FragmentIndex
;
import
com.didichuxing.doraemonkit.kit.blockmonitor.BlockMonitorFragment
;
import
com.didichuxing.doraemonkit.kit.blockmonitor.bean.BlockInfo
;
import
com.didichuxing.doraemonkit.kit.core.DoKitManager
;
import
com.didichuxing.doraemonkit.kit.core.UniversalActivity
;
import
com.didichuxing.doraemonkit.kit.health.AppHealthInfoUtil
;
import
com.didichuxing.doraemonkit.kit.health.model.AppHealthInfo
;
...
...
@@ -28,8 +30,6 @@ import java.util.ArrayList;
import
java.util.Collections
;
import
java.util.List
;
import
static
android
.
app
.
PendingIntent
.
FLAG_UPDATE_CURRENT
;
/**
* @desc: 卡顿检测管理类
*/
...
...
@@ -65,7 +65,7 @@ public class BlockMonitorManager {
// 卡顿检测和跳转耗时统计都使用了Printer的方式,无法同时工作
TimeCounterManager
.
get
().
stop
();
mContext
=
DoKit
.
APPLICATION
.
getApplicationContext
();
mContext
=
DoKit
Env
.
requireApp
()
.
getApplicationContext
();
if
(
mMonitorCore
==
null
)
{
mMonitorCore
=
new
MonitorCore
();
}
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/colorpick/ImageCapture.java
浏览文件 @
359cc726
...
...
@@ -18,7 +18,7 @@ import android.os.Bundle;
import
androidx.annotation.RequiresApi
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKit
Env
;
import
com.didichuxing.doraemonkit.util.AppUtils
;
import
com.didichuxing.doraemonkit.util.LogHelper
;
import
com.didichuxing.doraemonkit.util.UIUtils
;
...
...
@@ -42,7 +42,7 @@ public class ImageCapture {
public
void
init
(
Context
context
,
Bundle
bundle
,
ColorPickerDokitView
colorPickerDokitView
)
throws
Exception
{
this
.
mColorPickerDokitView
=
colorPickerDokitView
;
PackageManager
packageManager
=
DoKit
.
APPLICATION
.
getPackageManager
();
PackageManager
packageManager
=
DoKit
Env
.
requireApp
()
.
getPackageManager
();
ApplicationInfo
applicationInfo
=
packageManager
.
getApplicationInfo
(
AppUtils
.
getAppPackageName
(),
0
);
//适配Android Q
if
(
applicationInfo
.
targetSdkVersion
>=
29
)
{
...
...
@@ -158,4 +158,4 @@ public class ImageCapture {
mBitmap
=
null
;
}
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/AbsDokitView.kt
浏览文件 @
359cc726
...
...
@@ -60,7 +60,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
var
mTouchProxy
=
TouchProxy
(
this
)
@JvmField
protected
var
mWindowManager
=
DokitViewManager
.
instance
.
windowManager
protected
var
mWindowManager
=
DokitViewManager
.
INSTANCE
.
windowManager
/**
* 创建FrameLayout#LayoutParams 内置悬浮窗调用
...
...
@@ -129,12 +129,12 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
* 上一次DoKitview的位置信息
*/
private
val
mLastDokitViewPosInfo
:
LastDokitViewPosInfo
by
lazy
{
if
(
DokitViewManager
.
instance
.
getLastDokitViewPosInfo
(
tag
)
==
null
)
{
if
(
DokitViewManager
.
INSTANCE
.
getLastDokitViewPosInfo
(
tag
)
==
null
)
{
val
posInfo
=
LastDokitViewPosInfo
()
DokitViewManager
.
instance
.
saveLastDokitViewPosInfo
(
tag
,
posInfo
)
DokitViewManager
.
INSTANCE
.
saveLastDokitViewPosInfo
(
tag
,
posInfo
)
posInfo
}
else
{
DokitViewManager
.
instance
.
getLastDokitViewPosInfo
(
tag
)
!!
DokitViewManager
.
INSTANCE
.
getLastDokitViewPosInfo
(
tag
)
!!
}
}
...
...
@@ -173,7 +173,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
//调用onCreate方法
onCreate
(
context
)
if
(!
isNormalMode
)
{
DokitViewManager
.
instance
.
addDokitViewAttachedListener
(
this
)
DokitViewManager
.
INSTANCE
.
addDokitViewAttachedListener
(
this
)
}
mRootView
=
if
(
isNormalMode
)
{
DokitFrameLayout
(
context
,
DokitFrameLayout
.
DoKitFrameLayoutFlag_CHILD
)
...
...
@@ -301,7 +301,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
normalLayoutParams
?.
width
=
mDokitViewLayoutParams
.
width
normalLayoutParams
?.
height
=
mDokitViewLayoutParams
.
height
normalLayoutParams
?.
gravity
=
mDokitViewLayoutParams
.
gravity
val
doKitViewInfo
=
DokitViewManager
.
instance
.
getDoKitViewPos
(
tag
)
val
doKitViewInfo
=
DokitViewManager
.
INSTANCE
.
getDoKitViewPos
(
tag
)
if
(
doKitViewInfo
!=
null
)
{
//竖向
if
(
doKitViewInfo
.
orientation
==
Configuration
.
ORIENTATION_PORTRAIT
)
{
...
...
@@ -322,7 +322,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
* 用于普通模式下的横竖屏切换
*/
private
fun
portraitOrLandscape
()
{
val
doKitViewInfo
=
DokitViewManager
.
instance
.
getDoKitViewPos
(
tag
)
val
doKitViewInfo
=
DokitViewManager
.
INSTANCE
.
getDoKitViewPos
(
tag
)
if
(
doKitViewInfo
!=
null
)
{
//横竖屏切换兼容
if
(
ScreenUtils
.
isPortrait
())
{
...
...
@@ -390,7 +390,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
}
}
DokitViewManager
.
instance
.
saveDokitViewPos
(
DokitViewManager
.
INSTANCE
.
saveDokitViewPos
(
tag
,
normalLayoutParams
?.
leftMargin
?:
0
,
normalLayoutParams
?.
topMargin
?:
0
...
...
@@ -411,7 +411,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
systemLayoutParams
?.
gravity
=
mDokitViewLayoutParams
.
gravity
systemLayoutParams
?.
width
=
mDokitViewLayoutParams
.
width
systemLayoutParams
?.
height
=
mDokitViewLayoutParams
.
height
val
doKitViewInfo
=
DokitViewManager
.
instance
.
getDoKitViewPos
(
val
doKitViewInfo
=
DokitViewManager
.
INSTANCE
.
getDoKitViewPos
(
tag
)
if
(
doKitViewInfo
!=
null
)
{
...
...
@@ -427,15 +427,15 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
systemLayoutParams
?.
y
=
mDokitViewLayoutParams
.
y
}
systemLayoutParams
?.
let
{
DokitViewManager
.
instance
.
saveDokitViewPos
(
tag
,
it
.
x
,
it
.
y
)
DokitViewManager
.
INSTANCE
.
saveDokitViewPos
(
tag
,
it
.
x
,
it
.
y
)
}
}
override
fun
onDestroy
()
{
if
(!
isNormalMode
)
{
DokitViewManager
.
instance
.
removeDokitViewAttachedListener
(
this
)
DokitViewManager
.
INSTANCE
.
removeDokitViewAttachedListener
(
this
)
}
DokitViewManager
.
instance
.
removeLastDokitViewPosInfo
(
tag
)
DokitViewManager
.
INSTANCE
.
removeLastDokitViewPosInfo
(
tag
)
mAttachActivity
=
null
doKitViewScope
.
cancel
()
}
...
...
@@ -536,11 +536,11 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
//保存在内存中
if
(
isNormalMode
)
{
normalLayoutParams
?.
let
{
DokitViewManager
.
instance
.
saveDokitViewPos
(
tag
,
it
.
leftMargin
,
it
.
topMargin
)
DokitViewManager
.
INSTANCE
.
saveDokitViewPos
(
tag
,
it
.
leftMargin
,
it
.
topMargin
)
}
}
else
{
systemLayoutParams
?.
let
{
DokitViewManager
.
instance
.
saveDokitViewPos
(
tag
,
it
.
x
,
it
.
y
)
DokitViewManager
.
INSTANCE
.
saveDokitViewPos
(
tag
,
it
.
x
,
it
.
y
)
}
}
}
...
...
@@ -673,7 +673,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
this
.
leftMargin
=
FloatIconConfig
.
getLastPosX
()
this
.
topMargin
=
FloatIconConfig
.
getLastPosY
()
}
else
{
val
doKitViewInfo
=
DokitViewManager
.
instance
.
getDoKitViewPos
(
tag
)
val
doKitViewInfo
=
DokitViewManager
.
INSTANCE
.
getDoKitViewPos
(
tag
)
if
(
doKitViewInfo
!=
null
)
{
if
(
doKitViewInfo
.
orientation
==
Configuration
.
ORIENTATION_PORTRAIT
)
{
this
.
leftMargin
=
doKitViewInfo
.
portraitPoint
.
x
...
...
@@ -852,4 +852,4 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
open
fun
immInvalidate
()
{
mRootView
?.
requestLayout
()
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/AbsDokitViewManager.kt
浏览文件 @
359cc726
...
...
@@ -39,7 +39,6 @@ abstract class AbsDokitViewManager : DokitViewManagerInterface {
fun
attachMcRecodingDoKitView
(
activity
:
Activity
)
{
val
action
:
Map
<
String
,
String
>
=
mapOf
(
"action"
to
"launch_recoding_view"
)
DoKitManager
.
getModuleProcessor
(
DoKitModule
.
MODULE_MC
)
?.
proceed
(
action
)
}
/**
...
...
@@ -62,7 +61,6 @@ abstract class AbsDokitViewManager : DokitViewManagerInterface {
*/
abstract
fun
detachToolPanel
()
/**
* main activity 创建时回调
*
...
...
@@ -83,4 +81,4 @@ abstract class AbsDokitViewManager : DokitViewManagerInterface {
* @param activity
*/
abstract
fun
onActivityBackResume
(
activity
:
Activity
?)
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/DokitViewManager.kt
浏览文件 @
359cc726
...
...
@@ -5,12 +5,12 @@ import android.content.Context
import
android.content.res.Configuration
import
android.graphics.Point
import
android.view.WindowManager
import
androidx.collection.ArrayMap
import
androidx.room.Room
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.DoKit
Env
import
com.didichuxing.doraemonkit.kit.network.room_db.DokitDatabase
import
com.didichuxing.doraemonkit.kit.network.room_db.DokitDbManager
import
com.didichuxing.doraemonkit.util.ScreenUtils
import
kotlin.reflect.KClass
/**
* Created by jintai on 2018/10/23.
...
...
@@ -19,37 +19,35 @@ import kotlin.reflect.KClass
internal
class
DokitViewManager
:
DokitViewManagerInterface
{
companion
object
{
@JvmStatic
val
instance
:
DokitViewManager
by
lazy
{
DokitViewManager
()
}
private
const
val
TAG
=
"DokitViewManagerProxy"
@JvmStatic
val
INSTANCE
:
DokitViewManager
by
lazy
{
DokitViewManager
()
}
/**
* 每个类型在页面中的位置 只保存marginLeft 和marginTop
*/
private
val
mDoKitViewPos
:
MutableMap
<
String
,
DoKitViewInfo
>
by
lazy
{
mutableMapOf
<
String
,
DoKitViewInfo
>()
}
private
val
doKitViewPos
:
MutableMap
<
String
,
DoKitViewInfo
>
=
ArrayMap
<
String
,
DoKitViewInfo
>()
}
private
val
mLastDoKitViewPosInfoMaps
:
MutableMap
<
String
,
LastDokitViewPosInfo
>
by
lazy
{
mutableMapOf
<
String
,
LastDokitViewPosInfo
>()
}
private
val
mDoKitViewManager
:
AbsDokitViewManager
by
lazy
{
if
(
DoKitManager
.
IS_NORMAL_FLOAT_MODE
)
{
NormalDoKitViewManager
()
}
else
{
SystemDoKitViewManager
()
}
}
/**
* Retrieves app [WindowManager]
*
* @return WindowManager
*/
val
windowManager
:
WindowManager
get
()
=
DoKitEnv
.
requireApp
().
getSystemService
(
Context
.
WINDOW_SERVICE
)
as
WindowManager
private
val
lastDoKitViewPosInfoMaps
:
MutableMap
<
String
,
LastDokitViewPosInfo
>
=
ArrayMap
<
String
,
LastDokitViewPosInfo
>()
private
var
_doKitViewManager
:
AbsDokitViewManager
?
=
null
//下面注释表示允许主线程进行数据库操作,但是不推荐这样做。
//他可能造成主线程lock以及anr
//所以我们的操作都是在新线程完成的
val
db
:
DokitDatabase
by
lazy
{
Room
.
databaseBuilder
(
DoKit
.
APPLICATION
,
DoKit
Env
.
requireApp
()
,
DokitDatabase
::
class
.
java
,
"dokit-database"
)
//下面注释表示允许主线程进行数据库操作,但是不推荐这样做。
...
...
@@ -59,7 +57,6 @@ internal class DokitViewManager : DokitViewManagerInterface {
.
build
()
}
fun
init
()
{
//获取所有的intercept apis
DokitDbManager
.
getInstance
().
getAllInterceptApis
()
...
...
@@ -68,19 +65,18 @@ internal class DokitViewManager : DokitViewManagerInterface {
DokitDbManager
.
getInstance
().
getAllTemplateApis
()
}
/**
* 当app进入后台时调用
*/
override
fun
notifyBackground
()
{
mDoKitViewManager
.
notifyBackground
()
ensureViewManager
()
.
notifyBackground
()
}
/**
* 当app进入前台时调用
*/
override
fun
notifyForeground
()
{
mDoKitViewManager
.
notifyForeground
()
ensureViewManager
()
.
notifyForeground
()
}
/**
...
...
@@ -101,19 +97,18 @@ internal class DokitViewManager : DokitViewManagerInterface {
landscapePoint
.
x
=
marginLeft
landscapePoint
.
y
=
marginTop
}
if
(
mD
oKitViewPos
[
tag
]
==
null
)
{
if
(
d
oKitViewPos
[
tag
]
==
null
)
{
val
doKitViewInfo
=
DoKitViewInfo
(
orientation
,
portraitPoint
,
landscapePoint
)
mD
oKitViewPos
[
tag
]
=
d
oKitViewPos
[
tag
]
=
doKitViewInfo
}
else
{
val
doKitViewInfo
=
mD
oKitViewPos
[
tag
]
val
doKitViewInfo
=
d
oKitViewPos
[
tag
]
if
(
doKitViewInfo
!=
null
)
{
doKitViewInfo
.
orientation
=
orientation
doKitViewInfo
.
portraitPoint
=
portraitPoint
doKitViewInfo
.
landscapePoint
=
landscapePoint
}
}
}
/**
...
...
@@ -123,9 +118,7 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param tag
* @return
*/
fun
getDoKitViewPos
(
tag
:
String
):
DoKitViewInfo
?
{
return
mDoKitViewPos
[
tag
]
}
fun
getDoKitViewPos
(
tag
:
String
):
DoKitViewInfo
?
=
doKitViewPos
[
tag
]
/**
* 只有普通的浮标才需要调用
...
...
@@ -134,21 +127,15 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param activity
*/
override
fun
dispatchOnActivityResumed
(
activity
:
Activity
?)
{
activity
?.
let
{
mDoKitViewManager
.
dispatchOnActivityResumed
(
it
)
}
activity
?.
also
{
ensureViewManager
().
dispatchOnActivityResumed
(
it
)
}
}
override
fun
onActivityPaused
(
activity
:
Activity
?)
{
activity
?.
let
{
mDoKitViewManager
.
onActivityPaused
(
it
)
}
activity
?.
also
{
ensureViewManager
().
onActivityPaused
(
it
)
}
}
override
fun
onActivityStopped
(
activity
:
Activity
?)
{
activity
?.
let
{
mDoKitViewManager
.
onActivityStopped
(
it
)
}
activity
?.
also
{
ensureViewManager
().
onActivityStopped
(
it
)
}
}
/**
...
...
@@ -157,63 +144,60 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param dokitIntent
*/
override
fun
attach
(
dokitIntent
:
DokitIntent
)
{
mDoKitViewManager
.
attach
(
dokitIntent
)
ensureViewManager
()
.
attach
(
dokitIntent
)
}
/**
* 隐藏工具列表dokitView
*/
fun
detachToolPanel
()
{
mDoKitViewManager
.
detachToolPanel
()
ensureViewManager
()
.
detachToolPanel
()
}
/**
* 显示工具列表dokitView
*/
fun
attachToolPanel
(
activity
:
Activity
)
{
mDoKitViewManager
.
attachToolPanel
(
activity
)
ensureViewManager
()
.
attachToolPanel
(
activity
)
}
/**
* 显示主图标 dokitView
*/
fun
attachMainIcon
(
activity
:
Activity
)
{
mDoKitViewManager
.
attachMainIcon
(
activity
)
ensureViewManager
()
.
attachMainIcon
(
activity
)
}
/**
* 隐藏首页图标
*/
fun
detachMainIcon
()
{
mDoKitViewManager
.
detachMainIcon
()
ensureViewManager
()
.
detachMainIcon
()
}
/**
* 移除每个activity指定的dokitView
*/
override
fun
detach
(
tag
:
String
)
{
mDoKitViewManager
.
detach
(
tag
)
ensureViewManager
()
.
detach
(
tag
)
}
/**
* 移除每个activity指定的dokitView
*/
override
fun
detach
(
dokitView
:
AbsDokitView
)
{
mDoKitViewManager
.
detach
(
dokitView
)
ensureViewManager
()
.
detach
(
dokitView
)
}
override
fun
detach
(
doKitViewClass
:
Class
<
out
AbsDokitView
>)
{
mDoKitViewManager
.
detach
(
doKitViewClass
)
ensureViewManager
()
.
detach
(
doKitViewClass
)
}
/**
* 移除所有activity的所有dokitView
*/
override
fun
detachAll
()
{
mDoKitViewManager
.
detachAll
()
ensureViewManager
()
.
detachAll
()
}
/**
...
...
@@ -223,38 +207,23 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param tag
* @return
*/
override
fun
<
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
?,
clazz
:
Class
<
T
>
):
AbsDokitView
?
{
return
if
(
activity
!=
null
)
{
mDoKitViewManager
.
getDoKitView
(
activity
,
clazz
)
}
else
{
null
}
override
fun
<
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
?,
clazz
:
Class
<
T
>):
AbsDokitView
?
{
return
activity
?.
let
{
ensureViewManager
().
getDoKitView
(
it
,
clazz
)
}
}
/**
* Activity销毁时调用
*/
override
fun
onActivityDestroyed
(
activity
:
Activity
?)
{
activity
?.
let
{
mDoKitViewManager
.
onActivityDestroyed
(
it
)
}
activity
?.
also
{
ensureViewManager
().
onActivityDestroyed
(
it
)
}
}
/**
* @param activity
* @return
*/
override
fun
getDoKitViews
(
activity
:
Activity
?):
Map
<
String
,
AbsDokitView
>?
{
return
if
(
activity
!=
null
)
{
mDoKitViewManager
.
getDoKitViews
(
activity
)
}
else
{
null
}
return
activity
?.
let
{
ensureViewManager
().
getDoKitViews
(
it
)
}
}
/**
...
...
@@ -270,10 +239,10 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param listener
*/
fun
addDokitViewAttachedListener
(
listener
:
DokitViewAttachedListener
?)
{
if
(!
DoKitManager
.
IS_NORMAL_FLOAT_MODE
&&
mDoKitViewManager
is
SystemDoKitViewManager
)
{
(
mDoKitViewManager
as
SystemDoKitViewManager
).
addListener
(
listener
!!
)
}
listener
?.
takeIf
{
!
DoKitManager
.
IS_NORMAL_FLOAT_MODE
&&
_doKitViewManager
is
SystemDoKitViewManager
}
?.
also
{
(
_doKitViewManager
as
?
SystemDoKitViewManager
)
?.
addListener
(
it
)
}
}
/**
...
...
@@ -282,32 +251,29 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param listener
*/
fun
removeDokitViewAttachedListener
(
listener
:
DokitViewAttachedListener
?)
{
if
(!
DoKitManager
.
IS_NORMAL_FLOAT_MODE
&&
mDoKitViewManager
is
SystemDoKitViewManager
)
{
(
mDoKitViewManager
as
SystemDoKitViewManager
).
removeListener
(
listener
!!
)
}
listener
?.
takeIf
{
!
DoKitManager
.
IS_NORMAL_FLOAT_MODE
&&
_doKitViewManager
is
SystemDoKitViewManager
}
?.
also
{
(
_doKitViewManager
as
SystemDoKitViewManager
).
removeListener
(
it
)
}
}
/**
* 获取
*
* @return WindowManager
*/
val
windowManager
:
WindowManager
get
()
=
DoKit
.
APPLICATION
.
getSystemService
(
Context
.
WINDOW_SERVICE
)
as
WindowManager
fun
saveLastDokitViewPosInfo
(
key
:
String
,
lastDokitViewPosInfo
:
LastDokitViewPosInfo
)
{
mL
astDoKitViewPosInfoMaps
[
key
]
=
lastDokitViewPosInfo
l
astDoKitViewPosInfoMaps
[
key
]
=
lastDokitViewPosInfo
}
fun
getLastDokitViewPosInfo
(
key
:
String
):
LastDokitViewPosInfo
?
{
return
mLastDoKitViewPosInfoMaps
[
key
]
}
fun
getLastDokitViewPosInfo
(
key
:
String
):
LastDokitViewPosInfo
?
=
lastDoKitViewPosInfoMaps
[
key
]
fun
removeLastDokitViewPosInfo
(
key
:
String
)
{
mLastDoKitViewPosInfoMaps
.
remove
(
key
)
lastDoKitViewPosInfoMaps
.
remove
(
key
)
}
}
\ No newline at end of file
@Synchronized
private
fun
ensureViewManager
():
AbsDokitViewManager
{
return
_doKitViewManager
?:
run
{
if
(
DoKitManager
.
IS_NORMAL_FLOAT_MODE
)
NormalDoKitViewManager
()
else
SystemDoKitViewManager
()
}.
also
{
_doKitViewManager
=
it
}
}
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/DokitViewManagerInterface.kt
浏览文件 @
359cc726
package
com.didichuxing.doraemonkit.kit.core
import
android.app.Activity
import
kotlin.reflect.KClass
/**
* ================================================
...
...
@@ -27,7 +26,6 @@ interface DokitViewManagerInterface {
*/
fun
detach
(
dokitView
:
AbsDokitView
)
/**
* 移除每个activity指定的dokitView tag
*
...
...
@@ -35,10 +33,8 @@ interface DokitViewManagerInterface {
*/
fun
detach
(
tag
:
String
)
fun
detach
(
doKitViewClass
:
Class
<
out
AbsDokitView
>)
/**
* 移除所有activity的所有dokitView
*/
...
...
@@ -51,8 +47,7 @@ interface DokitViewManagerInterface {
* @param tag
* @return
*/
fun
<
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
?,
clazz
:
Class
<
T
>):
AbsDokitView
?
fun
<
T
:
AbsDokitView
>
getDoKitView
(
activity
:
Activity
?,
clazz
:
Class
<
T
>):
AbsDokitView
?
/**
* 获取页面上所有的dokitView
...
...
@@ -92,10 +87,9 @@ interface DokitViewManagerInterface {
fun
onActivityStopped
(
activity
:
Activity
?)
/**
* Called on [Activity] resumed from activity lifecycle callbacks
*
* @param activity
* @param activity
resumed activity
*/
fun
dispatchOnActivityResumed
(
activity
:
Activity
?)
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/NormalDoKitViewManager.kt
浏览文件 @
359cc726
...
...
@@ -8,10 +8,9 @@ import android.view.KeyEvent
import
android.view.View
import
android.view.ViewGroup
import
android.widget.FrameLayout
import
com.didichuxing.doraemonkit.DoKit
import
androidx.collection.ArrayMap
import
com.didichuxing.doraemonkit.DoKitEnv
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.kit.core.DoKitManager.WS_MODE
import
com.didichuxing.doraemonkit.constant.WSMode
import
com.didichuxing.doraemonkit.extension.tagName
import
com.didichuxing.doraemonkit.kit.main.MainIconDoKitView
import
com.didichuxing.doraemonkit.kit.performance.PerformanceDokitView
...
...
@@ -28,29 +27,24 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
private
const
val
MC_DELAY
=
100
}
private
val
context
:
Context
get
()
=
DoKitEnv
.
requireApp
()
/**
* 每个Activity中dokitView的集合 用户手动移除和页面销毁时都需要remove
*
*/
private
val
mActivityDoKitViewMap
:
MutableMap
<
Activity
,
MutableMap
<
String
,
AbsDokitView
>>
by
lazy
{
mutableMapOf
<
Activity
,
MutableMap
<
String
,
AbsDokitView
>>()
}
private
val
activityDoKitViewMap
:
MutableMap
<
Activity
,
MutableMap
<
String
,
AbsDokitView
>>
=
ArrayMap
<
Activity
,
MutableMap
<
String
,
AbsDokitView
>>()
/**
* 只用来记录全局的同步 只有用户手动移除时才会remove
*/
private
val
mGlobalSingleDoKitViewInfoMap
:
MutableMap
<
String
,
GlobalSingleDokitViewInfo
>
by
lazy
{
mutableMapOf
<
String
,
GlobalSingleDokitViewInfo
>()
}
private
val
mContext
:
Context
by
lazy
{
DoKit
.
APPLICATION
}
private
val
globalSingleDoKitViewInfoMap
:
MutableMap
<
String
,
GlobalSingleDokitViewInfo
>
=
ArrayMap
<
String
,
GlobalSingleDokitViewInfo
>()
/**
* 当app进入后台时调用
*/
override
fun
notifyBackground
()
{
mA
ctivityDoKitViewMap
.
forEach
{
maps
->
a
ctivityDoKitViewMap
.
forEach
{
maps
->
maps
.
value
.
forEach
{
map
->
map
.
value
.
onEnterBackground
()
}
...
...
@@ -61,7 +55,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
* 当app进入前台时调用
*/
override
fun
notifyForeground
()
{
mA
ctivityDoKitViewMap
.
forEach
{
maps
->
a
ctivityDoKitViewMap
.
forEach
{
maps
->
maps
.
value
.
forEach
{
map
->
map
.
value
.
onEnterForeground
()
}
...
...
@@ -94,10 +88,8 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
onActivityBackResume
(
activity
)
}
}
}
override
fun
attachMainIcon
(
activity
:
Activity
?)
{
if
(
activity
==
null
)
{
return
...
...
@@ -143,7 +135,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
attachMcRecodingDoKitView
(
activity
)
}
/**
* 新建activity
*
...
...
@@ -155,7 +146,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
}
//将所有的dokitView添加到新建的Activity中去
for
(
dokitViewInfo
:
GlobalSingleDokitViewInfo
in
mG
lobalSingleDoKitViewInfoMap
.
values
)
{
for
(
dokitViewInfo
:
GlobalSingleDokitViewInfo
in
g
lobalSingleDoKitViewInfoMap
.
values
)
{
//如果不是性能kitView 则不显示
if
(
activity
is
UniversalActivity
&&
dokitViewInfo
.
absDokitViewClass
!=
PerformanceDokitView
::
class
.
java
)
{
continue
...
...
@@ -196,10 +187,10 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
return
}
val
existDoKitViews
:
Map
<
String
,
AbsDokitView
>?
=
mA
ctivityDoKitViewMap
[
activity
]
val
existDoKitViews
:
Map
<
String
,
AbsDokitView
>?
=
a
ctivityDoKitViewMap
[
activity
]
//更新所有全局DokitView的位置
if
(
mG
lobalSingleDoKitViewInfoMap
.
isNotEmpty
())
{
for
(
gDoKitViewInfo
in
mG
lobalSingleDoKitViewInfoMap
.
values
)
{
if
(
g
lobalSingleDoKitViewInfoMap
.
isNotEmpty
())
{
for
(
gDoKitViewInfo
in
g
lobalSingleDoKitViewInfoMap
.
values
)
{
//如果不是性能kitView 则需要重新更新位置
if
(
activity
is
UniversalActivity
&&
gDoKitViewInfo
.
absDokitViewClass
!=
PerformanceDokitView
::
class
.
java
)
{
continue
...
...
@@ -244,7 +235,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
attachMcRecodingDoKitView
(
activity
)
}
override
fun
onActivityPaused
(
activity
:
Activity
?)
{
if
(
activity
==
null
)
{
return
...
...
@@ -256,12 +246,11 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
doKitView
.
onPause
()
}
}
}
private
fun
detachCountDownDoKitView
(
activity
:
Activity
)
{
val
countDownDoKitView
=
mutableListOf
<
AbsDokitView
>()
mA
ctivityDoKitViewMap
[
activity
]
?.
forEach
{
a
ctivityDoKitViewMap
[
activity
]
?.
forEach
{
if
(
it
.
value
.
mode
==
DoKitViewLaunchMode
.
COUNTDOWN
)
{
countDownDoKitView
.
add
(
it
.
value
)
}
...
...
@@ -272,7 +261,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
}
override
fun
onActivityStopped
(
activity
:
Activity
?)
{
}
/**
...
...
@@ -284,13 +272,13 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
try
{
//判断当前Activity是否存在dokitView map
val
currentActivityDoKitViews
:
MutableMap
<
String
,
AbsDokitView
>
=
when
{
(
mA
ctivityDoKitViewMap
[
doKitIntent
.
activity
]
==
null
)
->
{
(
a
ctivityDoKitViewMap
[
doKitIntent
.
activity
]
==
null
)
->
{
val
doKitViewMap
=
mutableMapOf
<
String
,
AbsDokitView
>()
mA
ctivityDoKitViewMap
[
doKitIntent
.
activity
]
=
doKitViewMap
a
ctivityDoKitViewMap
[
doKitIntent
.
activity
]
=
doKitViewMap
doKitViewMap
}
else
->
{
mA
ctivityDoKitViewMap
[
doKitIntent
.
activity
]
!!
a
ctivityDoKitViewMap
[
doKitIntent
.
activity
]
!!
}
}
...
...
@@ -310,10 +298,10 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
doKitView
.
bundle
=
doKitIntent
.
bundle
doKitView
.
tag
=
doKitIntent
.
tag
doKitView
.
setActivity
(
doKitIntent
.
activity
)
doKitView
.
performCreate
(
mC
ontext
)
doKitView
.
performCreate
(
c
ontext
)
//在全局dokitviews中保存该类型的
mG
lobalSingleDoKitViewInfoMap
[
doKitView
.
tag
]
=
g
lobalSingleDoKitViewInfoMap
[
doKitView
.
tag
]
=
createGlobalSingleDokitViewInfo
(
doKitView
)
//得到activity window中的根布局
...
...
@@ -349,7 +337,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
if
(
doKitRootView
!=
null
)
{
return
doKitRootView
}
doKitRootView
=
DokitFrameLayout
(
mC
ontext
,
DokitFrameLayout
.
DoKitFrameLayoutFlag_ROOT
)
doKitRootView
=
DokitFrameLayout
(
c
ontext
,
DokitFrameLayout
.
DoKitFrameLayoutFlag_ROOT
)
//普通模式的返回按键监听
doKitRootView
.
setOnKeyListener
(
View
.
OnKeyListener
{
_
,
keyCode
,
_
->
//监听返回键
...
...
@@ -408,7 +396,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
detach
(
dokitView
.
tag
)
}
/**
* 根据tag 移除ui和列表中的数据
*
...
...
@@ -420,8 +407,8 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
private
fun
realDetach
(
tag
:
String
)
{
//移除每个activity中指定的dokitView
for
(
activityKey
in
mA
ctivityDoKitViewMap
.
keys
)
{
val
doKitViewMap
=
mA
ctivityDoKitViewMap
[
activityKey
]
for
(
activityKey
in
a
ctivityDoKitViewMap
.
keys
)
{
val
doKitViewMap
=
a
ctivityDoKitViewMap
[
activityKey
]
//定位到指定dokitView
val
doKitView
=
doKitViewMap
?.
get
(
tag
)
?:
continue
if
(
doKitView
.
doKitView
!=
null
)
{
...
...
@@ -438,31 +425,29 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
doKitViewMap
.
remove
(
tag
)
}
//同步移除全局指定类型的dokitView
if
(
mG
lobalSingleDoKitViewInfoMap
.
containsKey
(
tag
))
{
mG
lobalSingleDoKitViewInfoMap
.
remove
(
tag
)
if
(
g
lobalSingleDoKitViewInfoMap
.
containsKey
(
tag
))
{
g
lobalSingleDoKitViewInfoMap
.
remove
(
tag
)
}
}
override
fun
detach
(
doKitViewClass
:
Class
<
out
AbsDokitView
>)
{
detach
(
doKitViewClass
.
tagName
)
}
/**
* 移除所有activity的所有dokitView
*/
override
fun
detachAll
()
{
//移除每个activity中所有的dokitView
for
(
activityKey
:
Activity
in
mA
ctivityDoKitViewMap
.
keys
)
{
val
doKitViewMap
=
mA
ctivityDoKitViewMap
[
activityKey
]
for
(
activityKey
:
Activity
in
a
ctivityDoKitViewMap
.
keys
)
{
val
doKitViewMap
=
a
ctivityDoKitViewMap
[
activityKey
]
//移除指定UI
getDoKitRootContentView
(
activityKey
).
removeAllViews
()
//移除map中的数据
doKitViewMap
?.
clear
()
}
mG
lobalSingleDoKitViewInfoMap
.
clear
()
g
lobalSingleDoKitViewInfoMap
.
clear
()
}
/**
...
...
@@ -480,9 +465,9 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
return
null
}
return
if
(
mA
ctivityDoKitViewMap
[
activity
]
==
null
)
{
return
if
(
a
ctivityDoKitViewMap
[
activity
]
==
null
)
{
null
}
else
mA
ctivityDoKitViewMap
[
activity
]
?.
get
(
clazz
.
tagName
)
}
else
a
ctivityDoKitViewMap
[
activity
]
?.
get
(
clazz
.
tagName
)
}
/**
...
...
@@ -502,9 +487,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
for
(
doKitView
in
doKitViewMap
.
values
)
{
doKitView
.
performDestroy
()
}
mActivityDoKitViewMap
.
remove
(
activity
)
activityDoKitViewMap
.
remove
(
activity
)
}
/**
...
...
@@ -517,7 +500,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
return
activity
.
window
.
decorView
as
ViewGroup
}
/**
* 获取当前页面所有的dokitView
*
...
...
@@ -525,7 +507,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
* @return
*/
override
fun
getDoKitViews
(
activity
:
Activity
?):
Map
<
String
,
AbsDokitView
>
{
return
mA
ctivityDoKitViewMap
[
activity
]
?:
emptyMap
()
return
a
ctivityDoKitViewMap
[
activity
]
?:
emptyMap
()
}
private
fun
createGlobalSingleDokitViewInfo
(
dokitView
:
AbsDokitView
):
GlobalSingleDokitViewInfo
{
...
...
@@ -536,6 +518,4 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
dokitView
.
bundle
)
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/SimpleDoKitLauncher.kt
浏览文件 @
359cc726
...
...
@@ -7,7 +7,6 @@ import com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.constant.BundleKey
import
com.didichuxing.doraemonkit.constant.FragmentIndex
import
com.didichuxing.doraemonkit.extension.tagName
import
kotlin.reflect.KClass
/**
* 悬浮窗和全屏启动器
...
...
@@ -25,19 +24,19 @@ internal object SimpleDoKitLauncher {
val
doKitIntent
=
DokitIntent
(
targetClass
)
doKitIntent
.
mode
=
mode
doKitIntent
.
bundle
=
bundle
DokitViewManager
.
instance
.
attach
(
doKitIntent
)
DokitViewManager
.
INSTANCE
.
attach
(
doKitIntent
)
}
fun
removeFloating
(
targetClass
:
Class
<
out
AbsDokitView
>
)
{
DokitViewManager
.
instance
.
detach
(
targetClass
.
tagName
)
DokitViewManager
.
INSTANCE
.
detach
(
targetClass
.
tagName
)
}
fun
removeFloating
(
dokitView
:
AbsDokitView
)
{
DokitViewManager
.
instance
.
detach
(
dokitView
)
DokitViewManager
.
INSTANCE
.
detach
(
dokitView
)
}
...
...
@@ -71,4 +70,4 @@ internal object SimpleDoKitLauncher {
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/core/SystemDoKitViewManager.kt
浏览文件 @
359cc726
...
...
@@ -4,8 +4,7 @@ import android.app.Activity
import
android.content.Context
import
android.text.TextUtils
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.DoKit.Companion.isMainIconShow
import
com.didichuxing.doraemonkit.DoKit.Companion.show
import
com.didichuxing.doraemonkit.DoKitEnv
import
com.didichuxing.doraemonkit.extension.tagName
import
com.didichuxing.doraemonkit.kit.health.CountDownDoKitView
import
com.didichuxing.doraemonkit.kit.main.MainIconDoKitView
...
...
@@ -17,15 +16,17 @@ import com.didichuxing.doraemonkit.util.DoKitSystemUtil
* 系统悬浮窗管理类
*/
internal
class
SystemDoKitViewManager
:
AbsDokitViewManager
()
{
private
val
context
:
Context
get
()
=
DoKitEnv
.
requireApp
()
/**
* 参考:
* https://blog.csdn.net/awenyini/article/details/78265284
* https://yuqirong.me/2017/09/28/Window%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90(%E4%B8%80)%EF%BC%9A%E4%B8%8EDecorView%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B/
*/
private
val
mWindowManager
=
DokitViewManager
.
instance
.
windowManager
private
val
mContext
:
Context
by
lazy
{
DoKit
.
APPLICATION
}
private
val
mDoKitViews
:
MutableList
<
AbsDokitView
>
by
lazy
{
mutableListOf
<
AbsDokitView
>()
}
private
val
mListeners
:
MutableList
<
DokitViewManager
.
DokitViewAttachedListener
>
by
lazy
{
mutableListOf
<
DokitViewManager
.
DokitViewAttachedListener
>()
}
private
val
windowManager
=
DokitViewManager
.
INSTANCE
.
windowManager
private
val
doKitViews
:
MutableList
<
AbsDokitView
>
by
lazy
{
mutableListOf
<
AbsDokitView
>()
}
private
val
listeners
:
MutableList
<
DokitViewManager
.
DokitViewAttachedListener
>
by
lazy
{
mutableListOf
<
DokitViewManager
.
DokitViewAttachedListener
>()
}
/**
* 获取页面上所有的dokitViews
...
...
@@ -34,7 +35,7 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
*/
override
fun
getDoKitViews
(
activity
:
Activity
?):
Map
<
String
,
AbsDokitView
>
{
val
doKitViewMaps
:
MutableMap
<
String
,
AbsDokitView
>
=
mutableMapOf
()
for
(
doKitView
in
mD
oKitViews
)
{
for
(
doKitView
in
d
oKitViews
)
{
doKitViewMaps
[
doKitView
.
tag
]
=
doKitView
}
return
doKitViewMaps
...
...
@@ -44,7 +45,7 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
* 当app进入后台时调用
*/
override
fun
notifyBackground
()
{
for
(
doKitView
in
mD
oKitViews
)
{
for
(
doKitView
in
d
oKitViews
)
{
doKitView
.
onEnterBackground
()
}
}
...
...
@@ -53,26 +54,19 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
* 当app进入前台时调用
*/
override
fun
notifyForeground
()
{
for
(
page
in
mD
oKitViews
)
{
for
(
page
in
d
oKitViews
)
{
page
.
onEnterForeground
()
}
}
/**
* @param activity
*/
override
fun
dispatchOnActivityResumed
(
activity
:
Activity
?)
{
if
(
activity
==
null
)
{
return
}
if
(
activity
is
UniversalActivity
)
{
val
countDownDoKitView
=
DoKit
.
getDoKitView
<
CountDownDoKitView
>(
activity
,
CountDownDoKitView
::
class
)
if
(
countDownDoKitView
!=
null
)
{
detach
(
CountDownDoKitView
::
class
.
tagName
)
DoKit
.
getDoKitView
<
CountDownDoKitView
>(
activity
)
?.
also
{
detach
(
CountDownDoKitView
::
class
.
tagName
)
}
return
}
...
...
@@ -81,7 +75,6 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
onMainActivityResume
(
activity
)
}
DoKitManager
.
ACTIVITY_LIFECYCLE_INFOS
[
activity
.
javaClass
.
canonicalName
]
?.
let
{
//新建Activity
if
(
it
.
lifeCycleStatus
==
DoKitLifeCycleStatus
.
RESUME
&&
it
.
isInvokeStopMethod
==
false
)
{
...
...
@@ -95,7 +88,6 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
}
//需要手动调用 生命周期回调
val
dokitViewMap
=
getDoKitViews
(
activity
)
for
(
absDokitView
in
dokitViewMap
.
values
)
{
...
...
@@ -103,7 +95,6 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
}
override
fun
attachMainIcon
(
activity
:
Activity
?)
{
if
(
activity
==
null
)
{
return
...
...
@@ -150,25 +141,25 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
//判断是否有MainIcon
if
(
DoKitManager
.
ALWAYS_SHOW_MAIN_ICON
&&
!
isMainIconShow
)
{
show
()
if
(
DoKitManager
.
ALWAYS_SHOW_MAIN_ICON
&&
!
DoKit
.
isMainIconShow
)
{
DoKit
.
show
()
}
//如果倒计时浮标没显示则重新添加
val
countDownDokitView
=
DoKit
.
getDoKitView
<
CountDownDoKitView
>(
activity
,
CountDownDoKitView
::
class
)
if
(
countDownDokitView
==
null
)
{
if
(
activity
is
UniversalActivity
)
{
return
DoKit
.
getDoKitView
<
CountDownDoKitView
>(
activity
)
?.
also
{
if
(
activity
is
UniversalActivity
)
{
detach
(
CountDownDoKitView
::
class
.
tagName
)
}
else
{
// 重置倒计时
it
.
reset
()
}
}
attachCountDownDoKitView
(
activity
)
}
else
{
if
(
activity
is
UniversalActivity
)
{
detach
(
CountDownDoKitView
::
class
.
tagName
)
}
else
{
//重置倒计时
(
countDownDokitView
as
CountDownDoKitView
).
reset
()
?:
also
{
if
(
activity
is
UniversalActivity
)
{
return
@also
}
attachCountDownDoKitView
(
activity
)
}
}
}
override
fun
onActivityBackResume
(
activity
:
Activity
?)
{
...
...
@@ -177,14 +168,9 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
//移除倒计时浮标
val
countDownDokitView
=
DoKit
.
getDoKitView
<
CountDownDoKitView
>(
activity
,
CountDownDoKitView
::
class
)
if
(
countDownDokitView
==
null
)
{
attachCountDownDoKitView
(
activity
)
}
else
{
//重置倒计时
(
countDownDokitView
as
CountDownDoKitView
).
reset
()
}
DoKit
.
getDoKitView
<
CountDownDoKitView
>(
activity
)
?.
reset
()
// 重置倒计时
?:
attachCountDownDoKitView
(
activity
)
//判断是否存在主入口icon
val
dokitViews
=
getDoKitViews
(
activity
)
...
...
@@ -220,7 +206,7 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
override
fun
attach
(
pageIntent
:
DokitIntent
)
{
try
{
for
(
dokitView
in
mD
oKitViews
)
{
for
(
dokitView
in
d
oKitViews
)
{
//如果当前page对象已经存在 则直接返回
if
(
pageIntent
.
targetClass
.
isInstance
(
dokitView
))
{
return
...
...
@@ -231,17 +217,17 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
dokitView
.
bundle
=
pageIntent
.
bundle
//page.setTag(pageIntent.tag);
//添加进page列表
mD
oKitViews
.
add
(
dokitView
)
dokitView
.
performCreate
(
mC
ontext
)
d
oKitViews
.
add
(
dokitView
)
dokitView
.
performCreate
(
c
ontext
)
//在window上显示floatIcon
//WindowManagerImpl具体实现
mW
indowManager
.
addView
(
w
indowManager
.
addView
(
dokitView
.
doKitView
,
dokitView
.
systemLayoutParams
)
dokitView
.
onResume
()
if
(!
DoKitManager
.
IS_NORMAL_FLOAT_MODE
)
{
for
(
listener
in
mL
isteners
)
{
for
(
listener
in
l
isteners
)
{
listener
.
onDokitViewAdd
(
dokitView
)
}
}
...
...
@@ -254,11 +240,11 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
if
(
TextUtils
.
isEmpty
(
tag
))
{
return
}
val
it
=
mD
oKitViews
.
iterator
()
val
it
=
d
oKitViews
.
iterator
()
while
(
it
.
hasNext
())
{
val
dokitView
=
it
.
next
()
if
(
tag
==
dokitView
.
tag
)
{
mW
indowManager
.
removeView
(
dokitView
.
doKitView
)
w
indowManager
.
removeView
(
dokitView
.
doKitView
)
dokitView
.
performDestroy
()
it
.
remove
()
return
...
...
@@ -266,23 +252,20 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
}
override
fun
detach
(
dokitView
:
AbsDokitView
)
{
detach
(
dokitView
.
tagName
)
}
override
fun
detach
(
doKitViewClass
:
Class
<
out
AbsDokitView
>)
{
detach
(
doKitViewClass
.
tagName
)
}
override
fun
detachAll
()
{
val
it
=
mD
oKitViews
.
iterator
()
val
it
=
d
oKitViews
.
iterator
()
while
(
it
.
hasNext
())
{
val
doKitView
=
it
.
next
()
mW
indowManager
.
removeView
(
doKitView
.
doKitView
)
w
indowManager
.
removeView
(
doKitView
.
doKitView
)
doKitView
.
performDestroy
()
it
.
remove
()
}
...
...
@@ -295,7 +278,7 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
if
(
TextUtils
.
isEmpty
(
clazz
.
tagName
))
{
return
null
}
for
(
dokitView
in
mD
oKitViews
)
{
for
(
dokitView
in
d
oKitViews
)
{
if
(
clazz
.
tagName
==
dokitView
.
tag
)
{
return
dokitView
}
...
...
@@ -315,12 +298,12 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
* @param listener
*/
fun
addListener
(
listener
:
DokitViewManager
.
DokitViewAttachedListener
)
{
mL
isteners
.
add
(
listener
)
l
isteners
.
add
(
listener
)
}
fun
removeListener
(
listener
:
DokitViewManager
.
DokitViewAttachedListener
)
{
mL
isteners
.
remove
(
listener
)
l
isteners
.
remove
(
listener
)
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/largepicture/LargeImageListAdapter.java
浏览文件 @
359cc726
...
...
@@ -9,7 +9,7 @@ import android.widget.Button;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKit
Env
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.picasso.DokitPicasso
;
import
com.didichuxing.doraemonkit.picasso.MemoryPolicy
;
...
...
@@ -80,7 +80,7 @@ public class LargeImageListAdapter extends AbsRecyclerAdapter<AbsViewBinder<Larg
public
void
bind
(
final
LargeImageInfo
largeImageInfo
)
{
try
{
int
resourceUrl
=
Integer
.
parseInt
(
largeImageInfo
.
getUrl
());
DokitPicasso
.
with
(
DoKit
.
APPLICATION
)
DokitPicasso
.
with
(
DoKit
Env
.
requireApp
()
)
.
load
(
resourceUrl
)
.
memoryPolicy
(
MemoryPolicy
.
NO_CACHE
)
.
resize
(
ConvertUtils
.
dp2px
(
100
),
ConvertUtils
.
dp2px
(
100
))
...
...
@@ -88,7 +88,7 @@ public class LargeImageListAdapter extends AbsRecyclerAdapter<AbsViewBinder<Larg
.
into
(
iv
);
tvLink
.
setText
(
"resource id:"
+
resourceUrl
);
}
catch
(
Exception
e
)
{
DokitPicasso
.
with
(
DoKit
.
APPLICATION
)
DokitPicasso
.
with
(
DoKit
Env
.
requireApp
()
)
.
load
(
largeImageInfo
.
getUrl
())
.
memoryPolicy
(
MemoryPolicy
.
NO_CACHE
)
.
resize
(
ConvertUtils
.
dp2px
(
100
),
ConvertUtils
.
dp2px
(
100
))
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/layoutborder/LayoutBorderKit.kt
浏览文件 @
359cc726
...
...
@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.layoutborder
import
android.app.Activity
import
android.content.Context
import
com.didichuxing.doraemonkit.DoKit
.Companion.launchFloating
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.config.LayoutBorderConfig
import
com.didichuxing.doraemonkit.kit.AbstractKit
...
...
@@ -19,7 +19,7 @@ class LayoutBorderKit : AbstractKit() {
get
()
=
R
.
mipmap
.
dk_view_border
override
fun
onClickWithReturn
(
activity
:
Activity
):
Boolean
{
launchFloating
(
LayoutLevelDokitView
::
class
.
java
)
DoKit
.
launchFloating
(
LayoutLevelDokitView
::
class
.
java
)
LayoutBorderManager
.
getInstance
().
start
()
LayoutBorderConfig
.
setLayoutBorderOpen
(
true
)
LayoutBorderConfig
.
setLayoutLevelOpen
(
true
)
...
...
@@ -34,7 +34,5 @@ class LayoutBorderKit : AbstractKit() {
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
innerKitId
():
String
{
return
"dokit_sdk_ui_ck_border"
}
}
\ No newline at end of file
override
fun
innerKitId
():
String
=
"dokit_sdk_ui_ck_border"
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/manual/PosAdjustKit.kt
浏览文件 @
359cc726
...
...
@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.lbs.manual
import
android.app.Activity
import
android.content.Context
import
com.didichuxing.doraemonkit.DoKit
.Companion.launchFloating
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.aop.DokitPluginConfig
import
com.didichuxing.doraemonkit.kit.AbstractKit
...
...
@@ -20,6 +20,9 @@ class PosAdjustKit : AbstractKit() {
override
val
icon
:
Int
get
()
=
R
.
mipmap
.
dk_mock_location
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
onClickWithReturn
(
activity
:
Activity
):
Boolean
{
if
(!
DokitPluginConfig
.
SWITCH_DOKIT_PLUGIN
)
{
ToastUtils
.
showShort
(
DoKitCommUtil
.
getString
(
R
.
string
.
dk_plugin_close_tip
))
...
...
@@ -29,15 +32,11 @@ class PosAdjustKit : AbstractKit() {
ToastUtils
.
showShort
(
DoKitCommUtil
.
getString
(
R
.
string
.
dk_plugin_gps_close_tip
))
return
false
}
launchFloating
(
PosAdjustKitView
::
class
.
java
)
DoKit
.
launchFloating
<
PosAdjustKitView
>(
)
return
true
}
override
fun
onAppInit
(
context
:
Context
?)
{}
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
innerKitId
():
String
{
return
"dokit_sdk_lbs_ck_pos_adjust"
}
}
\ No newline at end of file
override
fun
innerKitId
():
String
=
"dokit_sdk_lbs_ck_pos_adjust"
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/loginfo/LogInfoDokitView.java
浏览文件 @
359cc726
...
...
@@ -19,7 +19,7 @@ import androidx.fragment.app.FragmentActivity;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKit
Env
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.kit.core.AbsDokitView
;
import
com.didichuxing.doraemonkit.kit.core.DokitViewLayoutParams
;
...
...
@@ -272,7 +272,7 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
ToastUtils
.
showShort
(
"文件保存在:"
+
logPath
);
//分享
if
(
operateType
==
101
)
{
DoKitFileUtil
.
systemShare
(
DoKit
.
APPLICATION
,
logFile
);
DoKitFileUtil
.
systemShare
(
DoKit
Env
.
requireApp
()
,
logFile
);
}
}
}
...
...
@@ -457,4 +457,4 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
public
boolean
canDrag
()
{
return
false
;
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/loginfo/LogInfoKit.kt
浏览文件 @
359cc726
...
...
@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.loginfo
import
android.app.Activity
import
android.content.Context
import
com.didichuxing.doraemonkit.DoKit
.Companion.launchFloating
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.config.LogInfoConfig
import
com.didichuxing.doraemonkit.kit.AbstractKit
...
...
@@ -18,8 +18,11 @@ class LogInfoKit : AbstractKit() {
override
val
icon
:
Int
get
()
=
R
.
mipmap
.
dk_log_info
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
onClickWithReturn
(
activity
:
Activity
):
Boolean
{
launchFloating
(
LogInfoDokitView
::
class
.
java
)
DoKit
.
launchFloating
<
LogInfoDokitView
>(
)
//开启日志服务
LogInfoManager
.
getInstance
().
start
()
return
true
...
...
@@ -29,10 +32,5 @@ class LogInfoKit : AbstractKit() {
LogInfoConfig
.
setLogInfoOpen
(
false
)
}
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
innerKitId
():
String
{
return
"dokit_sdk_comm_ck_log"
}
}
\ No newline at end of file
override
fun
innerKitId
():
String
=
"dokit_sdk_comm_ck_log"
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/main/MainIconDoKitView.kt
浏览文件 @
359cc726
...
...
@@ -4,7 +4,7 @@ import android.content.Context
import
android.view.LayoutInflater
import
android.view.View
import
android.widget.FrameLayout
import
com.didichuxing.doraemonkit.DoKit
.Companion.showToolPanel
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.config.FloatIconConfig
import
com.didichuxing.doraemonkit.datapick.DataPickManager
...
...
@@ -19,13 +19,14 @@ class MainIconDoKitView : AbsDokitView() {
//public static int FLOAT_SIZE = 174;
//public static int FLOAT_SIZE = 58;
override
fun
onCreate
(
context
:
Context
)
{}
override
fun
onViewCreated
(
view
:
FrameLayout
)
{
//设置id便于查找
doKitView
?.
id
=
R
.
id
.
float_icon_id
//设置icon 点击事件
doKitView
?.
setOnClickListener
{
//统计入口
DataPickManager
.
getInstance
().
addData
(
"dokit_sdk_home_ck_entry"
)
showToolPanel
()
DoKit
.
showToolPanel
()
}
}
...
...
@@ -48,4 +49,4 @@ class MainIconDoKitView : AbsDokitView() {
immInvalidate
()
}
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/network/room_db/DokitDbManager.java
浏览文件 @
359cc726
...
...
@@ -83,7 +83,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils
.
executeByIo
(
new
ThreadUtils
.
SimpleTask
<
List
<
T
>>()
{
@Override
public
List
<
T
>
doInBackground
()
throws
Throwable
{
DokitDatabase
db
=
DokitViewManager
.
getI
nstance
().
getDb
();
DokitDatabase
db
=
DokitViewManager
.
getI
NSTANCE
().
getDb
();
if
(
db
.
mockApiDao
()
!=
null
)
{
return
(
List
<
T
>)
db
.
mockApiDao
().
getAllInterceptApi
();
}
else
{
...
...
@@ -112,7 +112,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils
.
executeByIo
(
new
ThreadUtils
.
SimpleTask
<
List
<
T
>>()
{
@Override
public
List
<
T
>
doInBackground
()
throws
Throwable
{
DokitDatabase
db
=
DokitViewManager
.
getI
nstance
().
getDb
();
DokitDatabase
db
=
DokitViewManager
.
getI
NSTANCE
().
getDb
();
if
(
db
.
mockApiDao
()
!=
null
)
{
return
(
List
<
T
>)
db
.
mockApiDao
().
getAllTemplateApi
();
}
else
{
...
...
@@ -139,7 +139,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
* 数据库中获取指定的 template api
*/
public
T
getTemplateApiByIdInDb
(
String
id
)
{
return
(
T
)
DokitViewManager
.
getI
nstance
().
getDb
().
mockApiDao
().
findTemplateApiById
(
id
);
return
(
T
)
DokitViewManager
.
getI
NSTANCE
().
getDb
().
mockApiDao
().
findTemplateApiById
(
id
);
}
...
...
@@ -147,7 +147,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
* 数据库中获取指定的mock intercept api
*/
public
T
getInterceptApiByIdInDb
(
String
id
)
{
return
(
T
)
DokitViewManager
.
getI
nstance
().
getDb
().
mockApiDao
().
findInterceptApiById
(
id
);
return
(
T
)
DokitViewManager
.
getI
NSTANCE
().
getDb
().
mockApiDao
().
findInterceptApiById
(
id
);
}
/**
...
...
@@ -219,7 +219,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils
.
executeByIo
(
new
ThreadUtils
.
SimpleTask
<
Object
>()
{
@Override
public
Object
doInBackground
()
throws
Throwable
{
DokitViewManager
.
getI
nstance
().
getDb
().
mockApiDao
().
insertAllInterceptApi
(
mockApis
);
DokitViewManager
.
getI
NSTANCE
().
getDb
().
mockApiDao
().
insertAllInterceptApi
(
mockApis
);
//更新本地数据
getAllInterceptApis
();
return
null
;
...
...
@@ -242,7 +242,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils
.
executeByIo
(
new
ThreadUtils
.
SimpleTask
<
Void
>()
{
@Override
public
Void
doInBackground
()
throws
Throwable
{
DokitViewManager
.
getI
nstance
().
getDb
().
mockApiDao
().
insertAllTemplateApi
(
mockApis
);
DokitViewManager
.
getI
NSTANCE
().
getDb
().
mockApiDao
().
insertAllTemplateApi
(
mockApis
);
return
null
;
}
...
...
@@ -265,7 +265,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils
.
executeByIo
(
new
ThreadUtils
.
SimpleTask
<
Void
>()
{
@Override
public
Void
doInBackground
()
throws
Throwable
{
DokitViewManager
.
getI
nstance
().
getDb
().
mockApiDao
().
updateInterceptApi
(
mockApi
);
DokitViewManager
.
getI
NSTANCE
().
getDb
().
mockApiDao
().
updateInterceptApi
(
mockApi
);
return
null
;
}
...
...
@@ -290,7 +290,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils
.
executeByIo
(
new
ThreadUtils
.
SimpleTask
<
Object
>()
{
@Override
public
Object
doInBackground
()
throws
Throwable
{
DokitViewManager
.
getI
nstance
().
getDb
().
mockApiDao
().
updateTemplateApi
(
mockApi
);
DokitViewManager
.
getI
NSTANCE
().
getDb
().
mockApiDao
().
updateTemplateApi
(
mockApi
);
//更新本地数据
getAllTemplateApis
();
return
null
;
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/network/ui/NetworkDetailView.java
浏览文件 @
359cc726
package
com.didichuxing.doraemonkit.kit.network.ui
;
import
static
android
.
content
.
Context
.
CLIPBOARD_SERVICE
;
import
android.app.Activity
;
import
android.content.ClipData
;
import
android.content.ClipboardManager
;
...
...
@@ -14,7 +16,7 @@ import android.widget.Toast;
import
androidx.annotation.Nullable
;
import
androidx.fragment.app.FragmentActivity
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKit
Env
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.kit.loginfo.LogExportDialog
;
import
com.didichuxing.doraemonkit.kit.network.bean.NetworkRecord
;
...
...
@@ -41,8 +43,6 @@ import java.net.URLDecoder;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
static
android
.
content
.
Context
.
CLIPBOARD_SERVICE
;
/**
* @desc: 显示request和response的view
*/
...
...
@@ -263,7 +263,7 @@ public class NetworkDetailView extends LinearLayout {
ToastUtils
.
showShort
(
"文件保存在:"
+
logPath
);
//分享
if
(
operateType
==
101
)
{
DoKitFileUtil
.
systemShare
(
DoKit
.
APPLICATION
,
logFile
);
DoKitFileUtil
.
systemShare
(
DoKit
Env
.
requireApp
()
,
logFile
);
}
}
}
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/performance/PerformanceDataManager.java
浏览文件 @
359cc726
...
...
@@ -15,6 +15,7 @@ import android.view.Choreographer;
import
androidx.annotation.RequiresApi
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKitEnv
;
import
com.didichuxing.doraemonkit.config.DokitMemoryConfig
;
import
com.didichuxing.doraemonkit.kit.core.DoKitManager
;
import
com.didichuxing.doraemonkit.kit.health.AppHealthInfoUtil
;
...
...
@@ -181,8 +182,8 @@ public class PerformanceDataManager {
}
public
void
init
()
{
mContext
=
DoKit
.
APPLICATION
.
getApplicationContext
();
mActivityManager
=
(
ActivityManager
)
DoKit
.
APPLICATION
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
mContext
=
DoKit
Env
.
requireApp
()
.
getApplicationContext
();
mActivityManager
=
(
ActivityManager
)
DoKit
Env
.
requireApp
()
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
mAboveAndroidO
=
true
;
}
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/timecounter/AppStartInfoFragment.java
浏览文件 @
359cc726
...
...
@@ -8,7 +8,7 @@ import android.widget.TextView;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKit
Env
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.aop.method_stack.MethodStackUtil
;
import
com.didichuxing.doraemonkit.kit.core.BaseFragment
;
...
...
@@ -109,7 +109,7 @@ public class AppStartInfoFragment extends BaseFragment {
if
(
result
)
{
ToastUtils
.
showShort
(
"启动信息文件保存在:"
+
logPath
);
//分享
DoKitFileUtil
.
systemShare
(
DoKit
.
APPLICATION
,
logFile
);
DoKitFileUtil
.
systemShare
(
DoKit
Env
.
requireApp
()
,
logFile
);
}
}
...
...
@@ -133,4 +133,4 @@ public class AppStartInfoFragment extends BaseFragment {
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/toolpanel/ToolPanelDoKitView.kt
浏览文件 @
359cc726
...
...
@@ -124,7 +124,7 @@ class ToolPanelDoKitView : AbsDokitView() {
//常规模式下点击常用工具不隐藏工具面板
it
.
onClick
(
ActivityUtils
.
getTopActivity
())
if
(
it
.
onClickWithReturn
(
ActivityUtils
.
getTopActivity
()))
{
DokitViewManager
.
instance
.
detachToolPanel
()
DokitViewManager
.
INSTANCE
.
detachToolPanel
()
}
//添加埋点
...
...
@@ -185,4 +185,4 @@ class ToolPanelDoKitView : AbsDokitView() {
override
fun
restrictBorderline
():
Boolean
{
return
false
}
}
\ No newline at end of file
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/uiperformance/UIPerformanceKit.kt
浏览文件 @
359cc726
...
...
@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.uiperformance
import
android.app.Activity
import
android.content.Context
import
com.didichuxing.doraemonkit.DoKit
.Companion.launchFloating
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.kit.AbstractKit
import
com.google.auto.service.AutoService
...
...
@@ -18,10 +18,13 @@ class UIPerformanceKit : AbstractKit() {
override
val
icon
:
Int
get
()
=
R
.
mipmap
.
dk_ui_performance
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
onClickWithReturn
(
activity
:
Activity
):
Boolean
{
UIPerformanceManager
.
getInstance
().
start
(
activity
)
launchFloating
(
UIPerformanceDisplayDokitView
::
class
.
java
)
launchFloating
(
UIPerformanceInfoDokitView
::
class
.
java
)
DoKit
.
launchFloating
<
UIPerformanceDisplayDokitView
>(
)
DoKit
.
launchFloating
<
UIPerformanceInfoDokitView
>(
)
//直接显示层级
UIPerformanceManager
.
getInstance
().
initRefresh
()
...
...
@@ -29,10 +32,6 @@ class UIPerformanceKit : AbstractKit() {
}
override
fun
onAppInit
(
context
:
Context
?)
{}
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
innerKitId
():
String
{
return
"dokit_sdk_performance_ck_hierarchy"
}
}
\ No newline at end of file
override
fun
innerKitId
():
String
=
"dokit_sdk_performance_ck_hierarchy"
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/viewcheck/ViewCheckerKit.kt
浏览文件 @
359cc726
...
...
@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.viewcheck
import
android.app.Activity
import
android.content.Context
import
com.didichuxing.doraemonkit.DoKit
.Companion.launchFloating
import
com.didichuxing.doraemonkit.DoKit
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.kit.AbstractKit
import
com.google.auto.service.AutoService
...
...
@@ -18,9 +18,9 @@ class ViewCheckerKit : AbstractKit() {
get
()
=
R
.
mipmap
.
dk_view_check
override
fun
onClickWithReturn
(
activity
:
Activity
):
Boolean
{
launchFloating
(
ViewCheckDokitView
::
class
.
java
)
launchFloating
(
ViewCheckDrawDokitView
::
class
.
java
)
launchFloating
(
ViewCheckInfoDokitView
::
class
.
java
)
DoKit
.
launchFloating
<
ViewCheckDokitView
>(
)
DoKit
.
launchFloating
<
ViewCheckDrawDokitView
>(
)
DoKit
.
launchFloating
<
ViewCheckInfoDokitView
>(
)
return
true
}
...
...
@@ -28,7 +28,5 @@ class ViewCheckerKit : AbstractKit() {
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
innerKitId
():
String
{
return
"dokit_sdk_ui_ck_widget"
}
}
\ No newline at end of file
override
fun
innerKitId
():
String
=
"dokit_sdk_ui_ck_widget"
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/util/DoKitCommUtil.java
浏览文件 @
359cc726
package
com.didichuxing.doraemonkit.util
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.content.res.Resources
;
import
androidx.annotation.StringRes
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKit
Env
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
...
...
@@ -29,21 +28,20 @@ import okio.Buffer;
public
class
DoKitCommUtil
{
public
static
String
getString
(
@StringRes
int
stringId
)
{
return
DoKit
.
APPLICATION
.
getString
(
stringId
);
return
DoKit
Env
.
requireApp
()
.
getString
(
stringId
);
}
@StringRes
public
static
int
getStringId
(
String
str
)
{
try
{
Resources
r
=
DoKit
.
APPLICATION
.
getResources
();
return
r
.
getIdentifier
(
str
,
"string"
,
DoKit
.
APPLICATION
.
getPackageName
());
Resources
r
=
DoKit
Env
.
requireApp
()
.
getResources
();
return
r
.
getIdentifier
(
str
,
"string"
,
DoKit
Env
.
requireApp
()
.
getPackageName
());
}
catch
(
Exception
e
)
{
LogHelper
.
e
(
"getStringId"
,
"getStringId===>"
+
str
);
}
return
-
1
;
}
public
static
String
requestBodyToString
(
RequestBody
requestBody
)
{
try
{
Buffer
buffer
=
new
Buffer
();
...
...
@@ -83,10 +81,10 @@ public class DoKitCommUtil {
* 切换App到前台
*/
public
static
void
changeAppOnForeground
(
Class
<
Activity
>
clazz
)
{
Intent
intent
=
new
Intent
(
DoKit
.
APPLICATION
,
clazz
);
Intent
intent
=
new
Intent
(
DoKit
Env
.
requireApp
()
,
clazz
);
intent
.
addCategory
(
Intent
.
CATEGORY_LAUNCHER
);
intent
.
setAction
(
Intent
.
ACTION_MAIN
);
intent
.
setFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
|
Intent
.
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
);
DoKit
.
APPLICATION
.
startActivity
(
intent
);
DoKit
Env
.
requireApp
()
.
startActivity
(
intent
);
}
}
Android/dokit/src/main/java/com/didichuxing/doraemonkit/util/UIUtils.java
浏览文件 @
359cc726
...
...
@@ -17,7 +17,7 @@ import android.widget.LinearLayout;
import
androidx.annotation.AnyRes
;
import
com.didichuxing.doraemonkit.DoKit
;
import
com.didichuxing.doraemonkit.DoKit
Env
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.kit.layoutborder.ViewBorderFrameLayout
;
...
...
@@ -49,7 +49,7 @@ public class UIUtils {
public
static
int
getWidthPixels
()
{
DisplayMetrics
metrics
=
new
DisplayMetrics
();
WindowManager
windowManager
=
(
WindowManager
)
DoKit
.
APPLICATION
.
getSystemService
(
Context
.
WINDOW_SERVICE
);
WindowManager
windowManager
=
(
WindowManager
)
DoKit
Env
.
requireApp
()
.
getSystemService
(
Context
.
WINDOW_SERVICE
);
if
(
windowManager
==
null
)
{
return
0
;
}
...
...
@@ -62,7 +62,7 @@ public class UIUtils {
}
public
static
int
getRealHeightPixels
()
{
WindowManager
windowManager
=
(
WindowManager
)
DoKit
.
APPLICATION
.
getSystemService
(
Context
.
WINDOW_SERVICE
);
WindowManager
windowManager
=
(
WindowManager
)
DoKit
Env
.
requireApp
()
.
getSystemService
(
Context
.
WINDOW_SERVICE
);
int
height
=
0
;
Display
display
=
windowManager
.
getDefaultDisplay
();
DisplayMetrics
dm
=
new
DisplayMetrics
();
...
...
@@ -79,7 +79,7 @@ public class UIUtils {
}
public
static
int
getStatusBarHeight
()
{
Resources
resources
=
DoKit
.
APPLICATION
.
getResources
();
Resources
resources
=
DoKit
Env
.
requireApp
()
.
getResources
();
int
resourceId
=
resources
.
getIdentifier
(
"status_bar_height"
,
"dimen"
,
"android"
);
int
height
=
resources
.
getDimensionPixelSize
(
resourceId
);
return
height
;
...
...
Android/settings.gradle
浏览文件 @
359cc726
rootProject
.
name
=
"Dokit-Android"
include
':app'
include
':dokit-util'
include
':dokit-ft'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录