现在越来越多的开源项目了,令人收藏不暇,有时只是觉得对方的某个 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 |
|
右键点击这个 click_more,选择 find usages,很快又精准定位到了:
看,定位到这个 Activity 是如此简单粗暴~
过去看一下,发现目标并不能直接关联这个动画功能的代码,只是显示这样:
1 |
|
而且你会发现你对于这个mCommentMoreText 找来找去(使用页面内的搜索,command + f)都没发现它的setOnClickListener 是在哪,这时也不能放弃,因为我们知道,目标肯定很近了……想了一下,猜想,作者可能是对于这个mCommentMoreText 的父容器布局进行绑定监听器,于是……
关键点:找到 findViewById 位置,跟踪跳转到 xml 布局文件
……于是我就页面内搜索(command + f)这个mCommentMoreText,马上定位到它的findViewById:
1 |
|
按住 command 点击这个comment_more_text,可以跳到它的 xml 布局文件,发现它的父布局是一个LinearLayout,并且 id 是detail_comment,果断对这个 id 进行find usages,会跳转到它的 Java 代码位置:
1 |
|
再页面内搜索mDetailComment,果然得到它绑定了 mDetailComment.setOnTouchListener(this); 那么接下来就非常直接了,顺藤摸瓜,我们马上去onTouch 看看(虽然是 mDetailMore,可能是另一层父控件),目标 get!:
总结:这一回合,我们关键还是在 find in path / find usages 的基础之上,更多的 command + F 页面内查找,一般基本定位后都难逃我们的掌心,方法其实都很简单,一回生二回熟,以后任何开源项目代码的任何功能,都能闭着眼睛,快速定位啦,哈哈哈。。。。
继8月11日、14日连续两次召开电力保供工作紧急视频会议后,8月15日,四川再次召开电力保供调度会。记者从会上获悉,预计全省最大用电负荷将
今年以来,四川积极扩大能源领域有效投资,前7月能源项目累计完成投资493亿元、同比增长4%。8月15日,省能源局相关负责人介绍,前7月煤炭类
8月15日,全省防汛减灾、森林草原防灭火工作电视电话会议召开,深刻汲取彭州8·13山洪灾害教训,分析研判当前形势,安排部署下一步重点工作
8月9日,攀枝花技师学院实习工厂里,焊花四溅,机器声此起彼伏。身穿工作服的教师周树春,在一间间操作室里进进出出,指导学生们焊接。过去
记者从省发改委获悉,上半年全省物流需求平稳增长,行业运行总体平稳。全省社会物流总额64096 2亿元,同比增长4 4%;全省物流业总收入为2270
在全球最大地下工程装备制造基地,掘进机生产计划已排到年底;千亿级工程机械产业园区边建设边生产,打造智能制造标杆……时已立秋,三湘大
上犹县水岩乡卫生院医生蔡昌才驱车前往金盆村为村民骆运招治病。以往,每月去医院就诊不仅路途远,还要排队。这几年有了家庭医生后,直接送
今年2月以来,省药监局深入开展药品安全专项整治行动,坚持问题导向,以严厉打击违法犯罪行为、全面排查风险隐患为手段,推进专项整治行动
没想到,现在直接在窗口就能办理,真是太方便了。蒋琼在九江市经营一家造型工作室,近期有意扩大生意规模,需要资金周转。她带齐资料来到九
记者从新余海关获悉,今年上半年,新余市外贸取得了较好成绩,全市外贸进出口总值184 3亿元,同比增长84 3%,高出全国平均水平74 9个百分点
作为南昌市第二季度集中开工的重大项目之一,南昌数谷产业园项目总投资100亿元,计划2024年5月完工交付使用,拟引进字节跳动、华为(南昌)工
淮南市向中国工程院院士、安徽理工大学校长袁亮颁发了第一张淮南市高层次人才优才卡。为深化我为人才办实事实践活动,落实高层次人才服务保
连日来,宿州市埇桥区不断细化各项工作举措,压实防汛各项责任,提升应急救援保障能力,筑牢防汛安全堤。目前,该区防汛物资已储备到位,全
近日,无为市自然资源和规划局、无为市福渡镇人民政府在无为润峰中海置业有限公司项目部现场举行交地即交证颁证仪式,标志该市交地即交证优
设施齐全的卫生食堂、水冲式的独立卫生间、楼道墙体粉刷一新的宿舍……走进安徽省全椒县武岗学校,已经运行满一年的农村特色寄宿制学校成果
安徽安庆市正式成立“老年助餐慈善基
记者日前从安庆市民政局获悉,该市慈善会近日设立老年助餐慈善基金,共同守护老年人舌尖上的幸福。该基金专项用于资助城乡社区老年食堂、社
安徽淮北积极落实2022年电网防汛度汛
近日,国网淮北供电公司工作人员来到110千伏中泰变电站开展防汛隐患排查。该公司积极落实2022年防汛度汛措施,提前细化应急预案,推进极端
安徽全椒县完善拓展人力信息资源助企
今年以来,全椒县不断完善拓展人力资源信息库、劳务对接信息库、企业用工需求信息库三库信息资源,已摸排400多家次企业缺工岗位信息1 2万个
宿州市埇桥区柔性引进博士推进乡村振
宿州市埇桥区实施博士汇工程,柔性引进29名博士担任副乡镇长或园区副主任,他们将为加快产业发展、推进乡村振兴强化智力支持。目前,博士专
安徽印发出台全面实施零基预算改革方
为进一步提高财政资源配置效率和资金使用效益,省政府印发《安徽省全面实施零基预算改革方案》,明确从编制2023年预算起,在全省范围内全面
5月份安徽居民消费价格同比上涨2.3%
近日,国家统计局安徽调查总队发布了我省5月份居民消费价格统计数据。统计显示,我省居民消费价格同比上涨2 3%,同比涨幅比上月回落0 4个百分
安徽多种方式引导群众防范非法集资风
合肥地铁1号线、3号线上滚动播放防范非法集资宣传视频,淮南市发布《致老年群众的一封信》……6月份是一年一度防范和处置非法集资宣传月,今
铁路部门持续加大长三角地区运力投放
记者从中国铁路上海局集团有限公司获悉,随着上海疫情防控形势持续向好,为进一步适应旅客出行需要,助力复工复产,铁路部门自6月10日起持续加
安徽六安持续精准施策全力促进工业发
六安市与蔚来汽车签署合作协议,共建智能电动汽车零部件配套产业园区。该园区一期计划2023年上半年投产,建成后将具备年产30万吨铝压铸产能,
安徽淮北全力维护外卖送餐员合法权益
为切实防范化解新业态领域重大风险隐患,强化外卖送餐员权益保障工作,淮北市市场监管局充分发挥职能作用,全力维护外卖送餐员合法权益。淮北
湖南涟源开展专项行动一对一为企业纾
位于涟源市的湖南三合美新材料科技有限公司,两条生产线满负荷运行,生产聚氨酯和岩棉复合板。因产品升级与产能扩充,急需新增两条生产线,
湖南蓝山县进村入户排查整治自建房安
老叔,这栋房屋墙体有开裂痕迹,要维修加固,安全重要!5月20日,蓝山县塔峰镇果木村,党员干部上门开展农村自建房安全隐患排查整治。连日来
一季度湖南万元产值综合能耗同比下降
近日,湖南省工业通信业节能监察中心发布一季度全省六大高耗能行业能源消耗统计监测报告。据该报告,一季度全省146家主要高耗能企业的万元
济南起步区一年来累计签约优质项目11
万里黄河第一隧济南黄河济泺路隧道建成通车,占地4000余亩的新能源乘用车零部件产业园加快施工……记者21日采访获悉,建设实施方案获批复一
山东发布通知启动传统民居保护利用试
省住房城乡建设厅、省财政厅近日联合印发《关于做好传统民居保护利用试点工作的通知》,在全省部署开展传统民居保护利用试点工作。此次试点