在开发者模式下,在开发者选项中,可以勾选“显示触摸操作”,然后只要点击屏幕就会在点击的位置有圈圈显示。如何找到绘制圈圈的代码部分,有什么技巧来阅读代码量这么大的android系统源码呢?以下请跟着小老弟我来一起分析吧。

 

    1. android设置功能的代码是在packages/apps/Settings/里面的,所以在Settings中搜寻关键的字符串,

在源码目录下终端输入

grep -rn "显示触摸操作" ./packages/apps/Settings/

    搜到如下:

复制代码
./packages/apps/Settings/res/values-zh-rCN/strings.xml:2108: <string name="show_touches" msgid="1356420386500834339">"显示触摸操作"</string>
复制代码

    熟悉android应用编程的话就应该知道代码中 show_touches 与“显示触摸操作”是相关联的。


    2. 输入 

grep -rn "show_touches" --include "*.java" ./packages/apps/Settings/

    得到

复制代码
./packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java:128: private static final String SHOW_TOUCHES_KEY = "show_touches";
复制代码

 

    3. 开始阅读源码,打开 DevelopmentSettings.java 按以下阅读顺序,

private static final String SHOW_TOUCHES_KEY = "show_touches";
mShowTouches = findAndInitSwitchPref(SHOW_TOUCHES_KEY);
复制代码
private void writeShowTouchesOptions() {     Settings.System.putInt(getActivity().getContentResolver(),             Settings.System.SHOW_TOUCHES, mShowTouches.isChecked() ? 1 : 0); }
复制代码

    猜测 putInt 应该是一个数据传递的功能, 所以在framework里面搜 SHOW_TOUCHES 看看情况如何,

    输入

grep -rn "SHOW_TOUCHES" frameworks/

    搜到好多,比如以下应该和数据处理注册相关,