在上一节从理论上讲解了activity,window,decor,view之间的关系,该小节我们编写源代码,去验证这些知识点。在原来的AS工程APP_0001_LEDDemp-V3上进行修改,先把APP_0001_LEDDemp-V3改成APP_0008_ViewHierarcky,然后打开该工程。
在原来的基础上修改layout下的content_main.xml文件,先修改一下button按钮的显示信息(修改为):
然后修改MainActivity.java文件,根据前面的学习,我们知道,在点击Botton时,会执行 class MyButtonListener implements View.OnClickListener 中的onClick(View view)方法。删除该方法下的所有内容,只调用函数printViewHierarchy:
class MyButtonListener implements View.OnClickListener {
@Override
public void onClick(View view) {
View decorView = getWindow().getDecorView();
printViewHierarchy(decorView,0,-1);
}
}
然后printViewHierarchy的实现如下:
/*传入三个参数,parent为遍历的对象,level为所处节点等级,如根节点为一个*,其孩子为两个*
childidx为孩子的序列号*/
public void printViewHierarchy(View parent, int level, int childidx){
/* 打印格式,
* * DecorView child -1 (x, y), (w, h)
* ** FrameLayout child 0 (x, y), (w, h)
* *** TextView child 0 (x, y), (w, h)
* ** FrameLayout child 1 (x, y), (w, h)
* *** Button child 0 (x, y), (w, h)
* *** TextView child 1 (x, y), (w, h)
* *** FrameLayout child 2 (x, y), (w, h)
*/
int i;
String levelStr = "*";
for (i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?