您当前的位置: 首页 > 
  • 2浏览

    0关注

    417博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

06.输入系统:第10课第16节_输入系统_补充知识_activity_window_decor_view关系_实验

江南才尽,年少无知! 发布时间:2019-03-14 14:17:19 ,浏览量:2

在上一节从理论上讲解了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             
关注
打赏
1592542134
查看更多评论
0.0575s