1. 程式人生 > >Android除錯工具模板UI,應用內懸浮窗,動態顯示記憶體佔用

Android除錯工具模板UI,應用內懸浮窗,動態顯示記憶體佔用

Logo

EnDebugBubble

Muxuan

一個良好的Debug工具入口,是每個app所必備的,對於凌亂的除錯工具整理和除錯功能的統一使用方法,需要一個外觀整潔,內部具體的顯示容器。

傳統方案

方案一:一般的除錯工具,藉助在應用主介面某一處增加入口的方式,提供統一除錯介面
  • 入口固定,進入深層次介面呼叫Debug工具必須退回Debug固定入口處
  • 出現UI除錯等需求,除錯工具不夠靈活
方案二:傳統懸浮窗實現除錯入口
  • 懸浮窗面臨許可權問題
  • 一般懸浮窗的功能過於單一
  • 浮在應用上影響整體使用體驗

功能

此工具只提供一個懸浮窗樣式的除錯工具介面的實踐,使用者可以自行填充除錯測試功能進行使用。

  • 應用內顯示,無需申請任何許可權;
  • 支援拖拽;
  • 超出螢幕限制移動;
  • 可自動吸附到螢幕邊緣;
  • 銷燬懸浮窗靈活;
  • 可實時顯示記憶體佔用等資訊;
  • 點選懸浮窗可彈出浮層進行功能設定;
  • 浮層高度可靈活調整;
  • 除錯浮層可增加多頁;
  • 提供多種顯示控制元件,如單選控制元件、多選控制元件、富多選資訊控制元件、文字控制元件等
  • 填充測試功能方便,利於維護;
  • APP任意位置靈活喚出,APP外部自動隱藏;
  • 鏈式呼叫,呼叫簡單。

使用規則

  1. 在基類Activity(注意必須是基類Activity)中的onStart和onStop新增如下程式碼
   @Override
   protected void onStart() {
       super
.onStart(); DebugTools.get().attach(this); } @Override protected void onStop() { super.onStop(); DebugTools.get().detach(this); }
  1. 顯示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("介面型別:");

Logo

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();
                }
            });

Logo

Logo

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();
                }
            });

Logo

效果圖

Logo

特別鳴謝

本開源庫借鑑多個開源庫,感謝以下開源庫為開源力量做出的貢獻:

歡迎Star