每當用戶點擊或點擊屏幕時,是否有一種聰明的方式來「做某件事」?我想知道他們點擊了哪個視圖,並且無需使用自定義視圖替換所有標準視圖。自動Android點擊/點擊跟蹤
基本上,我想在我的應用中添加點擊跟蹤來幫助進行分析。我們已經有了頁面跟蹤功能(通過爲每項活動使用共享超類),但是在某些情況下,頁面跟蹤還不夠,我們實際上想跟蹤點擊次數。
如何在每次用戶點擊屏幕上的視圖時執行一個功能?
每當用戶點擊或點擊屏幕時,是否有一種聰明的方式來「做某件事」?我想知道他們點擊了哪個視圖,並且無需使用自定義視圖替換所有標準視圖。自動Android點擊/點擊跟蹤
基本上,我想在我的應用中添加點擊跟蹤來幫助進行分析。我們已經有了頁面跟蹤功能(通過爲每項活動使用共享超類),但是在某些情況下,頁面跟蹤還不夠,我們實際上想跟蹤點擊次數。
如何在每次用戶點擊屏幕上的視圖時執行一個功能?
在每個活動,只是在onCreate
末尾添加這個(這是特別容易,如果你所有的活動都是一個自定義活動的子類,因爲這樣你只需要一次寫):
getWindow().getDecorView().findViewById(android.R.id.content).setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
//handle your code here
return false;//don't absorb the touch.
}
});
編輯
上面的代碼不允許容易識別其中的View
s的感動。下面的代碼將會。請注意,如果View
已註冊onTouch
事件,則可能會中斷其他onTouchListener
。如果沒有,這將工作得很好。它使用droidQuery庫來選擇層次結構中的所有視圖,並使用上面的代碼來處理觸摸而不吸收事件。最好的地方是在onCreate
的末尾,每Activity
:
首先,選擇你想要的架構的最高級別。如果您的佈局的根視圖有一個id,那將是最好的事情:
$.with(this, R.id.root_id)
如果沒有,要麼添加一個,或者選擇最上面的視圖(佈局上圖)。請注意,分析這可能提供了一定的成果,你並不需要:現在
$.with(this).selectAll()
,在本次評選結束後,追加了以下內容:
.each(new Function() {
@Override
public void invoke($ d, Object... args) {
d.view(0).setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
//do something with the clicked view, such as:
handleTouch(v, e);
return false;//don't absorb the touch.
}
})
}
});
然後有一個新方法:
private void handleTouch(View v, MotionEvent e) {
//handle the view touch.
}
這是否會告訴我哪個視圖被點擊,或將'v'永遠是內容的看法?例如。如果我的活動有一堆視圖中的項目列表視圖,它會告訴我點擊了哪個項目? – emmby
@emmby不,這不會給你已經點擊了其中的觀點,但你可以在屏幕上,他們獲得點擊的位置,並能確定其觀點手指下方鋪設。你能否在你的問題中澄清這是否是一項要求? – Phil
澄清,謝謝 – emmby