From 33a671af856f7ea37dce037cbdb3ac08a1822c19 Mon Sep 17 00:00:00 2001 From: "pengfei.zhou" Date: Sat, 16 Nov 2019 17:44:36 +0800 Subject: [PATCH] feat:extract view's layout setting method --- .../main/java/pub/doric/shader/ViewNode.java | 52 +++++++++++++------ 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/Android/doric/src/main/java/pub/doric/shader/ViewNode.java b/Android/doric/src/main/java/pub/doric/shader/ViewNode.java index b6d2de7a..3c26cecf 100644 --- a/Android/doric/src/main/java/pub/doric/shader/ViewNode.java +++ b/Android/doric/src/main/java/pub/doric/shader/ViewNode.java @@ -108,26 +108,16 @@ public abstract class ViewNode extends DoricContextHolder { protected void blend(T view, String name, JSValue prop) { switch (name) { case "width": - if (mLayoutParams.width >= 0) { - mLayoutParams.width = DoricUtils.dp2px(prop.asNumber().toFloat()); - } + setWidth(prop.asNumber().toFloat()); break; case "height": - if (mLayoutParams.height >= 0) { - mLayoutParams.height = DoricUtils.dp2px(prop.asNumber().toFloat()); - } + setHeight(prop.asNumber().toFloat()); break; case "x": - if (mLayoutParams instanceof ViewGroup.MarginLayoutParams) { - float x = prop.asNumber().toFloat(); - ((ViewGroup.MarginLayoutParams) mLayoutParams).leftMargin = DoricUtils.dp2px(x); - } + setX(prop.asNumber().toFloat()); break; case "y": - if (mLayoutParams instanceof ViewGroup.MarginLayoutParams) { - float y = prop.asNumber().toFloat(); - ((ViewGroup.MarginLayoutParams) mLayoutParams).topMargin = DoricUtils.dp2px(y); - } + setY(prop.asNumber().toFloat()); break; case "bgColor": view.setBackgroundColor(prop.asNumber().toInt()); @@ -142,9 +132,7 @@ public abstract class ViewNode extends DoricContextHolder { }); break; case "layoutConfig": - if (prop.isObject() && mSuperNode != null) { - mSuperNode.blendSubLayoutConfig(this, prop.asObject()); - } + setLayoutConfig(prop.asObject()); break; case "border": if (prop.isObject() && doricLayer != null) { @@ -225,4 +213,34 @@ public abstract class ViewNode extends DoricContextHolder { public String getId() { return mId; } + + protected void setWidth(float width) { + if (mLayoutParams.width >= 0) { + mLayoutParams.width = DoricUtils.dp2px(width); + } + } + + protected void setHeight(float height) { + if (mLayoutParams.height >= 0) { + mLayoutParams.height = DoricUtils.dp2px(height); + } + } + + protected void setX(float x) { + if (mLayoutParams instanceof ViewGroup.MarginLayoutParams) { + ((ViewGroup.MarginLayoutParams) mLayoutParams).leftMargin = DoricUtils.dp2px(x); + } + } + + protected void setY(float y) { + if (mLayoutParams instanceof ViewGroup.MarginLayoutParams) { + ((ViewGroup.MarginLayoutParams) mLayoutParams).topMargin = DoricUtils.dp2px(y); + } + } + + protected void setLayoutConfig(JSObject layoutConfig) { + if (mSuperNode != null) { + mSuperNode.blendSubLayoutConfig(this, layoutConfig); + } + } }