无埋点编码规范

无埋点方案基于窗口回调(Window.Callback)机制。BaseActivity中集成了自动打点相关逻辑。但由于dialog和activity实现机制不一样。为了dialog同样能够集成自动打点功能,解决方案如下:

任何Dialog,需要继承DDAlertDialog/DDDialog/DDV7AlertDialog。

任何PopupWindow需要继承DDPopupWindow。

支持自动打点的控件

A.列表类

DDListView 普通listview,使用者可以在布局中直接使用ListView标签,系统会自动将ListView 的实现替换成DDListView,DDListView 内部会设置Item View的OnClickListener,并将点击事件委托给onItemClickListener。

DDExpandableListView 二级列表控件,使用者可以在布局中直接使用ExpandableListView标签,系统会自动将ExpandableListView 的实现替换成DDExpandableListView。DDExpandableListView 内部会设置Item View的OnClickListener,并将点击事件委托给onGroup/ChildClickListener

B.网格类

DDGridView 普通GridView,使用者可以在布局中直接使用GridView 标签,系统会自动将GridView 的实现替换成DDGridView。DDGridView 内部会设置Item View的OnClickListener,并将点击事件委托给onItemClickListener。

C.ViewPager

任何ViewPager 实现,只要相应的PagerAdapter 子类实现DDPagerAdapter,该ViewPager 控件即支持自动打点。

D.RecyclerView

任何RecyclerView实现,只要相应的RecyclerView.Adapter子类实现DDRecyclerAdapter,该RecyclerView 支持自动打点

以上控件中嵌套其它可自动打点控件,比如DDListView,自动打点实现基于最内层的自动打点控件。

请在开发过程中,尽量使用支持自动打点的控件,如果使用的控件暂不支持自动打点,请联系作者(刘硕)。

不支持自动打点控件的解决方案

对于自定义ViewGroup 等不支持自动打点的情况,打点框架提供绑定数据的操作。使用者可以在BaseActivity子类中通过方法configLayout将view和数据绑定,绑定之后该View下的任意子View的点击事件的埋点数据都会指向这条数据。对于在非Activity中实现打点数据绑定,可以调用AutoPointHelper 中相应的方法,调用之前最好调用canxxxxx()进行绑定操作是否允许的检查。

对于某些需要手动发送埋点,但是同样需要走埋点框架的情况,可以调用PointPostAction.manualPostPoint(View,Object),调用该方法后,会直接发送埋点,但是埋点数据的解析会走自动打点的数据配置逻辑。注意:需要调用ignoreAotoPoint、canIgnoreAutoPoint 忽略自动打点对指定控件的支持。

对于完全手动打点的情况(不走埋点配置平台),使用者只需要直接调用 PointPostAction.postNlog()。

关联数据注意

对于打点框架支持的控件,底层会通过DataStrategy获取点击操作对应的数据。对于自定义ViewGroup 等不支持自动打点的情况,可以通过

BaseActivity.configLayoutData (id 和数据的对应关系)

AutoPointHelper.configLayoutData (id 和数据的对应关系)

AutoPointHelper.ignoreLayoutData

或实现DataAdapter 配置view绑定的数据 (View 实例和数据的对应关系,特别适用于用自定义ViewGroup,通过addView实现list效果的写法),那么该View下的任意子View点击操作打点日志绑定的数据都是该数据。

关于布局文件

布局文件中控件id不能有重复,任意控件id不能和文件名相同,同一个layout.xml中,不同include的布局中不能包含相同id的控件。

自定义ViewGroup说明

对于需要绑定数据的自定义ViewGroup,请务必实现DataAdapter 接口,并实现数据绑定方法setData及数据获取方法getData。打点框架会自动获取该自定义布局绑定的数据。

关于埋点配置

主项目assets目录下需要放置da.cfg配置文件,这个文件与从服务器下载的配置文件相同,作为默认埋点配置。

开发规范的检查已经通过lint项目保证

android 无埋点 简书,无埋点README相关推荐

  1. android源码编译 简书,android学习笔记之源码编译

    编译环境 1.需要Ubuntu 64bit,建议Ubuntu14.04 64-bit 2.安装openJDK7 $ sudo apt-get update $ sudo apt-get install ...

  2. android中设置lmargin简书,超详细React Native实现微信好友/朋友圈分享功能-Android/iOS双平台通用...

    (一)前言 本文主要会涉及到以下内容: 微信开发者应用申请审核 安装配置微信分享库 微信好友/朋友圈功能实现 (二)应用申请审核 首先大家需要去微信开发平台去注册账号并且创建一个移动应用.(地址:ht ...

  3. android虹软人脸识别简书,Android 用虹软SDK做人脸识别

    人脸识别第三方sdk比较多,但是大多都是收费的或者限制次数什么的,虹软的效果还不错,全免费也不需要联网 V1.2版本使用和快速集成:https://www.jianshu.com/p/8dee89ec ...

  4. android面试准备中高级简书!一起刷完了这份1307页的安卓面试宝典吧,已拿到offer

    开头 Android开发,假如开始没有任何的开发经验的话, 千万不要着急,不要想着在短时间内就把一个语言学习好, 因为你之前没有任何的学习经验, 在这个过程中需要有耐心地学习完JAVA的基础知识, 然 ...

  5. android饼状图简书,自定义 view 练手 - 简单的饼状图

    今天咱们来一个例子练练手,饼状图这样的图表算是最好的了,复杂的话可以很复杂, 采用 surfaceview + 动画 可以使用很优秀的观感体验:简单的话可以很简单,仅仅画出图来就行,不用考虑动画啥的 ...

  6. android音乐播放器简书,打造 Android 网络音乐播放器 [2]

    前言 在上一篇中,我们把播放器的基本播放功能实现了,今天我们就把基本的界面实现以下吧. 目标 界面的话没打算实现太复杂的,就做现在比较流行的 Drawer+Tab+ViewPager 这种界面.下面给 ...

  7. android沉浸式模式简书,Android 沉浸式模式与常见状态栏和导航栏效果

    Android沉浸式模式 官方称沉浸式状态栏为沉浸式模式. 什么是沉浸式? 沉浸式就是让人专注当前的(由设计者营造)情境下感到愉悦和满足,而忘记真实的情境. 什么是Android中的沉浸式? 当启用该 ...

  8. android 获取电量百分比 简书,Android 获取当前电量

    在浏览 Flutter 的示例代码中发现一一个比较好的写法. private int getBatteryLevel() { if (VERSION.SDK_INT >= VERSION_COD ...

  9. android饼状图简书,Charts-饼状图

    上篇文章已经讲述了折线图的用法这边文章主要来谈饼状图. 其实Charts难的部分主要在于配置,所以同样主要说说他的配置. pieGraphView.setExtraOffsets(left: 10, ...

最新文章

  1. R语言ggplot2可视化移除轴标签、图例、主体等所有附属信息实战
  2. 数据中心柴油发电机系统的使用和维护
  3. php连接数据库封装函数,PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】...
  4. 双优先编码器_掌握双原生 ISO,提升动态范围
  5. 数学--图论--莫比乌斯线性筛模板
  6. LED闪烁和流水灯,调试教程,在线仿真器的使用
  7. Docker-Compose 一键部署Ningx+.Net Core+Redis集群
  8. 信息学奥赛C++语言: 判决素数个数
  9. 好系统教你如何在Windows中更改文件夹的图标
  10. 一个通用的单元测试框架的思考和设计02-设计篇
  11. day7 java的构造器
  12. 30秒的PHP代码片段(1)数组 - Array
  13. win7计算机记忆窗口,Win7系统关闭和打开搜索记忆功能的方法(图文教程)
  14. iOS项目转移到自动引用计数
  15. [Linux实用工具]Windows下同步Linux文件(Linux安装Samba和配置)
  16. php wps 读取word内容,PHP中读取,写入和导出WORD文档的代码总结
  17. VHDL与MATLAB卷积译码,基于VHDL的卷积编码实现 详解卷积编码的应用
  18. H3C S5720交换机系统文件丢失一直重启的解决办法
  19. FileNotFoundError: [Errno 2] No such file or directory: ‘./train/hazy/hazy‘
  20. 吸拖一体机和扫地机器人哪个好,吸拖一体机值得买吗

热门文章

  1. 字符串-验证回文串(双指针法)
  2. Python中的特殊成员和魔法方法
  3. CVPR 2021 | 基于帧场学习的多边形建筑提取
  4. 输入输出 原理 java_java输入输出,书写规范,运行原理,跨平台原理(复习)...
  5. OpenCv java 颜色空间(9)
  6. OpenCV | OpenCV:sift,SURF 特征提取
  7. electron 改变窗体 大小_8个瑜伽常见体式变体,小改变,大不同!
  8. 大多数人都不知道,人类基因组正在衰败
  9. 鱼和熊掌可以兼得! 天昊生物微生物16S扩增子绝对定量测序检测新模式创双赢!...
  10. Microbiome: 16S rRNA基因拷贝数应该被校正吗?