不知道大家在开发中, 尤其在已有项目上做二次开发时, 会不会经常碰到这种情景:
在一个页面中, 想快速定位一个view在代码中的实现位置, (例如上图中圈划出的2个ImageView在代码中的实现位置), 但layout文件比较复杂, 从变量命名上又难以找到线索, 只能慢慢把layout文件分析清楚后才能找到界面上这些元素的实现位置, 开发效率是比较低的.
今天开发了一个小模块, 可以让你10秒内定位出界面上任何view元素的layout id, 只需要点击这个元素后, 从log中就可以直接得到它的id值.
这个小模块使用起来也很简单.
- 导入FetchViewIdManager.java到工程中.
- 在Activity的onCreate()中, 加入这样一行代码, 这样HomeActivity中所有的view元素就被监测到了.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
FetchViewIdManager.getInstance().hookAllViews(HomeActivity.this);
}
});
}
- 点击任意的view元素, 从log中可以直接看到这个元素的id值.
例如: 小风车ImageView的layout id 是 "clockweather_wind_icon"
限制:
这个模块的使用前提是, view元素不管是在xml中实现的, 还是在java中生成的, 必须已设置了它的id值, 相信在大多数项目中, 95% 以上的view都有自己的id, 所以这个限制的影响并不大.
代码位置:
https://github.com/AandK/FetchViewIdManager/blob/master/FetchViewIdManager.java
----DONE.-----