SimpleTouch:事件分發能夠如此清晰

該庫已經開源到github,地址github.com/AlexMahao/S…java

一個用於監聽android事件分發流程的庫,兩行代碼便可在運行時期監聽事件的分發流程。自動打印分發流程,並提供視圖查看。android

功能展現

控制檯日誌輸出git

圖表形式查看github

Sample

JSON格式查看json

Sample

簡介

SimpleTouch爲了解決事件分發問題而誕生,該庫能夠在運行時期打印完整的事件分發流程。bash

  • 監聽ViewdispatchTouchEventonTouchEventonInterceptTouchEvent
  • 運行時期動態打印事件分發流程。
  • 每一次完整的事件分發記錄以json的形式寫入文件。
  • 去重功能,對相同的move事件會自動過濾。
  • 提供no-op版本,使用時可區分debugrelease
  • 提供不一樣模式顯示

使用

添加依賴app

在項目的app下的build.gradle中添加依賴ide

debugApi 'com.spearbothy:simple-touch:1.0.7'
releaseApi 'com.spearbothy:simple-touch-no-op:1.0.7'
複製代碼

初始化gradle

在項目的ApplicationonCreate()中調用初始化方法Touch.inject(this);ui

Touch.init(this, new Config().setSimple(false));

複製代碼

Config對象提供一些配置選項

public class Config {

    // 輸出的日誌以極簡模式輸出
    private boolean isSimple = true;
    // 是否延遲打印日誌,延遲打印日誌會在觸摸事件結束以後打印,而且具備去重功能
    private boolean isDelay = true;
    // 是否保留重複的,默認不保留
    private boolean isRepeat = false;
    // 是否寫入到文件
    private boolean isPrint2File = true;
    // 是否處理,不處理則不會監放任何方法,任何功能都沒法生效
    private boolean isProcess = true;
}

複製代碼

注入代理類(用於監聽事件分發)

ActivityonCreate()super.onCreate(savedInstanceState);以前調用.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        Touch.inject(this);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRootView = (LinearLayout) findViewById(R.id.root);
    }
複製代碼

使用

編譯完成以後,打開app,開始觸摸吧!!! 每一次手指離開到觸摸請間隔大於1s,目的是對於每次觸摸加以區分,暫時沒想到合適的判斷條件。

流程圖查看

下拉通知中能夠看到SimpleTouch的入口

備註

  • 提供了no-op版本,該版本中包含有初始化和注入方法的空實現,以達到debugrelease使用不一樣的版本,使release不包含任何注入和初始化邏輯。
  • 在注入的時候有點耗時,若是頁面過於複雜,會有種頁面卡頓的感受.

引用或借鑑的三方庫

  • com.android.support:appcompat-v7
  • com.google.dexmaker:dexmaker
  • com.alibaba:fastjson
  • com.noober.background:core
  • com.yuyh.json:jsonviewer

關於

有任何疑問能夠經過issue或者以郵件的形式發送到zziamahao@163.com

相關文章
相關標籤/搜索