Skip to content

Commit

Permalink
[android] format code
Browse files Browse the repository at this point in the history
  • Loading branch information
biezhihua committed Aug 7, 2024
1 parent c57faed commit bd9a4ef
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 90 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -315,12 +315,13 @@ object GXNodeTreeUpdate {
var isComputeContainerHeight = gxScrollConfig.isHorizontal && flexGrow == null && (height == null || height == Dimension.Auto || height == Dimension.Undefined)

// 对计算结果进行处理
GXRegisterCenter.instance.extensionDynamicProperty?.convert(GXRegisterCenter.GXIExtensionDynamicProperty.GXParams(
val gxParams = GXRegisterCenter.GXIExtensionDynamicProperty.GXParams(
GXTemplateKey.GAIAX_CUSTOM_PROPERTY_SCROLL_COMPUTE_CONTAINER_HEIGHT,
isComputeContainerHeight
).apply {
this.flexBox = gxFlexBox
})?.let {
}
GXRegisterCenter.instance.extensionDynamicProperty?.convert(gxParams)?.let {
isComputeContainerHeight = it as Boolean
}

Expand All @@ -341,39 +342,35 @@ object GXNodeTreeUpdate {
val gxGridConfig = gxNode.templateNode.layer.gridConfig
?: throw IllegalArgumentException("Want to updateContainerLayout, but gxGridConfig is null")

var isComputeContainerHeight =
gxGridConfig.isVertical && flexGrow == null && (height == null || height == Dimension.Auto || height == Dimension.Undefined)
// 当容器节点不是flexGrow时,且容器节点的高度设置,或者是默认,或者是未定义,需要主动计算高度
var isComputeContainerHeight = gxGridConfig.isVertical && flexGrow == null && (height == null || height == Dimension.Auto || height == Dimension.Undefined)

// 对计算结果进行处理
GXRegisterCenter.instance.extensionDynamicProperty?.convert(GXRegisterCenter.GXIExtensionDynamicProperty.GXParams(
val gxParams = GXRegisterCenter.GXIExtensionDynamicProperty.GXParams(
GXTemplateKey.GAIAX_CUSTOM_PROPERTY_GRID_COMPUTE_CONTAINER_HEIGHT,
isComputeContainerHeight
).apply {
this.gridConfig = gxGridConfig
this.flexBox = gxFlexBox
})?.let {
}
GXRegisterCenter.instance.extensionDynamicProperty?.convert(gxParams)?.let {
isComputeContainerHeight = it as Boolean
}

// 当容器节点不是flexGrow时,且容器节点的高度设置,或者是默认,或者是未定义,需要主动计算高度
if (isComputeContainerHeight) {
val containerSize = GXNodeUtils.computeGridSize(
gxTemplateContext, gxNode, containerData
)
val containerSize = GXNodeUtils.computeGridSize(gxTemplateContext, gxNode, containerData)
containerSize?.height?.let {
gxFlexBox.sizeForDimension?.height = it
isDirty = true
}
}
} else if (gxNode.isSliderType()) {
val isComputeContainerHeight =
height == null || height == Dimension.Auto || height == Dimension.Undefined
val isComputeContainerHeight = height == null || height == Dimension.Auto || height == Dimension.Undefined

// 容器节点没有设置高度
if (isComputeContainerHeight) {
val containerSize = GXNodeUtils.computeSliderSize(
gxTemplateContext, gxNode, containerData
)
val containerSize = GXNodeUtils.computeSliderSize(gxTemplateContext, gxNode, containerData)
containerSize?.height?.let {
gxFlexBox.sizeForDimension?.height = it
isDirty = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,9 @@ object GXNodeUtils {
}

fun computeScrollSize(
gxTemplateContext: GXTemplateContext, gxNode: GXNode, gxContainerData: JSONArray
gxTemplateContext: GXTemplateContext,
gxNode: GXNode,
gxContainerData: JSONArray
): Size<Dimension?>? {

val templateItems = gxNode.childTemplateItems ?: return null
Expand All @@ -145,13 +147,8 @@ object GXNodeUtils {

// Improve: 如果之前计算过,并且内容高度都一样,那么直接使用缓存计算。在横滑容器数据量较大的情况下,会节省一些时间。
if (GXGlobalCache.instance.isExistForTemplateItem(gxTemplateContext.size, itemTemplateItem)) {
val itemLayout = GXGlobalCache.instance.getLayoutForTemplateItem(
gxTemplateContext,
itemTemplateItem
)
return computeScrollContainerSize(
gxNode, itemLayout, gxContainerData
)
val itemLayout = GXGlobalCache.instance.getLayoutForTemplateItem(gxTemplateContext, itemTemplateItem)
return computeScrollContainerSize(gxNode, itemLayout, gxContainerData)
}

// 2. 计算坑位实际宽高结果
Expand Down Expand Up @@ -182,9 +179,7 @@ object GXNodeUtils {
)
}

return computeScrollContainerSize(
gxNode, maxItemLayout, gxContainerData
)
return computeScrollContainerSize(gxNode, maxItemLayout, gxContainerData)
}
// case 2
else {
Expand All @@ -193,16 +188,12 @@ object GXNodeUtils {
val itemData = value as JSONObject
val itemCacheKey = "${itemPosition}-${itemData.hashCode()}"

computeScrollItemLayoutForMultiItemType(
gxTemplateContext, gxNode, templateItems, itemData, itemViewPort, itemCacheKey
)
computeScrollItemLayoutForMultiItemType(gxTemplateContext, gxNode, templateItems, itemData, itemViewPort, itemCacheKey)
}

// 3. 计算容器期望的宽高结果
val itemLayout = gxTemplateContext.getMaxHeightLayoutForScroll()
return computeScrollContainerSize(
gxNode, itemLayout, gxContainerData
)
return computeScrollContainerSize(gxNode, itemLayout, gxContainerData)
}
}

Expand All @@ -213,14 +204,8 @@ object GXNodeUtils {
itemPosition: Int
): Layout? {
return when {
gxNode.isScrollType() -> computeScrollItemContainerSize(
gxTemplateContext, gxNode, itemPosition, itemData
)

gxNode.isGridType() -> computeGridItemContainerSize(
gxTemplateContext, gxNode, itemData, itemPosition
)

gxNode.isScrollType() -> computeScrollItemContainerSize(gxTemplateContext, gxNode, itemPosition, itemData)
gxNode.isGridType() -> computeGridItemContainerSize(gxTemplateContext, gxNode, itemData, itemPosition)
else -> null
}
}
Expand Down Expand Up @@ -304,9 +289,7 @@ object GXNodeUtils {
// init multi type item
val itemCacheKey = "${itemPosition}-${itemData.hashCode()}"

computeScrollItemLayoutForMultiItemType(
gxTemplateContext, gxNode, templateItems, itemData, itemViewPort, itemCacheKey
)
computeScrollItemLayoutForMultiItemType(gxTemplateContext, gxNode, templateItems, itemData, itemViewPort, itemCacheKey)

return gxTemplateContext.getLayoutForScroll(itemCacheKey)
}
Expand Down Expand Up @@ -401,9 +384,7 @@ object GXNodeUtils {
}
}

fun computeGridSize(
gxTemplateContext: GXTemplateContext, gxNode: GXNode, gxContainerData: JSONArray
): Size<Dimension?>? {
fun computeGridSize(gxTemplateContext: GXTemplateContext, gxNode: GXNode, gxContainerData: JSONArray): Size<Dimension?>? {

val templateItems = gxNode.childTemplateItems ?: return null

Expand Down Expand Up @@ -431,13 +412,13 @@ object GXNodeUtils {
)
}

return computeGridContainerSize(
gxTemplateContext, gxNode, gxTemplateContext.gridItemLayoutCache, gxContainerData
)
return computeGridContainerSize(gxTemplateContext, gxNode, gxTemplateContext.gridItemLayoutCache, gxContainerData)
}

fun computeSliderSize(
gxTemplateContext: GXTemplateContext, gxNode: GXNode, gxContainerData: JSONArray
gxTemplateContext: GXTemplateContext,
gxNode: GXNode,
gxContainerData: JSONArray
): Size<Dimension?>? {

val templateItems = gxNode.childTemplateItems ?: return null
Expand Down Expand Up @@ -466,9 +447,7 @@ object GXNodeUtils {
)
}

return computeSliderContainerSize(
gxTemplateContext.sliderItemLayoutCache
)
return computeSliderContainerSize(gxTemplateContext.sliderItemLayoutCache)
}

fun computeScrollAndGridFooterItemContainerSize(
Expand All @@ -480,8 +459,7 @@ object GXNodeUtils {
itemPosition: Int
): Layout? {
val itemCacheKey = "${itemPosition}-${itemData.hashCode()}"
val itemMeasureSize =
GXTemplateEngine.GXMeasureSize(itemViewPort.width, itemViewPort.height)
val itemMeasureSize = GXTemplateEngine.GXMeasureSize(itemViewPort.width, itemViewPort.height)
val itemTemplateData = GXTemplateEngine.GXTemplateData(itemData)
return computeItemLayoutByCreateAndBindNode(
gxTemplateContext,
Expand All @@ -501,8 +479,7 @@ object GXNodeUtils {
gxItemData: JSONObject,
itemCacheKey: String
): Layout? {
val gxMeasureSize =
GXTemplateEngine.GXMeasureSize(gxItemViewPort.width, gxItemViewPort.height)
val gxMeasureSize = GXTemplateEngine.GXMeasureSize(gxItemViewPort.width, gxItemViewPort.height)
val gxTemplateData = GXTemplateEngine.GXTemplateData(gxItemData)
return computeItemLayoutByCreateAndBindNode(
gxTemplateContext,
Expand All @@ -522,8 +499,7 @@ object GXNodeUtils {
gxItemData: JSONObject,
itemCacheKey: String
): Layout? {
val gxMeasureSize =
GXTemplateEngine.GXMeasureSize(gxItemViewPort.width, gxItemViewPort.height)
val gxMeasureSize = GXTemplateEngine.GXMeasureSize(gxItemViewPort.width, gxItemViewPort.height)
val gxTemplateData = GXTemplateEngine.GXTemplateData(gxItemData)
return computeItemLayoutByCreateAndBindNode(
gxTemplateContext,
Expand All @@ -543,8 +519,7 @@ object GXNodeUtils {
gxItemData: JSONObject,
itemCacheKey: String
): Layout? {
val gxMeasureSize =
GXTemplateEngine.GXMeasureSize(gxItemViewPort.width, gxItemViewPort.height)
val gxMeasureSize = GXTemplateEngine.GXMeasureSize(gxItemViewPort.width, gxItemViewPort.height)
val gxTemplateData = GXTemplateEngine.GXTemplateData(gxItemData)
return computeItemLayoutByCreateAndBindNode(
gxTemplateContext,
Expand All @@ -557,7 +532,8 @@ object GXNodeUtils {
}

fun computeScrollAndGridFooterItemViewPort(
gxTemplateContext: GXTemplateContext, gxNode: GXNode
gxTemplateContext: GXTemplateContext,
gxNode: GXNode
): Size<Float?> {

// 对于坑位的视口宽高,需要分为Scroll容器和Grid容器
Expand Down Expand Up @@ -617,7 +593,8 @@ object GXNodeUtils {
}

fun computeScrollAndGridItemViewPort(
gxTemplateContext: GXTemplateContext, gxNode: GXNode
gxTemplateContext: GXTemplateContext,
gxNode: GXNode
): Size<Float?> {
if (gxNode.isScrollType()) {
return computeScrollItemViewPort(gxTemplateContext, gxNode)
Expand All @@ -629,7 +606,8 @@ object GXNodeUtils {
}

private fun computeScrollItemViewPort(
gxTemplateContext: GXTemplateContext, gxNode: GXNode
gxTemplateContext: GXTemplateContext,
gxNode: GXNode
): Size<Float?> {

val gxScrollConfig = gxNode.templateNode.layer.scrollConfig
Expand All @@ -655,7 +633,8 @@ object GXNodeUtils {
}

private fun computeGridItemViewPort(
gxTemplateContext: GXTemplateContext, gxNode: GXNode
gxTemplateContext: GXTemplateContext,
gxNode: GXNode
): Size<Float?> {
val containerWidth = gxNode.layoutByBind?.width ?: gxNode.layoutByPrepare?.width
?: throw IllegalArgumentException("Want to computeItemViewPort, but containerWith is null")
Expand Down Expand Up @@ -690,7 +669,8 @@ object GXNodeUtils {
}

fun computeSliderItemViewPort(
gxTemplateContext: GXTemplateContext, gxNode: GXNode
gxTemplateContext: GXTemplateContext,
gxNode: GXNode
): Size<Float?> {
when (val nodeWith = gxNode.templateNode.css.flexBox.sizeForDimension?.width) {
is Dimension.Points -> {
Expand Down Expand Up @@ -729,8 +709,7 @@ object GXNodeUtils {

gxItemTemplateContext.templateData = gxTemplateData

val gxItemRootNode =
GXTemplateEngine.instance.render.createViewOnlyNodeTree(gxItemTemplateContext)
val gxItemRootNode = GXTemplateEngine.instance.render.createViewOnlyNodeTree(gxItemTemplateContext)

GXTemplateEngine.instance.render.bindViewDataOnlyNodeTree(gxItemTemplateContext)

Expand All @@ -741,27 +720,25 @@ object GXNodeUtils {
}

private fun computeScrollContainerSize(
gxNode: GXNode, itemSize: Layout?, containerTemplateData: JSONArray
gxNode: GXNode,
itemSize: Layout?,
containerTemplateData: JSONArray
): Size<Dimension?>? {
if (itemSize != null) {
val gxScrollConfig = gxNode.templateNode.layer.scrollConfig
?: throw IllegalArgumentException("Want to computeContainerHeight, but gxScrollConfig is null")

// 如果是横向,那么高度就是坑位高度
if (gxScrollConfig.isHorizontal) {
return Size(
Dimension.Points(itemSize.width), Dimension.Points(itemSize.height)
)
return Size(Dimension.Points(itemSize.width), Dimension.Points(itemSize.height))
}
// 如果是竖向,那么高度就是坑位高度*行数+总间距
else if (gxScrollConfig.isVertical) {
val lines = max(1, ceil((containerTemplateData.size * 1.0F).toDouble()).toInt())
var containerHeight = itemSize.height
containerHeight *= lines
containerHeight += gxScrollConfig.itemSpacing * (lines - 1)
return Size(
Dimension.Points(itemSize.width), Dimension.Points(containerHeight)
)
return Size(Dimension.Points(itemSize.width), Dimension.Points(containerHeight))
}
}
return null
Expand All @@ -781,10 +758,7 @@ object GXNodeUtils {
if (gxGridConfig.isVertical) {

// 获取行数
val lines = max(
1,
ceil((containerTemplateData.size * 1.0F / gxGridConfig.column(context)).toDouble()).toInt()
)
val lines = max(1, ceil((containerTemplateData.size * 1.0F / gxGridConfig.column(context)).toDouble()).toInt())

var containerHeight = itemSize.height

Expand All @@ -798,9 +772,7 @@ object GXNodeUtils {

val containerWidth = itemSize.width - padding.left - padding.right

return Size(
Dimension.Points(containerWidth), Dimension.Points(containerHeight)
)
return Size(Dimension.Points(containerWidth), Dimension.Points(containerHeight))
} else if (gxGridConfig.isHorizontal) {
// TODO: Grid横向处理不支持,此种情况暂时不做处理,很少见
return null
Expand All @@ -809,9 +781,7 @@ object GXNodeUtils {
return null
}

private fun computeSliderContainerSize(
itemSize: Layout?
): Size<Dimension?>? {
private fun computeSliderContainerSize(itemSize: Layout?): Size<Dimension?>? {
if (itemSize != null) {
return Size(Dimension.Points(itemSize.width), Dimension.Points(itemSize.height))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,7 @@ class GXContainerViewAdapter(val gxTemplateContext: GXTemplateContext, private v

val itemViewPort = getItemViewPort(isFooterItem)

val itemContainerSize = getItemContainerSize(
isFooterItem, templateItem, visualNestTemplateNode, itemViewPort
)
val itemContainerSize = getItemContainerSize(isFooterItem, templateItem, visualNestTemplateNode, itemViewPort)

val itemContainerLayoutParams = getItemContainerSize(itemContainerSize)

Expand Down Expand Up @@ -363,9 +361,7 @@ class GXContainerViewAdapter(val gxTemplateContext: GXTemplateContext, private v
position
)
} else {
GXNodeUtils.computeScrollAndGridItemContainerSize(
gxTemplateContext, gxNode, itemData, position
)
GXNodeUtils.computeScrollAndGridItemContainerSize(gxTemplateContext, gxNode, itemData, position)
}
}

Expand Down

0 comments on commit bd9a4ef

Please sign in to comment.