快速定位感兴趣的功能代码
发布时间:2022-12-12 18:22:17 文章来源:综合网络
现在越来越多的开源项目了,令人收藏不暇,有时只是觉得对方的某个 feature 特别喜欢,但很多人可能打开了其代码找了半天找不到关键所在...

现在越来越多的开源项目了,令人收藏不暇,有时只是觉得对方的某个 feature 特别喜欢,但很多人可能打开了其代码找了半天找不到关键所在。其实,如果运用了 Android Studio 带给我们的一些查找功能,任何一份新的开源代码摆在我们眼前,我们都可以快速定位到感兴趣的功能代码。

所以,今天我来分享一下这个经验,造福人间2333,以两个例子做说明吧:

一、快速定位 BlackLight 的「收藏微博」功能代码

说明:BlackLight 是一个 Material Design 的微博客户,更多介绍可以看这个帖子:一个 Material Design 的微博客户。我是前天拿到它的源代码的,我想把它微博信息页面中的收藏微博功能提取出来,做一个快捷收藏的功能……它的代码量不小,你不知道作者给这个页面取名叫什么 Activity,你也不知道你就算找到这个 Activity,再要定位到这个具体地方要多久(这个例子是针对 option menu,原本如果手动定位,也是比较简单的,但大部分没那么容易)。

关键点1:对于整个项目源代码进行「find in path」查找这个功能的字符串「收藏微博」四个字,:

出来的结果是,找到了,并且找到的位置是在 strings.xml 文件中:

关键点2:我们可以双击跳转到这个 strings.xml 文件中的「收藏微博」位置,然后把光标放在它的 name 上,右键鼠标(或者快捷键),出现「find usages」,结果就会显示它被使用的地方:

哦。。。才知道这个名为「微博信息」页面,作者给它命名的是「SingleActivity」。。。如果不借助这两三下快速查找,你能想到?。。。然后,我们果断跳过去,跳过去到达 SingleActivity 之后就很直接了,这个功能明显是在onOptionsItemSelected 这个方法内,于是我们很快可以找到:

就是它了!

总结:关键点其实很简单,入手的时候,先全局搜索(find in path)你要的功能它的名称,一般是定位到 strings.xml,再对这条 Item 的 name 进行查找它的使用(find usages),定位到它被使用的地方,基本就很接近目标了。

如果大家还不明确,请看第二个例子……

一、快速定位 EhViewer 的 ripple 加载新页面功能:

说明:额,这个EhViewer嘛,是一个(hentai)绅士阅读器,我也是昨天晚上朋友说它 MD 做得不错才去看看它的代码的。发现它有一个「点击查看更多」的地方,点击了之后,会以 ripple 的动画效果展开一个新页面显示内容,很棒。于是想一探究竟……

入手:仍然是对全局进行搜索,find in path<- “点击查看更多”,和上面一样,很快定位到 strings.xml 文件中的这一行:

1

 

<stringname="click_more">点击查看更多</string>

 

右键点击这个 click_more,选择 find usages,很快又精准定位到了:

看,定位到这个 Activity 是如此简单粗暴~

过去看一下,发现目标并不能直接关联这个动画功能的代码,只是显示这样:

1

 

mCommentMoreText.setText(R.string.click_more);

 

而且你会发现你对于这个mCommentMoreText 找来找去(使用页面内的搜索,command + f)都没发现它的setOnClickListener 是在哪,这时也不能放弃,因为我们知道,目标肯定很近了……想了一下,猜想,作者可能是对于这个mCommentMoreText 的父容器布局进行绑定监听器,于是……

关键点:找到 findViewById 位置,跟踪跳转到 xml 布局文件

……于是我就页面内搜索(command + f)这个mCommentMoreText,马上定位到它的findViewById:

1

 

mCommentMoreText = (TextView) findViewById(R.id.comment_more_text);

 

按住 command 点击这个comment_more_text,可以跳到它的 xml 布局文件,发现它的父布局是一个LinearLayout,并且 id 是detail_comment,果断对这个 id 进行find usages,会跳转到它的 Java 代码位置:

1

 

mDetailComment = (LinearLayout) findViewById(R.id.detail_comment);

 

再页面内搜索mDetailComment,果然得到它绑定了 mDetailComment.setOnTouchListener(this); 那么接下来就非常直接了,顺藤摸瓜,我们马上去onTouch 看看(虽然是 mDetailMore,可能是另一层父控件),目标 get!:

总结:这一回合,我们关键还是在 find in path / find usages 的基础之上,更多的 command + F 页面内查找,一般基本定位后都难逃我们的掌心,方法其实都很简单,一回生二回熟,以后任何开源项目代码的任何功能,都能闭着眼睛,快速定位啦,哈哈哈。。。。

关键词:

乐活HOT

  • 四川正式启动三级保供电调控措施保障民生用电 优化各类电源发电计划
    四川正式启动三级保供电调控措施

    继8月11日、14日连续两次召开电力保供工作紧急视频会议后,8月15日,四川再次召开电力保供调度会。记者从会上获悉,预计全省最大用电负荷将

  • 前7月四川能源项目累计完成投资493亿元 油气类项目完成投资159亿元
    前7月四川能源项目累计完成投资4

    今年以来,四川积极扩大能源领域有效投资,前7月能源项目累计完成投资493亿元、同比增长4%。8月15日,省能源局相关负责人介绍,前7月煤炭类

  • 四川加力加劲坚决遏制事故多发频发态势 有效提升预报预警水平
    四川加力加劲坚决遏制事故多发频

    8月15日,全省防汛减灾、森林草原防灭火工作电视电话会议召开,深刻汲取彭州8·13山洪灾害教训,分析研判当前形势,安排部署下一步重点工作

  • 四川攀枝花推动打造职业能力建设工作品牌 提供人才广阔展示舞台
    四川攀枝花推动打造职业能力建设

    8月9日,攀枝花技师学院实习工厂里,焊花四溅,机器声此起彼伏。身穿工作服的教师周树春,在一间间操作室里进进出出,指导学生们焊接。过去

  • 上半年湖南物流需求平稳增长行业运行平稳 快递业务量完成10.3亿件
    上半年湖南物流需求平稳增长行业

    记者从省发改委获悉,上半年全省物流需求平稳增长,行业运行总体平稳。全省社会物流总额64096 2亿元,同比增长4 4%;全省物流业总收入为2270

  • 湖南各地工业企业忙生产全力以赴稳增长 生产线全力运转
    湖南各地工业企业忙生产全力以赴

    在全球最大地下工程装备制造基地,掘进机生产计划已排到年底;千亿级工程机械产业园区边建设边生产,打造智能制造标杆……时已立秋,三湘大

  • 江西赣州医疗卫生服务体系进一步完善 完善“三医”联动机制
    江西赣州医疗卫生服务体系进一步

    上犹县水岩乡卫生院医生蔡昌才驱车前往金盆村为村民骆运招治病。以往,每月去医院就诊不仅路途远,还要排队。这几年有了家庭医生后,直接送

  • 江西坚持问题导向推进药品安全专项整治走深走实 持续完善投诉举报渠道
    江西坚持问题导向推进药品安全专

    今年2月以来,省药监局深入开展药品安全专项整治行动,坚持问题导向,以严厉打击违法犯罪行为、全面排查风险隐患为手段,推进专项整治行动

  • 江西九江多举措为创业者营造良好创业贷款环境 就业创业事项一次性办
    江西九江多举措为创业者营造良好

    没想到,现在直接在窗口就能办理,真是太方便了。蒋琼在九江市经营一家造型工作室,近期有意扩大生意规模,需要资金周转。她带齐资料来到九

  • 上半年江西新余全市外贸进出口总值同比增长84.3% 外贸主体活力持续激发
    上半年江西新余全市外贸进出口总

    记者从新余海关获悉,今年上半年,新余市外贸取得了较好成绩,全市外贸进出口总值184 3亿元,同比增长84 3%,高出全国平均水平74 9个百分点

  • 南昌高新区多举措推动重点项目建设加速跑 完善重大重点项目推进机制
    南昌高新区多举措推动重点项目建

    作为南昌市第二季度集中开工的重大项目之一,南昌数谷产业园项目总投资100亿元,计划2024年5月完工交付使用,拟引进字节跳动、华为(南昌)工

  • 安徽淮南颁发优才卡落实高层次人才服务保障制度
    安徽淮南颁发优才卡落实高层次人

    淮南市向中国工程院院士、安徽理工大学校长袁亮颁发了第一张淮南市高层次人才优才卡。为深化我为人才办实事实践活动,落实高层次人才服务保

  • 宿州市埇桥区细化工作举措筑牢防汛“安全堤”
    宿州市埇桥区细化工作举措筑牢防

    连日来,宿州市埇桥区不断细化各项工作举措,压实防汛各项责任,提升应急救援保障能力,筑牢防汛安全堤。目前,该区防汛物资已储备到位,全

  • 安徽无为市“交地即交证”优化营商环境政策正式落地
    安徽无为市“交地即交证”优化营

    近日,无为市自然资源和规划局、无为市福渡镇人民政府在无为润峰中海置业有限公司项目部现场举行交地即交证颁证仪式,标志该市交地即交证优

  • 安徽全椒县推动农村寄宿制学校试点工作
    安徽全椒县推动农村寄宿制学校试

    设施齐全的卫生食堂、水冲式的独立卫生间、楼道墙体粉刷一新的宿舍……走进安徽省全椒县武岗学校,已经运行满一年的农村特色寄宿制学校成果

娱乐LOVE