自动Android点击/点击跟踪

时间:2014-01-09 18:25:48

标签: android analytics

每次用户点击或点击屏幕时,是否有一种聪明的“做某事”的方法?我想知道他们点击了哪个视图,并且无需用自定义视图替换所有标准视图。

基本上,我想在我的应用中添加点击跟踪以帮助进行分析。我们已经有了网页跟踪功能(通过为每项活动使用共享超类),但在某些情况下,网页跟踪功能还不够,我们实际上希望跟踪点击次数。

每次用户点击屏幕上的视图时,如何执行功能?

1 个答案:

答案 0 :(得分:1)

在你的每个活动中,只需在onCreate的末尾添加它(如果你的所有活动都是自定义Activity的子类,这一点特别容易,因为那样你只需要写一次):

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。以下代码将。请注意,如果相关onTouchListener已注册View事件,则可能会破坏其他onTouch。如果没有,这将很有效。它使用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.
}