Lastweek:

对该项目做了如下的探究:

1.横屏单双页面设计模式探究:

img

img

可以与折叠屏相互联系

2.特殊layout:

image-20231221103409941

image-20231221103805503

image-20231221103703751

image-20231221104349466

image-20231221103729212

image-20231221111129085

3.暂时的一个思路:

image-20231221105211792

2、代码探究

问题合集:

Q1:合并VH树和XML树的时候使用ID合并 基本很难将对应组件的bounds成功一一对应 但是使用
tag合并所需要的时间有特别长,原有的代码是如何解决这个问题的呢?

A1: 没解决 算是个缺陷

1
<LinearLayout id="top_bar" layout_width="match_parent" layout_height="@dimen/main_activity_top_bar_size" layout_gravity="center_horizontal" background="?attr/lightToolbarBackgroundColor" orientation="horizontal" index="0" text="" resource-id="org.linphone.debug:id/top_bar" class="android.widget.LinearLayout" package="org.linphone.debug" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,168][1080,326]">
1
<LinearLayout index="0" text="" resource-id="org.linphone.debug:id/top_bar" class="android.widget.LinearLayout" package="org.linphone.debug" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,168][1080,326]" id="top_bar">

师兄的思路是通过树结构和属性相似度来解决的但是后者计算的时间太久太久了我跑了两个小时都还没有跑完 放弃了 准备从组件排列的至上而下性质入手更改一下

Q2:合并后我们得到了组件对应的bounds,想确认一下这个bounds在生成算法中应该是只是为了给评价函数提供输入 不涉及初始生成?

A2:涉及,初始s生成是在原bounds上随机加减

这个主要是论文里面没有提到所以问了一下

Q3:然后是CFG的构建的问题:我的疑惑是 CFG的实边应该是通过xml自带的层次结构隐式构建的
虚边是通过分类函数构建的,如果是这样的话 分类函数的分类应该是对于同种类的划分 但是目前的代码是直接将子节点加入父节点的类列表中 这样做是为了更好地使用wrap_content和match_parent所以有意识地扩大了分类的颗粒度吗?

A3:虚边不是分类 而是组件和组件的相对关系 比如代码里设置了谁和谁对齐这样的关系

之前的代码会直接遍历树的孩子节点加入一个类中会造成颗粒度太大的效果

image-20231221105858594

image-20231221110048457

Q4:最后的生成xml文档是如何生成的呢?我目前只想到通过模板或者直接在原有xml文件上进行修改
是这两种的其中一个还是说另有其他方法。。

A4:最终生成的xml是统一用相对布局,利用两种相对关系进行排布分别是谁在谁的下边
谁在谁的右边

同上 论文中没有详细解释同时代码中也没有涉及,我的看法是这就是导致布局差异性不是特别好的根源问题需要着重更改!