該庫已經開源到github,地址github.com/AlexMahao/S…java
一個用於監聽android事件分發流程的庫,兩行代碼便可在運行時期監聽事件的分發流程。自動打印分發流程,並提供視圖查看。android
控制檯日誌輸出git
圖表形式查看github
JSON格式查看json
SimpleTouch
爲了解決事件分發問題而誕生,該庫能夠在運行時期打印完整的事件分發流程。bash
View
的dispatchTouchEvent
,onTouchEvent
,onInterceptTouchEvent
。json
的形式寫入文件。move
事件會自動過濾。no-op
版本,使用時可區分debug
和release
。添加依賴app
在項目的app
下的build.gradle
中添加依賴ide
debugApi 'com.spearbothy:simple-touch:1.0.7'
releaseApi 'com.spearbothy:simple-touch-no-op:1.0.7'
複製代碼
初始化gradle
在項目的Application
的onCreate()
中調用初始化方法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;
}
複製代碼
注入代理類(用於監聽事件分發)
在Activity
的onCreate()
的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
版本,該版本中包含有初始化和注入方法的空實現,以達到debug
和release
使用不一樣的版本,使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