Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
26a6b1d7
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
26a6b1d7
编写于
5月 31, 2019
作者:
L
LinJZong
提交者:
GitHub
5月 31, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #207 from rex26/master
[bug fix] #141 希望能加一个按照页面进行分类的最高值,最低值、平局值这些数据
上级
f8f0790a
3c65e322
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
751 addition
and
2 deletion
+751
-2
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/common/PerformanceDataManager.java
...huxing/doraemonkit/kit/common/PerformanceDataManager.java
+6
-2
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/MonitorDataUploadFragment.java
...ing/doraemonkit/kit/custom/MonitorDataUploadFragment.java
+18
-0
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/PageDataFragment.java
.../didichuxing/doraemonkit/kit/custom/PageDataFragment.java
+177
-0
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/PageDataItem.java
.../com/didichuxing/doraemonkit/kit/custom/PageDataItem.java
+65
-0
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/PageDataItemAdapter.java
...dichuxing/doraemonkit/kit/custom/PageDataItemAdapter.java
+96
-0
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/RealTimePerformDataFloatPage.java
.../doraemonkit/kit/custom/RealTimePerformDataFloatPage.java
+162
-0
Android/doraemonkit/src/main/res/drawable-xxhdpi/dk_float_button.png
...aemonkit/src/main/res/drawable-xxhdpi/dk_float_button.png
+0
-0
Android/doraemonkit/src/main/res/drawable-xxhdpi/dk_performance_down_arrow.png
...rc/main/res/drawable-xxhdpi/dk_performance_down_arrow.png
+0
-0
Android/doraemonkit/src/main/res/drawable/dk_divider_gray.xml
...oid/doraemonkit/src/main/res/drawable/dk_divider_gray.xml
+6
-0
Android/doraemonkit/src/main/res/drawable/dk_perform_data_background.xml
...nkit/src/main/res/drawable/dk_perform_data_background.xml
+6
-0
Android/doraemonkit/src/main/res/layout/dk_float_perform_data.xml
...doraemonkit/src/main/res/layout/dk_float_perform_data.xml
+72
-0
Android/doraemonkit/src/main/res/layout/dk_fragment_monitor_pagedata.xml
...nkit/src/main/res/layout/dk_fragment_monitor_pagedata.xml
+25
-0
Android/doraemonkit/src/main/res/layout/dk_fragment_monitor_pagedata_item.xml
...src/main/res/layout/dk_fragment_monitor_pagedata_item.xml
+55
-0
Android/doraemonkit/src/main/res/layout/dk_fragment_monitor_pagedata_item_item.xml
...ain/res/layout/dk_fragment_monitor_pagedata_item_item.xml
+48
-0
Android/doraemonkit/src/main/res/values-en-rUS/strings.xml
Android/doraemonkit/src/main/res/values-en-rUS/strings.xml
+5
-0
Android/doraemonkit/src/main/res/values-zh-rCN/strings.xml
Android/doraemonkit/src/main/res/values-zh-rCN/strings.xml
+5
-0
Android/doraemonkit/src/main/res/values/strings.xml
Android/doraemonkit/src/main/res/values/strings.xml
+5
-0
未找到文件。
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/common/PerformanceDataManager.java
浏览文件 @
26a6b1d7
...
@@ -19,6 +19,7 @@ import com.didichuxing.doraemonkit.R;
...
@@ -19,6 +19,7 @@ import com.didichuxing.doraemonkit.R;
import
com.didichuxing.doraemonkit.config.PerformanceInfoConfig
;
import
com.didichuxing.doraemonkit.config.PerformanceInfoConfig
;
import
com.didichuxing.doraemonkit.kit.custom.PerformanceInfo
;
import
com.didichuxing.doraemonkit.kit.custom.PerformanceInfo
;
import
com.didichuxing.doraemonkit.kit.custom.UploadMonitorInfoBean
;
import
com.didichuxing.doraemonkit.kit.custom.UploadMonitorInfoBean
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
com.didichuxing.doraemonkit.util.FileManager
;
import
com.didichuxing.doraemonkit.util.FileManager
;
import
com.didichuxing.doraemonkit.util.JsonUtil
;
import
com.didichuxing.doraemonkit.util.JsonUtil
;
import
com.didichuxing.doraemonkit.util.LogHelper
;
import
com.didichuxing.doraemonkit.util.LogHelper
;
...
@@ -227,7 +228,7 @@ public class PerformanceDataManager {
...
@@ -227,7 +228,7 @@ public class PerformanceDataManager {
startMonitorMemoryInfo
();
startMonitorMemoryInfo
();
}
}
if
(
PerformanceInfoConfig
.
isTrafficOpen
(
mContext
))
{
if
(
PerformanceInfoConfig
.
isTrafficOpen
(
mContext
))
{
// TODO: 2019/3/22 开始流量监控
NetworkManager
.
get
().
startMonitor
();
}
}
mHandler
.
sendEmptyMessageDelayed
(
MSG_SAVE_LOCAL
,
NORMAL_FRAME_RATE
*
1000
);
mHandler
.
sendEmptyMessageDelayed
(
MSG_SAVE_LOCAL
,
NORMAL_FRAME_RATE
*
1000
);
}
}
...
@@ -239,7 +240,7 @@ public class PerformanceDataManager {
...
@@ -239,7 +240,7 @@ public class PerformanceDataManager {
stopMonitorFrameInfo
();
stopMonitorFrameInfo
();
stopMonitorCPUInfo
();
stopMonitorCPUInfo
();
stopMonitorMemoryInfo
();
stopMonitorMemoryInfo
();
// TODO: 2019/3/22 结束流量监控
NetworkManager
.
get
().
stopMonitor
();
}
}
public
boolean
isUploading
(){
public
boolean
isUploading
(){
...
@@ -433,6 +434,9 @@ public class PerformanceDataManager {
...
@@ -433,6 +434,9 @@ public class PerformanceDataManager {
return
filePath
+
fpsFileName
;
return
filePath
+
fpsFileName
;
}
}
public
String
getCustomFilePath
()
{
return
filePath
+
customFileName
;
}
public
long
getLastFrameRate
()
{
public
long
getLastFrameRate
()
{
return
mLastFrameRate
;
return
mLastFrameRate
;
}
}
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/MonitorDataUploadFragment.java
浏览文件 @
26a6b1d7
...
@@ -11,8 +11,13 @@ import android.widget.TextView;
...
@@ -11,8 +11,13 @@ import android.widget.TextView;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.config.PerformanceInfoConfig
;
import
com.didichuxing.doraemonkit.config.PerformanceInfoConfig
;
import
com.didichuxing.doraemonkit.constant.PageTag
;
import
com.didichuxing.doraemonkit.kit.colorpick.ColorPickerInfoFloatPage
;
import
com.didichuxing.doraemonkit.kit.common.PerformanceDataManager
;
import
com.didichuxing.doraemonkit.kit.common.PerformanceDataManager
;
import
com.didichuxing.doraemonkit.ui.KitFloatPage
;
import
com.didichuxing.doraemonkit.ui.base.BaseFragment
;
import
com.didichuxing.doraemonkit.ui.base.BaseFragment
;
import
com.didichuxing.doraemonkit.ui.base.FloatPageManager
;
import
com.didichuxing.doraemonkit.ui.base.PageIntent
;
import
com.didichuxing.doraemonkit.ui.realtime.OnFloatPageChangeListener
;
import
com.didichuxing.doraemonkit.ui.realtime.OnFloatPageChangeListener
;
import
com.didichuxing.doraemonkit.ui.realtime.RealTimeChartIconPage
;
import
com.didichuxing.doraemonkit.ui.realtime.RealTimeChartIconPage
;
import
com.didichuxing.doraemonkit.ui.realtime.RealTimeChartPage
;
import
com.didichuxing.doraemonkit.ui.realtime.RealTimeChartPage
;
...
@@ -56,6 +61,7 @@ public class MonitorDataUploadFragment extends BaseFragment implements OnFloatPa
...
@@ -56,6 +61,7 @@ public class MonitorDataUploadFragment extends BaseFragment implements OnFloatPa
mSettingItemAdapter
.
append
(
new
SettingItem
(
R
.
string
.
dk_frameinfo_cpu
,
PerformanceInfoConfig
.
isCPUOpen
(
getContext
())));
mSettingItemAdapter
.
append
(
new
SettingItem
(
R
.
string
.
dk_frameinfo_cpu
,
PerformanceInfoConfig
.
isCPUOpen
(
getContext
())));
mSettingItemAdapter
.
append
(
new
SettingItem
(
R
.
string
.
dk_frameinfo_ram
,
PerformanceInfoConfig
.
isMemoryOpen
(
getContext
())));
mSettingItemAdapter
.
append
(
new
SettingItem
(
R
.
string
.
dk_frameinfo_ram
,
PerformanceInfoConfig
.
isMemoryOpen
(
getContext
())));
mSettingItemAdapter
.
append
(
new
SettingItem
(
R
.
string
.
dk_kit_net_monitor
,
PerformanceInfoConfig
.
isTrafficOpen
(
getContext
())));
mSettingItemAdapter
.
append
(
new
SettingItem
(
R
.
string
.
dk_kit_net_monitor
,
PerformanceInfoConfig
.
isTrafficOpen
(
getContext
())));
mSettingItemAdapter
.
append
(
new
SettingItem
(
R
.
string
.
dk_platform_monitor_view_stat_data
,
R
.
drawable
.
dk_more_icon
));
mSettingItemAdapter
.
setOnSettingItemSwitchListener
(
new
SettingItemAdapter
.
OnSettingItemSwitchListener
()
{
mSettingItemAdapter
.
setOnSettingItemSwitchListener
(
new
SettingItemAdapter
.
OnSettingItemSwitchListener
()
{
@Override
@Override
...
@@ -72,6 +78,14 @@ public class MonitorDataUploadFragment extends BaseFragment implements OnFloatPa
...
@@ -72,6 +78,14 @@ public class MonitorDataUploadFragment extends BaseFragment implements OnFloatPa
setCommitButtonState
();
setCommitButtonState
();
}
}
});
});
mSettingItemAdapter
.
setOnSettingItemClickListener
(
new
SettingItemAdapter
.
OnSettingItemClickListener
()
{
@Override
public
void
onSettingItemClick
(
View
view
,
SettingItem
data
)
{
if
(
data
.
desc
==
R
.
string
.
dk_platform_monitor_view_stat_data
)
{
showContent
(
PageDataFragment
.
class
);
}
}
});
mSettingList
.
setAdapter
(
mSettingItemAdapter
);
mSettingList
.
setAdapter
(
mSettingItemAdapter
);
mCommitButton
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
mCommitButton
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
...
@@ -79,9 +93,13 @@ public class MonitorDataUploadFragment extends BaseFragment implements OnFloatPa
...
@@ -79,9 +93,13 @@ public class MonitorDataUploadFragment extends BaseFragment implements OnFloatPa
if
(
mCommitButton
.
getText
().
equals
(
getString
(
R
.
string
.
dk_platform_monitor_data_button_stop
)))
{
if
(
mCommitButton
.
getText
().
equals
(
getString
(
R
.
string
.
dk_platform_monitor_data_button_stop
)))
{
mCommitButton
.
setText
(
R
.
string
.
dk_platform_monitor_data_button
);
mCommitButton
.
setText
(
R
.
string
.
dk_platform_monitor_data_button
);
PerformanceDataManager
.
getInstance
().
stopUploadMonitorData
();
PerformanceDataManager
.
getInstance
().
stopUploadMonitorData
();
FloatPageManager
.
getInstance
().
removeAll
(
RealTimePerformDataFloatPage
.
class
);
}
else
{
}
else
{
mCommitButton
.
setText
(
R
.
string
.
dk_platform_monitor_data_button_stop
);
mCommitButton
.
setText
(
R
.
string
.
dk_platform_monitor_data_button_stop
);
PerformanceDataManager
.
getInstance
().
startUploadMonitorData
();
PerformanceDataManager
.
getInstance
().
startUploadMonitorData
();
PageIntent
pageIntent
=
new
PageIntent
(
RealTimePerformDataFloatPage
.
class
);
pageIntent
.
mode
=
PageIntent
.
MODE_SINGLE_INSTANCE
;
FloatPageManager
.
getInstance
().
add
(
pageIntent
);
}
}
}
}
});
});
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/PageDataFragment.java
0 → 100644
浏览文件 @
26a6b1d7
package
com.didichuxing.doraemonkit.kit.custom
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.View
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.kit.common.PerformanceDataManager
;
import
com.didichuxing.doraemonkit.ui.base.BaseFragment
;
import
com.didichuxing.doraemonkit.ui.fileexplorer.FileInfo
;
import
com.didichuxing.doraemonkit.ui.widget.recyclerview.DividerItemDecoration
;
import
com.didichuxing.doraemonkit.ui.widget.titlebar.HomeTitleBar
;
import
com.didichuxing.doraemonkit.ui.widget.titlebar.TitleBar
;
import
com.didichuxing.doraemonkit.util.JsonUtil
;
import
com.google.gson.reflect.TypeToken
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.lang.reflect.Type
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
PageDataFragment
extends
BaseFragment
{
private
RecyclerView
mRvList
;
private
PageDataItemAdapter
mAdapter
;
@Override
protected
int
onRequestLayout
()
{
return
R
.
layout
.
dk_fragment_monitor_pagedata
;
}
@Override
public
void
onViewCreated
(
@NonNull
View
view
,
@Nullable
Bundle
savedInstanceState
)
{
super
.
onViewCreated
(
view
,
savedInstanceState
);
initView
();
initData
();
}
private
void
initView
()
{
TitleBar
titleBar
=
findViewById
(
R
.
id
.
title_bar
);
titleBar
.
setOnTitleBarClickListener
(
new
TitleBar
.
OnTitleBarClickListener
()
{
@Override
public
void
onLeftClick
()
{
getActivity
().
onBackPressed
();
}
@Override
public
void
onRightClick
()
{
}
});
mRvList
=
findViewById
(
R
.
id
.
info_list
);
LinearLayoutManager
layoutManager
=
new
LinearLayoutManager
(
getContext
());
mRvList
.
setLayoutManager
(
layoutManager
);
mAdapter
=
new
PageDataItemAdapter
(
getContext
());
mRvList
.
setAdapter
(
mAdapter
);
DividerItemDecoration
decoration
=
new
DividerItemDecoration
(
DividerItemDecoration
.
VERTICAL
);
decoration
.
setDrawable
(
getResources
().
getDrawable
(
R
.
drawable
.
dk_divider_gray
));
mRvList
.
addItemDecoration
(
decoration
);
mRvList
.
setAdapter
(
mAdapter
);
}
private
void
initData
()
{
new
LoadDataTask
().
execute
(
PerformanceDataManager
.
getInstance
().
getCustomFilePath
());
}
private
class
LoadDataTask
extends
AsyncTask
<
String
,
Integer
,
List
<
PageDataItem
>>
{
@Override
protected
void
onPostExecute
(
List
<
PageDataItem
>
items
)
{
mAdapter
.
setData
(
items
);
}
@Override
protected
List
<
PageDataItem
>
doInBackground
(
String
...
strings
)
{
File
file
=
new
File
(
strings
[
0
]);
String
fileString
=
getFileString
(
file
);
fileString
=
'['
+
fileString
+
']'
;
fileString
=
fileString
.
replaceAll
(
"\\}\\{"
,
"},{"
);
List
<
UploadMonitorInfoBean
>
infoBeans
=
JsonUtil
.
jsonToList
(
fileString
,
UploadMonitorInfoBean
.
class
);
return
convert2ItemData
(
infoBeans
);
}
}
private
List
<
PageDataItem
>
convert2ItemData
(
List
<
UploadMonitorInfoBean
>
infoBeans
)
{
List
<
PageDataItem
>
dataItems
=
new
ArrayList
<>();
if
(
null
==
infoBeans
||
0
>=
infoBeans
.
size
()){
return
dataItems
;
}
for
(
UploadMonitorInfoBean
infoBean
:
infoBeans
)
{
if
(
null
==
infoBean
||
null
==
infoBean
.
performanceArray
||
0
>=
infoBean
.
performanceArray
.
size
()){
continue
;
}
PageDataItem
item
=
new
PageDataItem
();
List
<
PerformanceInfo
>
performanceInfos
=
infoBean
.
performanceArray
;
item
.
pageName
=
infoBean
.
appName
;
item
.
upNetWork
=
new
PageDataItemChild
<>(
R
.
string
.
dk_frameinfo_upstream
);
item
.
downNetWork
=
new
PageDataItemChild
<>(
R
.
string
.
dk_frameinfo_downstream
);
item
.
memory
=
new
PageDataItemChild
<>(
R
.
string
.
dk_frameinfo_ram
);
item
.
cpu
=
new
PageDataItemChild
<>(
R
.
string
.
dk_frameinfo_cpu
);
item
.
fps
=
new
PageDataItemChild
<>(
R
.
string
.
dk_frameinfo_fps
);
for
(
PerformanceInfo
info
:
performanceInfos
)
{
setValue
(
item
.
memory
,
info
.
memory
);
setValue
(
item
.
cpu
,
info
.
cpu
);
setValue
(
item
.
fps
,
info
.
fps
);
}
item
.
memory
.
avg
/=
performanceInfos
.
size
();
item
.
cpu
.
avg
/=
performanceInfos
.
size
();
item
.
fps
.
avg
/=
performanceInfos
.
size
();
dataItems
.
add
(
item
);
}
return
dataItems
;
}
private
void
setValue
(
PageDataItemChild
<
Float
>
child
,
float
newValue
)
{
child
.
min
=
Math
.
min
(
null
==
child
.
min
?
0
:
child
.
min
,
newValue
);
child
.
max
=
Math
.
max
(
null
==
child
.
max
?
0
:
child
.
max
,
newValue
);
child
.
avg
=
(
null
==
child
.
avg
?
0
:
child
.
avg
)+
newValue
;
}
private
void
setValue
(
PageDataItemChild
<
Integer
>
child
,
int
newValue
)
{
child
.
min
=
Math
.
min
(
null
==
child
.
min
?
0
:
child
.
min
,
newValue
);
child
.
max
=
Math
.
max
(
null
==
child
.
max
?
0
:
child
.
max
,
newValue
);
child
.
avg
=
(
null
==
child
.
avg
?
0
:
child
.
avg
)+
newValue
;
}
private
void
setValue
(
PageDataItemChild
<
Double
>
child
,
double
newValue
)
{
child
.
min
=
Math
.
min
(
null
==
child
.
min
?
0
:
child
.
min
,
newValue
);
child
.
max
=
Math
.
max
(
null
==
child
.
max
?
0
:
child
.
max
,
newValue
);
child
.
avg
=
(
null
==
child
.
avg
?
0
:
child
.
avg
)+
newValue
;
}
private
String
getFileString
(
File
file
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
if
(
file
.
exists
())
{
BufferedReader
reader
=
null
;
try
{
reader
=
new
BufferedReader
(
new
FileReader
(
file
));
String
tempString
=
null
;
while
((
tempString
=
reader
.
readLine
())
!=
null
)
{
stringBuilder
.
append
(
tempString
);
}
reader
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
reader
!=
null
)
{
try
{
reader
.
close
();
}
catch
(
IOException
e1
)
{
e1
.
printStackTrace
();
}
}
}
}
return
stringBuilder
.
toString
();
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/PageDataItem.java
0 → 100644
浏览文件 @
26a6b1d7
package
com.didichuxing.doraemonkit.kit.custom
;
import
android.support.annotation.StringRes
;
import
android.view.View
;
public
class
PageDataItem
{
public
String
pageName
;
public
PageDataItemChild
<
Double
>
upNetWork
;
public
PageDataItemChild
<
Double
>
downNetWork
;
public
PageDataItemChild
<
Float
>
memory
;
public
PageDataItemChild
<
Float
>
cpu
;
public
PageDataItemChild
<
Integer
>
fps
;
public
PageDataItem
()
{
}
}
class
PageDataItemChild
<
T
extends
Number
>
{
@StringRes
public
int
nameResId
;
public
T
min
;
public
T
max
;
public
T
avg
;
public
PageDataItemChild
(
int
nameResId
)
{
this
.
nameResId
=
nameResId
;
}
public
int
getVisibility
(
PageDataItemChild
<?
extends
Number
>
child
){
return
0
<
getValue
(
child
.
min
)+
getValue
(
child
.
max
)
+
getValue
(
child
.
avg
)
?
View
.
VISIBLE
:
View
.
GONE
;
}
private
double
getValue
(
Number
data
){
return
null
==
data
?
0
:
data
.
doubleValue
();
}
public
int
getNameResId
()
{
return
nameResId
;
}
public
void
setNameResId
(
int
nameResId
)
{
this
.
nameResId
=
nameResId
;
}
public
void
setMin
(
T
min
)
{
this
.
min
=
min
;
}
public
T
getMax
()
{
return
max
;
}
public
void
setMax
(
T
max
)
{
this
.
max
=
max
;
}
public
T
getAvg
()
{
return
avg
;
}
public
void
setAvg
(
T
avg
)
{
this
.
avg
=
avg
;
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/PageDataItemAdapter.java
0 → 100644
浏览文件 @
26a6b1d7
package
com.didichuxing.doraemonkit.kit.custom
;
import
android.content.Context
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.TextView
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.ui.widget.recyclerview.AbsRecyclerAdapter
;
import
com.didichuxing.doraemonkit.ui.widget.recyclerview.AbsViewBinder
;
public
class
PageDataItemAdapter
extends
AbsRecyclerAdapter
<
AbsViewBinder
<
PageDataItem
>,
PageDataItem
>
{
private
Context
mContext
;
public
PageDataItemAdapter
(
Context
context
)
{
super
(
context
);
mContext
=
context
;
}
@Override
protected
AbsViewBinder
<
PageDataItem
>
createViewHolder
(
View
view
,
int
viewType
)
{
return
new
ViewHolder
(
view
);
}
@Override
protected
View
createView
(
LayoutInflater
inflater
,
ViewGroup
parent
,
int
viewType
)
{
return
inflater
.
inflate
(
R
.
layout
.
dk_fragment_monitor_pagedata_item
,
parent
,
false
);
}
public
class
ViewHolder
extends
AbsViewBinder
<
PageDataItem
>
{
private
TextView
page_name_txt
;
private
View
up_network_item
;
private
View
down_network_item
;
private
View
memory_item
;
private
View
cpu_item
;
private
View
fps_item
;
public
ViewHolder
(
View
view
)
{
super
(
view
);
}
@Override
protected
void
getViews
()
{
page_name_txt
=
getView
(
R
.
id
.
page_name_txt
);
up_network_item
=
getView
(
R
.
id
.
up_network_item
);
down_network_item
=
getView
(
R
.
id
.
down_network_item
);
memory_item
=
getView
(
R
.
id
.
memory_item
);
cpu_item
=
getView
(
R
.
id
.
cpu_item
);
fps_item
=
getView
(
R
.
id
.
fps_item
);
}
@Override
public
void
bind
(
PageDataItem
item
)
{
page_name_txt
.
setText
(
item
.
pageName
);
setValue
(
up_network_item
,
item
.
upNetWork
);
setValue
(
down_network_item
,
item
.
downNetWork
);
setValue
(
memory_item
,
item
.
memory
);
setValue
(
cpu_item
,
item
.
cpu
);
setValue
(
fps_item
,
item
.
fps
);
}
}
private
void
setValue
(
View
iteView
,
PageDataItemChild
<?
extends
Number
>
data
)
{
int
visibility
=
data
.
getVisibility
(
data
);
iteView
.
setVisibility
(
visibility
);
if
(
View
.
GONE
==
visibility
){
return
;
}
String
rule
=
getFormatRule
(
data
.
nameResId
);
((
TextView
)
iteView
.
findViewById
(
R
.
id
.
data_name_txt
)).
setText
(
data
.
nameResId
);
((
TextView
)
iteView
.
findViewById
(
R
.
id
.
high_data_txt
)).
setText
(
String
.
format
(
rule
,
data
.
max
));
((
TextView
)
iteView
.
findViewById
(
R
.
id
.
low_data_txt
)).
setText
(
String
.
format
(
rule
,
data
.
min
));
((
TextView
)
iteView
.
findViewById
(
R
.
id
.
avg_data_txt
)).
setText
(
String
.
format
(
"%s - "
+
rule
,
mContext
.
getString
(
R
.
string
.
dk_frameinfo_avg_value
),
data
.
avg
));
}
private
String
getFormatRule
(
int
nameResId
){
String
formatRule
=
""
;
if
(
nameResId
==
R
.
string
.
dk_frameinfo_ram
)
{
formatRule
=
"%.1fM"
;
}
else
if
(
nameResId
==
R
.
string
.
dk_frameinfo_cpu
)
{
formatRule
=
"%.1f%%"
;
}
else
if
(
nameResId
==
R
.
string
.
dk_frameinfo_fps
)
{
formatRule
=
"%s"
;
}
else
if
(
nameResId
==
R
.
string
.
dk_frameinfo_downstream
)
{
formatRule
=
"%.1fB"
;
}
else
if
(
nameResId
==
R
.
string
.
dk_frameinfo_upstream
)
{
formatRule
=
"%.1fB"
;
}
return
formatRule
;
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/RealTimePerformDataFloatPage.java
0 → 100644
浏览文件 @
26a6b1d7
package
com.didichuxing.doraemonkit.kit.custom
;
import
android.annotation.SuppressLint
;
import
android.content.Context
;
import
android.os.Handler
;
import
android.os.Looper
;
import
android.os.Message
;
import
android.view.LayoutInflater
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.WindowManager
;
import
android.widget.TextView
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.config.PerformanceInfoConfig
;
import
com.didichuxing.doraemonkit.kit.common.PerformanceDataManager
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
com.didichuxing.doraemonkit.kit.network.bean.NetworkRecord
;
import
com.didichuxing.doraemonkit.kit.timecounter.TimeCounterManager
;
import
com.didichuxing.doraemonkit.ui.base.BaseFloatPage
;
import
com.didichuxing.doraemonkit.ui.base.TouchProxy
;
import
com.didichuxing.doraemonkit.util.UIUtils
;
import
java.util.List
;
/**
*
*/
public
class
RealTimePerformDataFloatPage
extends
BaseFloatPage
implements
TouchProxy
.
OnTouchEventListener
{
public
static
final
int
UPDATE_DATA_WHAT
=
0x123
;
private
WindowManager
mWindowManager
;
private
TouchProxy
mTouchProxy
=
new
TouchProxy
(
this
);
TextView
mMemoryTxt
;
TextView
mDownNetworkTxt
;
TextView
mCpuTxt
;
TextView
mUpNetworkTxt
;
TextView
mFpsTxt
;
private
Handler
mHandler
;
@Override
protected
void
onCreate
(
Context
context
)
{
super
.
onCreate
(
context
);
mWindowManager
=
(
WindowManager
)
context
.
getSystemService
(
Context
.
WINDOW_SERVICE
);
mHandler
=
new
Handler
(
Looper
.
getMainLooper
())
{
@Override
public
void
handleMessage
(
Message
msg
)
{
showInfo
();
mHandler
.
sendEmptyMessageDelayed
(
UPDATE_DATA_WHAT
,
1000
);
}
};
}
@Override
protected
View
onCreateView
(
Context
context
,
ViewGroup
view
)
{
return
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
dk_float_perform_data
,
null
);
}
@Override
protected
void
onLayoutParamsCreated
(
WindowManager
.
LayoutParams
params
)
{
params
.
flags
=
WindowManager
.
LayoutParams
.
FLAG_NOT_FOCUSABLE
;
params
.
width
=
WindowManager
.
LayoutParams
.
WRAP_CONTENT
;
params
.
height
=
WindowManager
.
LayoutParams
.
WRAP_CONTENT
;
params
.
x
=
UIUtils
.
dp2px
(
getContext
(),
30
);
params
.
y
=
UIUtils
.
dp2px
(
getContext
(),
30
);
}
@Override
protected
void
onViewCreated
(
View
view
)
{
super
.
onViewCreated
(
view
);
initView
();
}
private
void
initView
()
{
getRootView
().
setOnTouchListener
(
new
View
.
OnTouchListener
()
{
@Override
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
return
mTouchProxy
.
onTouchEvent
(
v
,
event
);
}
});
mMemoryTxt
=
findViewById
(
R
.
id
.
memory_txt
);
mDownNetworkTxt
=
findViewById
(
R
.
id
.
down_network_txt
);
mCpuTxt
=
findViewById
(
R
.
id
.
cpu_txt
);
mUpNetworkTxt
=
findViewById
(
R
.
id
.
up_network_txt
);
mFpsTxt
=
findViewById
(
R
.
id
.
fps_txt
);
mHandler
.
sendEmptyMessage
(
UPDATE_DATA_WHAT
);
}
@SuppressLint
(
"DefaultLocale"
)
private
void
showInfo
()
{
PerformanceDataManager
manager
=
PerformanceDataManager
.
getInstance
();
if
(
PerformanceInfoConfig
.
isMemoryOpen
(
getContext
()))
{
mMemoryTxt
.
setVisibility
(
View
.
VISIBLE
);
mMemoryTxt
.
setText
(
String
.
format
(
"%s: %.1fM"
,
getString
(
R
.
string
.
dk_frameinfo_ram
),
manager
.
getLastMemoryInfo
()));
}
else
{
mMemoryTxt
.
setVisibility
(
View
.
INVISIBLE
);
}
if
(
PerformanceInfoConfig
.
isCPUOpen
(
getContext
()))
{
mCpuTxt
.
setVisibility
(
View
.
VISIBLE
);
mCpuTxt
.
setText
(
String
.
format
(
"%s: %.1f%%"
,
getString
(
R
.
string
.
dk_frameinfo_cpu
),
manager
.
getLastCpuRate
()));
}
else
{
mCpuTxt
.
setVisibility
(
View
.
INVISIBLE
);
}
if
(
PerformanceInfoConfig
.
isFPSOpen
(
getContext
()))
{
mFpsTxt
.
setVisibility
(
View
.
VISIBLE
);
mFpsTxt
.
setText
(
String
.
format
(
"%s: %s"
,
getString
(
R
.
string
.
dk_frameinfo_fps
),
manager
.
getLastFrameRate
()
+
""
));
}
else
{
mFpsTxt
.
setVisibility
(
View
.
INVISIBLE
);
}
if
(
PerformanceInfoConfig
.
isTrafficOpen
(
getContext
()))
{
mDownNetworkTxt
.
setVisibility
(
View
.
VISIBLE
);
mUpNetworkTxt
.
setVisibility
(
View
.
VISIBLE
);
List
<
NetworkRecord
>
records
=
NetworkManager
.
get
().
getRecords
();
long
requestLength
=
null
!=
records
&&
0
<
records
.
size
()
?
records
.
get
(
records
.
size
()
-
1
).
requestLength
:
0
;
long
responseLength
=
null
!=
records
&&
0
<
records
.
size
()
?
records
.
get
(
records
.
size
()
-
1
).
responseLength
:
0
;
mDownNetworkTxt
.
setText
(
String
.
format
(
"%s: %sB"
,
getString
(
R
.
string
.
dk_frameinfo_downstream
),
requestLength
));
mUpNetworkTxt
.
setText
(
String
.
format
(
"%s: %sB"
,
getString
(
R
.
string
.
dk_frameinfo_upstream
),
responseLength
));
}
else
{
mDownNetworkTxt
.
setVisibility
(
View
.
INVISIBLE
);
mUpNetworkTxt
.
setVisibility
(
View
.
INVISIBLE
);
}
}
@Override
public
void
onMove
(
int
x
,
int
y
,
int
dx
,
int
dy
)
{
getLayoutParams
().
x
+=
dx
;
getLayoutParams
().
y
+=
dy
;
mWindowManager
.
updateViewLayout
(
getRootView
(),
getLayoutParams
());
}
@Override
public
void
onUp
(
int
x
,
int
y
)
{
}
@Override
public
void
onDown
(
int
x
,
int
y
)
{
}
@Override
public
void
onEnterForeground
()
{
super
.
onEnterForeground
();
getRootView
().
setVisibility
(
View
.
VISIBLE
);
}
@Override
public
void
onEnterBackground
()
{
super
.
onEnterBackground
();
getRootView
().
setVisibility
(
View
.
GONE
);
TimeCounterManager
.
get
().
onEnterBackground
();
}
}
\ No newline at end of file
Android/doraemonkit/src/main/res/drawable-xxhdpi/dk_float_button.png
0 → 100644
浏览文件 @
26a6b1d7
11.1 KB
Android/doraemonkit/src/main/res/drawable-xxhdpi/dk_performance_down_arrow.png
0 → 100644
浏览文件 @
26a6b1d7
332 字节
Android/doraemonkit/src/main/res/drawable/dk_divider_gray.xml
0 → 100644
浏览文件 @
26a6b1d7
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<size
android:height=
"12dp"
/>
<solid
android:color=
"#F5F6F7"
/>
</shape>
\ No newline at end of file
Android/doraemonkit/src/main/res/drawable/dk_perform_data_background.xml
0 → 100644
浏览文件 @
26a6b1d7
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#aa000000"
/>
<corners
android:radius=
"4dp"
/>
<stroke
android:color=
"@color/dk_color_CCCCCC"
android:width=
"1px"
/>
</shape>
\ No newline at end of file
Android/doraemonkit/src/main/res/layout/dk_float_perform_data.xml
0 → 100644
浏览文件 @
26a6b1d7
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation=
"vertical"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
<LinearLayout
android:layout_width=
"200dp"
android:layout_height=
"100dp"
android:background=
"@drawable/dk_perform_data_background"
android:orientation=
"vertical"
android:padding=
"10dp"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<TextView
android:id=
"@+id/memory_txt"
android:textColor=
"#FFF"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:textSize=
"@dimen/dk_font_size_12"
/>
<TextView
android:id=
"@+id/down_network_txt"
android:textColor=
"#FFF"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:textSize=
"@dimen/dk_font_size_12"
/>
</LinearLayout>
<LinearLayout
android:layout_marginTop=
"10dp"
android:layout_marginBottom=
"10dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<TextView
android:id=
"@+id/cpu_txt"
android:textColor=
"#FFF"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:textSize=
"@dimen/dk_font_size_12"
/>
<TextView
android:id=
"@+id/up_network_txt"
android:textColor=
"#FFF"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:textSize=
"@dimen/dk_font_size_12"
/>
</LinearLayout>
<TextView
android:id=
"@+id/fps_txt"
android:textColor=
"#FFF"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/dk_font_size_12"
/>
</LinearLayout>
<ImageView
android:layout_width=
"40dp"
android:layout_height=
"40dp"
android:layout_gravity=
"right|bottom"
android:layout_marginTop=
"-20dp"
android:src=
"@drawable/dk_float_button"
/>
</LinearLayout>
Android/doraemonkit/src/main/res/layout/dk_fragment_monitor_pagedata.xml
0 → 100644
浏览文件 @
26a6b1d7
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:orientation=
"vertical"
android:background=
"@color/dk_color_FFFFFF"
>
<com.didichuxing.doraemonkit.ui.widget.titlebar.TitleBar
android:id=
"@+id/title_bar"
android:layout_width=
"match_parent"
android:layout_height=
"44dp"
app:dkLeftIcon=
"@drawable/dk_title_back"
app:dkLeftText=
"@string/dk_back"
app:dkTitle=
"@string/dk_platform_monitor_page_data"
/>
<View
style=
"@style/DK.Shadow.Bottom"
/>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/info_list"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:overScrollMode=
"never"
android:scrollbars=
"none"
/>
</LinearLayout>
\ No newline at end of file
Android/doraemonkit/src/main/res/layout/dk_fragment_monitor_pagedata_item.xml
0 → 100644
浏览文件 @
26a6b1d7
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/dk_color_FFFFFF"
android:padding=
"10dp"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/page_name_txt"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textSize=
"16sp"
android:textColor=
"#333"
android:maxLines=
"1"
android:ellipsize=
"end"
android:layout_marginBottom=
"16dp"
android:text=
""
/>
<include
android:id=
"@+id/up_network_item"
android:layout_marginBottom=
"8dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
layout=
"@layout/dk_fragment_monitor_pagedata_item_item"
/>
<include
android:id=
"@+id/down_network_item"
android:layout_marginBottom=
"8dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
layout=
"@layout/dk_fragment_monitor_pagedata_item_item"
/>
<include
android:id=
"@+id/memory_item"
android:layout_marginBottom=
"8dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
layout=
"@layout/dk_fragment_monitor_pagedata_item_item"
/>
<include
android:id=
"@+id/cpu_item"
android:layout_marginBottom=
"8dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
layout=
"@layout/dk_fragment_monitor_pagedata_item_item"
/>
<include
android:id=
"@+id/fps_item"
android:layout_marginBottom=
"8dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
layout=
"@layout/dk_fragment_monitor_pagedata_item_item"
/>
</LinearLayout>
\ No newline at end of file
Android/doraemonkit/src/main/res/layout/dk_fragment_monitor_pagedata_item_item.xml
0 → 100644
浏览文件 @
26a6b1d7
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<TextView
android:id=
"@+id/data_name_txt"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:gravity=
"right"
android:paddingRight=
"10dp"
android:textSize=
"12sp"
android:textColor=
"#333"
android:layout_weight=
"1"
android:text=
""
/>
<TextView
android:id=
"@+id/high_data_txt"
android:drawableLeft=
"@drawable/dk_performance_up_arrow"
android:drawablePadding=
"4dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:textSize=
"12sp"
android:textColor=
"#666"
android:text=
""
/>
<TextView
android:id=
"@+id/low_data_txt"
android:drawableLeft=
"@drawable/dk_performance_down_arrow"
android:drawablePadding=
"4dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:textSize=
"12sp"
android:textColor=
"#666"
android:text=
""
/>
<TextView
android:id=
"@+id/avg_data_txt"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:textSize=
"12sp"
android:textColor=
"#666"
android:text=
""
/>
</LinearLayout>
\ No newline at end of file
Android/doraemonkit/src/main/res/values-en-rUS/strings.xml
浏览文件 @
26a6b1d7
...
@@ -52,6 +52,9 @@
...
@@ -52,6 +52,9 @@
<string
name=
"dk_frameinfo_fps"
>
FPS
</string>
<string
name=
"dk_frameinfo_fps"
>
FPS
</string>
<string
name=
"dk_frameinfo_cpu"
>
CPU
</string>
<string
name=
"dk_frameinfo_cpu"
>
CPU
</string>
<string
name=
"dk_frameinfo_custom"
>
CUSTOM
</string>
<string
name=
"dk_frameinfo_custom"
>
CUSTOM
</string>
<string
name=
"dk_frameinfo_upstream"
>
Upstream traffic
</string>
<string
name=
"dk_frameinfo_downstream"
>
Downstream traffic
</string>
<string
name=
"dk_frameinfo_avg_value"
>
Average value
</string>
<string
name=
"dk_log_info_edt_hint"
>
Enter the keywords you want to filter
</string>
<string
name=
"dk_log_info_edt_hint"
>
Enter the keywords you want to filter
</string>
<string
name=
"dk_log_info_verbose"
>
Verbose
</string>
<string
name=
"dk_log_info_verbose"
>
Verbose
</string>
...
@@ -167,6 +170,8 @@
...
@@ -167,6 +170,8 @@
<string
name=
"dk_platform_monitor_data_button"
>
start test
</string>
<string
name=
"dk_platform_monitor_data_button"
>
start test
</string>
<string
name=
"dk_platform_monitor_data_button_stop"
>
stop test
</string>
<string
name=
"dk_platform_monitor_data_button_stop"
>
stop test
</string>
<string
name=
"dk_platform_monitor_view_stat_data"
>
view statistics
</string>
<string
name=
"dk_platform_monitor_page_data"
>
page data
</string>
<string
name=
"dk_log_text_loading"
>
Loading...
</string>
<string
name=
"dk_log_text_loading"
>
Loading...
</string>
</resources>
</resources>
Android/doraemonkit/src/main/res/values-zh-rCN/strings.xml
浏览文件 @
26a6b1d7
...
@@ -53,6 +53,9 @@
...
@@ -53,6 +53,9 @@
<string
name=
"dk_frameinfo_fps"
>
帧率
</string>
<string
name=
"dk_frameinfo_fps"
>
帧率
</string>
<string
name=
"dk_frameinfo_cpu"
>
CPU
</string>
<string
name=
"dk_frameinfo_cpu"
>
CPU
</string>
<string
name=
"dk_frameinfo_custom"
>
自定义
</string>
<string
name=
"dk_frameinfo_custom"
>
自定义
</string>
<string
name=
"dk_frameinfo_upstream"
>
上行流量
</string>
<string
name=
"dk_frameinfo_downstream"
>
下行流量
</string>
<string
name=
"dk_frameinfo_avg_value"
>
平均值
</string>
<string
name=
"dk_log_info_edt_hint"
>
输入想要过滤的关键字
</string>
<string
name=
"dk_log_info_edt_hint"
>
输入想要过滤的关键字
</string>
<string
name=
"dk_log_info_verbose"
>
Verbose
</string>
<string
name=
"dk_log_info_verbose"
>
Verbose
</string>
...
@@ -166,5 +169,7 @@
...
@@ -166,5 +169,7 @@
<string
name=
"dk_platform_monitor_data_button"
>
开始测试
</string>
<string
name=
"dk_platform_monitor_data_button"
>
开始测试
</string>
<string
name=
"dk_platform_monitor_data_button_stop"
>
结束测试
</string>
<string
name=
"dk_platform_monitor_data_button_stop"
>
结束测试
</string>
<string
name=
"dk_platform_monitor_view_stat_data"
>
查看统计数据
</string>
<string
name=
"dk_platform_monitor_page_data"
>
页面数据
</string>
<string
name=
"dk_log_text_loading"
>
日志加载中...
</string>
<string
name=
"dk_log_text_loading"
>
日志加载中...
</string>
</resources>
</resources>
Android/doraemonkit/src/main/res/values/strings.xml
浏览文件 @
26a6b1d7
...
@@ -56,6 +56,9 @@
...
@@ -56,6 +56,9 @@
<string
name=
"dk_frameinfo_cpu"
>
CPU
</string>
<string
name=
"dk_frameinfo_cpu"
>
CPU
</string>
<string
name=
"dk_frameinfo_ram"
>
内存
</string>
<string
name=
"dk_frameinfo_ram"
>
内存
</string>
<string
name=
"dk_frameinfo_custom"
>
自定义
</string>
<string
name=
"dk_frameinfo_custom"
>
自定义
</string>
<string
name=
"dk_frameinfo_upstream"
>
上行流量
</string>
<string
name=
"dk_frameinfo_downstream"
>
下行流量
</string>
<string
name=
"dk_frameinfo_avg_value"
>
平均值
</string>
<string
name=
"dk_log_info_edt_hint"
>
输入想要过滤的关键字
</string>
<string
name=
"dk_log_info_edt_hint"
>
输入想要过滤的关键字
</string>
<string
name=
"dk_log_info_verbose"
>
Verbose
</string>
<string
name=
"dk_log_info_verbose"
>
Verbose
</string>
...
@@ -179,6 +182,8 @@
...
@@ -179,6 +182,8 @@
<string
name=
"dk_platform_monitor_data_button"
>
开始测试
</string>
<string
name=
"dk_platform_monitor_data_button"
>
开始测试
</string>
<string
name=
"dk_platform_monitor_data_button_stop"
>
结束测试
</string>
<string
name=
"dk_platform_monitor_data_button_stop"
>
结束测试
</string>
<string
name=
"dk_platform_monitor_view_stat_data"
>
查看统计数据
</string>
<string
name=
"dk_platform_monitor_page_data"
>
页面数据
</string>
<string
name=
"dk_log_text_loading"
>
日志加载中...
</string>
<string
name=
"dk_log_text_loading"
>
日志加载中...
</string>
</resources>
</resources>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录