Android除錯工具模板UI,應用內懸浮窗,動態顯示記憶體佔用
阿新 • • 發佈:2018-12-20
EnDebugBubble
一個良好的Debug工具入口,是每個app所必備的,對於凌亂的除錯工具整理和除錯功能的統一使用方法,需要一個外觀整潔,內部具體的顯示容器。
傳統方案
方案一:一般的除錯工具,藉助在應用主介面某一處增加入口的方式,提供統一除錯介面
- 入口固定,進入深層次介面呼叫Debug工具必須退回Debug固定入口處
- 出現UI除錯等需求,除錯工具不夠靈活
方案二:傳統懸浮窗實現除錯入口
- 懸浮窗面臨許可權問題
- 一般懸浮窗的功能過於單一
- 浮在應用上影響整體使用體驗
功能
此工具只提供一個懸浮窗樣式的除錯工具介面的實踐,使用者可以自行填充除錯測試功能進行使用。
- 應用內顯示,無需申請任何許可權;
- 支援拖拽;
- 超出螢幕限制移動;
- 可自動吸附到螢幕邊緣;
- 銷燬懸浮窗靈活;
- 可實時顯示記憶體佔用等資訊;
- 點選懸浮窗可彈出浮層進行功能設定;
- 浮層高度可靈活調整;
- 除錯浮層可增加多頁;
- 提供多種顯示控制元件,如單選控制元件、多選控制元件、富多選資訊控制元件、文字控制元件等
- 填充測試功能方便,利於維護;
- APP任意位置靈活喚出,APP外部自動隱藏;
- 鏈式呼叫,呼叫簡單。
使用規則
- 在基類Activity(注意必須是基類Activity)中的onStart和onStop新增如下程式碼
@Override
protected void onStart() {
super .onStart();
DebugTools.get().attach(this);
}
@Override
protected void onStop() {
super.onStop();
DebugTools.get().detach(this);
}
- 顯示Debug工具
DebugTools.get().add();
增強設定
銷燬Debug工具
DebugTools.get().remove();
攔截返回鍵銷燬選單
@Override
public void onBackPressed () {
if (!DebugTools.get().dismissMenu()){
super.onBackPressed();
}
}
填充資料並顯示(在onCreate中提前顯示需要主動呼叫一次attach)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DebugTools.get().attach(this)
.fillMenuData(DebugConfig.getList())
.add();
}
更新懸浮窗顯示資訊
DebugTools.get().updateInfo(memorySize, percent);
資料填充
支援四種類型控制元件填充列表
1.單選控制元件
new RadioEntity().setGroupBtnName("介面型別1#介面型別2#介面型別3")
.setCheckPosition(getSelectedHostId())
.setOnCheckedChangeListener(getHostCheckedChangeListener()).setTitle("介面型別:");
2.開關控制元件
new SwitchEntity().setChecked(true)
.setTitle("test feature toggle1")
.setInfo("動態功能開關測試1")
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(BubbleContext.getAppContext(), "動態功能開關測試", Toast.LENGTH_SHORT).show();
}
});
3.標題控制元件
new TextEntity().setTitle("測試頁面");
4.普通控制元件
new SimpleEntity().setTitle("測試1")
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(BubbleContext.getAppContext(), "Test", Toast.LENGTH_SHORT).show();
}
});
效果圖
特別鳴謝
本開源庫借鑑多個開源庫,感謝以下開源庫為開源力量做出的貢獻: