You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2018/04/28 06:53:58 UTC
[30/48] incubator-weex git commit: * [android] Merge WeexCore-master
to master.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java b/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java
index 0abe3d7..fe425b7 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java
@@ -45,6 +45,11 @@ import java.util.Map.Entry;
public class WXAnimationBean {
+ public final static String LINEAR = "linear";
+ public final static String EASE_IN_OUT = "ease-in-out";
+ public final static String EASE_IN = "ease-in";
+ public final static String EASE_OUT = "ease-out";
+ public final static String CUBIC_BEZIER = "cubic-bezier";
public final static int NUM_CUBIC_PARAM = 4;
public long delay;
public long duration;
@@ -82,7 +87,7 @@ public class WXAnimationBean {
static {
wxToAndroidMap.put(WX_TRANSLATE, Arrays.asList
- (View.TRANSLATION_X, View.TRANSLATION_Y));
+ (View.TRANSLATION_X, View.TRANSLATION_Y));
wxToAndroidMap.put(WX_TRANSLATE_X, Collections.singletonList(View.TRANSLATION_X));
wxToAndroidMap.put(WX_TRANSLATE_Y, Collections.singletonList(View.TRANSLATION_Y));
wxToAndroidMap.put(WX_ROTATE, Collections.singletonList(View.ROTATION));
@@ -114,7 +119,7 @@ public class WXAnimationBean {
private float cameraDistance = Float.MAX_VALUE;
private static Map<Property<View,Float>, Float> parseTransForm(@Nullable String rawTransform, final int width,
- final int height,final int viewportW) {
+ final int height,final int viewportW) {
return TransformParser.parseTransForm(rawTransform, width, height, viewportW);
}
@@ -142,7 +147,7 @@ public class WXAnimationBean {
private static Pair<Float, Float> parsePivot(@NonNull List<String> list, int width, int height,int viewportW) {
return new Pair<>(
- parsePivotX(list.get(0), width,viewportW), parsePivotY(list.get(1), height,viewportW));
+ parsePivotX(list.get(0), width,viewportW), parsePivotY(list.get(1), height,viewportW));
}
private static float parsePivotX(String x, int width,int viewportW) {
@@ -237,3 +242,4 @@ public class WXAnimationBean {
}
}
}
+
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java b/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java
index 3b15347..11b02bc 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java
@@ -21,31 +21,22 @@ package com.taobao.weex.ui.animation;
import android.support.annotation.Nullable;
import android.text.TextUtils;
-import com.alibaba.fastjson.JSONObject;
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.WXSDKManager;
import com.taobao.weex.annotation.JSMethod;
import com.taobao.weex.common.WXModule;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.WXDomHandler;
-import com.taobao.weex.dom.action.Actions;
+import com.taobao.weex.ui.action.GraphicActionAnimation;
import com.taobao.weex.ui.component.WXComponent;
-
-import static com.taobao.weex.dom.action.Actions.getAnimationAction;
-
public class WXAnimationModule extends WXModule {
@JSMethod
- public void transition(@Nullable String ref, @Nullable JSONObject animation, @Nullable String callBack) {
- if (!TextUtils.isEmpty(ref) && animation != null && mWXSDKInstance != null) {
- DOMAction animationActions = getAnimationAction(ref, animation, callBack);
+ public void transition(@Nullable String ref, @Nullable String animation, @Nullable String callBack) {
+ if (!TextUtils.isEmpty(ref) && !TextUtils.isEmpty(animation) && mWXSDKInstance != null) {
//Due to animation module rely on the result of the css-layout and the batch mechanism of
//css-layout, the animation.transition must be delayed the batch time.
- WXSDKManager.getInstance().getWXDomManager().postActionDelay(mWXSDKInstance.getInstanceId(),
- animationActions,
- false, WXDomHandler.DELAY_TIME);
+ GraphicActionAnimation action = new GraphicActionAnimation(mWXSDKInstance.getInstanceId(), ref, animation, callBack);
+ WXSDKManager.getInstance().getWXRenderManager().postGraphicAction(action.getPageId(), action);
}
}
@@ -55,9 +46,11 @@ public class WXAnimationModule extends WXModule {
private WXAnimationBean wxAnimationBean;
private String callback;
- public void execute(WXSDKInstance mInstance, WXComponent component) {
- RenderAction action = Actions.getAnimationAction(component.getRef(), wxAnimationBean, callback);
- WXSDKManager.getInstance().getWXRenderManager().runOnThread(mInstance.getInstanceId(), action);
+ public void execute(WXSDKInstance instance, WXComponent component) {
+ if (null != instance && null != component) {
+ GraphicActionAnimation action = new GraphicActionAnimation(instance.getInstanceId(), component.getRef(), wxAnimationBean, callback);
+ WXSDKManager.getInstance().getWXRenderManager().postGraphicAction(action.getPageId(), action);
+ }
}
public AnimationHolder(WXAnimationBean wxAnimationBean, String callback) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java
index 1c78d42..139b1b5 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java
@@ -24,9 +24,11 @@ import android.support.annotation.NonNull;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
+import android.text.TextPaint;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.method.PasswordTransformationMethod;
+import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.KeyEvent;
@@ -43,11 +45,16 @@ import com.taobao.weex.annotation.JSMethod;
import com.taobao.weex.bridge.WXBridgeManager;
import com.taobao.weex.common.Constants;
import com.taobao.weex.common.WXThread;
-import com.taobao.weex.dom.WXDomObject;
+import com.taobao.weex.dom.CSSConstants;
import com.taobao.weex.dom.WXStyle;
+import com.taobao.weex.layout.ContentBoxMeasurement;
+import com.taobao.weex.layout.MeasureMode;
+import com.taobao.weex.layout.MeasureSize;
+import com.taobao.weex.ui.action.BasicComponentData;
import com.taobao.weex.ui.component.helper.SoftKeyboardDetector;
import com.taobao.weex.ui.component.helper.WXTimeInputHelper;
import com.taobao.weex.ui.view.WXEditText;
+import com.taobao.weex.utils.TypefaceUtil;
import com.taobao.weex.utils.WXLogUtils;
import com.taobao.weex.utils.WXResourceUtils;
import com.taobao.weex.utils.WXUtils;
@@ -59,6 +66,8 @@ import java.util.Map;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
+import static com.taobao.weex.dom.WXStyle.UNSET;
+
/**
* Created by sospartan on 7/11/16.
*/
@@ -84,9 +93,76 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
private int mFormatRepeatCount = 0;
private static final int MAX_TEXT_FORMAT_REPEAT = 3;
- public AbstractEditComponent(WXSDKInstance instance, WXDomObject dom, WXVContainer parent, boolean isLazy) {
- super(instance, dom, parent, isLazy);
+ private TextPaint mPaint = new TextPaint();
+ private int mLineHeight = UNSET;
+
+ public AbstractEditComponent(WXSDKInstance instance, WXVContainer parent, boolean isLazy, BasicComponentData basicComponentData) {
+ super(instance, parent, isLazy, basicComponentData);
mInputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+ setContentBoxMeasurement(new ContentBoxMeasurement() {
+ /** uiThread = false **/
+ @Override
+ public void measureInternal(float width, float height, int widthMeasureMode, int heightMeasureMode) {
+ if (CSSConstants.isUndefined(width) || widthMeasureMode == MeasureMode.UNSPECIFIED) {
+ width = 0;
+ }
+ mMeasureWidth = width;
+ mMeasureHeight = getMeasureHeight();
+ }
+
+ /** uiThread = false **/
+ @Override
+ public void layoutBefore() {
+ updateStyleAndAttrs();
+ }
+
+ /** uiThread = false **/
+ @Override
+ public void layoutAfter(float computedWidth, float computedHeight) {
+
+ }
+ });
+ }
+
+ protected final float getMeasuredLineHeight() {
+ return mLineHeight != UNSET && mLineHeight > 0 ? mLineHeight : mPaint.getFontMetrics(null);
+ }
+
+ protected float getMeasureHeight() {
+ return getMeasuredLineHeight();
+ }
+
+ protected void updateStyleAndAttrs() {
+ if (getStyles().size() > 0) {
+ int fontSize = UNSET, fontStyle = UNSET, fontWeight = UNSET;
+ String fontFamily = null;
+ if (getStyles().containsKey(Constants.Name.FONT_SIZE)) {
+ fontSize = WXStyle.getFontSize(getStyles(),getViewPortWidth());
+ }
+
+ if (getStyles().containsKey(Constants.Name.FONT_FAMILY)) {
+ fontFamily = WXStyle.getFontFamily(getStyles());
+ }
+
+ if (getStyles().containsKey(Constants.Name.FONT_STYLE)) {
+ fontStyle = WXStyle.getFontStyle(getStyles());
+ }
+
+ if (getStyles().containsKey(Constants.Name.FONT_WEIGHT)) {
+ fontWeight = WXStyle.getFontWeight(getStyles());
+ }
+
+ int lineHeight = WXStyle.getLineHeight(getStyles(),getViewPortWidth());
+ if (lineHeight != UNSET)
+ mLineHeight = lineHeight;
+
+ if (fontSize != UNSET)
+ mPaint.setTextSize(fontSize);
+
+ if (fontFamily != null) {
+ TypefaceUtil.applyFontStyle(mPaint, fontStyle, fontWeight, fontFamily);
+ }
+ }
}
@Override
@@ -97,7 +173,7 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
}
@Override
- protected void onHostViewInitialized(final WXEditText host) {
+ protected void onHostViewInitialized(WXEditText host) {
super.onHostViewInitialized(host);
addFocusChangeListener(new OnFocusChangeListener() {
@Override
@@ -105,7 +181,7 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
if (!hasFocus) {
decideSoftKeyboard();
}
- setPseudoClassStatus(Constants.PSEUDO.FOCUS, hasFocus);
+ setPseudoClassStatus(Constants.PSEUDO.FOCUS,hasFocus);
}
});
@@ -118,31 +194,34 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
return !isDisabled();
}
- private void applyOnClickListener() {
- addClickListener(new OnClickListener() {
- @Override
- public void onHostViewClick() {
- switch (mType) {
- case Constants.Value.DATE:
- hideSoftKeyboard();
- if (getParent() != null) {
- getParent().interceptFocus();
- }
- WXTimeInputHelper.pickDate(mMax, mMin, AbstractEditComponent.this);
- break;
- case Constants.Value.TIME:
- hideSoftKeyboard();
- if (getParent() != null) {
- getParent().interceptFocus();
- }
- WXTimeInputHelper.pickTime(AbstractEditComponent.this);
- break;
- }
+ private OnClickListener mOnClickListener = new OnClickListener() {
+ @Override
+ public void onHostViewClick() {
+ switch (mType) {
+ case Constants.Value.DATE:
+ hideSoftKeyboard();
+ if (getParent() != null) {
+ getParent().interceptFocus();
+ }
+ WXTimeInputHelper.pickDate(mMax, mMin, AbstractEditComponent.this);
+ break;
+ case Constants.Value.TIME:
+ hideSoftKeyboard();
+ if (getParent() != null) {
+ getParent().interceptFocus();
+ }
+ WXTimeInputHelper.pickTime(AbstractEditComponent.this);
+ break;
}
- });
+ }
+ };
+
+ private void applyOnClickListener() {
+ addClickListener(mOnClickListener);
}
- protected int getVerticalGravity() {
+
+ protected int getVerticalGravity(){
return Gravity.CENTER_VERTICAL;
}
@@ -152,7 +231,7 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
* @param editText
*/
protected void appleStyleAfterCreated(final WXEditText editText) {
- String alignStr = (String) getDomObject().getStyles().get(Constants.Name.TEXT_ALIGN);
+ String alignStr = (String) getStyles().get(Constants.Name.TEXT_ALIGN);
int textAlign = getTextAlign(alignStr);
if (textAlign <= 0) {
textAlign = Gravity.START;
@@ -209,7 +288,7 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
};
editText.addTextChangedListener(mTextChangedEventDispatcher);
- editText.setTextSize(TypedValue.COMPLEX_UNIT_PX, WXStyle.getFontSize(getDomObject().getStyles(), getInstance().getInstanceViewPortWidth()));
+ editText.setTextSize(TypedValue.COMPLEX_UNIT_PX, WXStyle.getFontSize(getStyles(), getInstance().getInstanceViewPortWidth()));
}
@@ -278,7 +357,6 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
mBeforeText = s.toString();
fireEvent(Constants.Event.INPUT, s.toString());
-
}
@Override
@@ -320,13 +398,13 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
attrsChanges.put("value", value);
domChanges.put("attrs", attrsChanges);
- WXSDKManager.getInstance().fireEvent(getInstanceId(), getDomObject().getRef(), event, params, domChanges);
+ WXSDKManager.getInstance().fireEvent(getInstanceId(), getRef(), event, params, domChanges);
}
}
public void performOnChange(String value) {
- if (getDomObject() != null && getDomObject().getEvents() != null) {
- String event = getDomObject().getEvents().contains(Constants.Event.CHANGE) ? Constants.Event.CHANGE : null;
+ if (getEvents() != null) {
+ String event = getEvents().contains(Constants.Event.CHANGE) ? Constants.Event.CHANGE : null;
fireEvent(event, value);
}
}
@@ -466,6 +544,7 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
@WXComponentProp(name = Constants.Name.TYPE)
public void setType(String type) {
+ Log.e("weex", "setType=" + type);
if (type == null || getHostView() == null) {
return;
}
@@ -522,7 +601,7 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
@WXComponentProp(name = Constants.Name.FONT_SIZE)
public void setFontSize(String fontSize) {
- if (getHostView() != null && fontSize != null) {
+ if (getHostView() != null && fontSize != null ) {
Map<String, Object> map = new HashMap<>(1);
map.put(Constants.Name.FONT_SIZE, fontSize);
getHostView().setTextSize(TypedValue.COMPLEX_UNIT_PX, WXStyle.getFontSize(map, getInstance().getInstanceViewPortWidth()));
@@ -555,7 +634,6 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
/**
* Compatible with both 'max-length' and 'maxlength'
- *
* @param maxLength
*/
@WXComponentProp(name = Constants.Name.MAX_LENGTH)
@@ -568,7 +646,6 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
/**
* Compatible with both 'max-length' and 'maxlength'
- *
* @param maxLength
*/
@WXComponentProp(name = Constants.Name.MAXLENGTH)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/ui/component/ComponentUtils.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/ComponentUtils.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/ComponentUtils.java
index b28a94f..373d9cd 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/ComponentUtils.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/ComponentUtils.java
@@ -20,9 +20,6 @@ package com.taobao.weex.ui.component;
import com.taobao.weex.WXEnvironment;
import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.dom.action.TraceableAction;
import com.taobao.weex.utils.WXLogUtils;
/**
@@ -54,69 +51,71 @@ public class ComponentUtils {
/**
* build component tree and dom tree for template list
* */
- public static synchronized final WXComponent buildTree(WXDomObject domObject, WXVContainer parent){
- DOMActionContext domActionContext = WXSDKManager.getInstance().getWXDomManager().getDomContext(parent.getInstanceId());
- if(domActionContext == null){
- return null;
- }
- DomTreeBuilder builder = new DomTreeBuilder();
- domObject.traverseTree(
- domActionContext.getAddDOMConsumer(),
- domActionContext.getApplyStyleConsumer()
- );
- return builder.buildComponentTree(domActionContext, domObject, parent);
- }
+ // TODO
+// public static synchronized final WXComponent buildTree(WXDomObject domObject, WXVContainer parent){
+// DOMActionContext domActionContext = WXSDKManager.getInstance().getWXDomManager().getDomContext(parent.getInstanceId());
+// if(domActionContext == null){
+// return null;
+// }
+// DomTreeBuilder builder = new DomTreeBuilder();
+// domObject.traverseTree(
+// domActionContext.getAddDOMConsumer(),
+// domActionContext.getApplyStyleConsumer()
+// );
+// return builder.buildComponentTree(domActionContext, domObject, parent);
+// }
/**
* dom tree build
* */
- static class DomTreeBuilder extends TraceableAction {
-
- private WXComponent buildComponentTree(DOMActionContext context, WXDomObject dom, WXVContainer parent) {
- if (dom == null) {
- return null;
- }
- long startNanos = System.nanoTime();
- dom.setCloneThis(true);
- WXComponent component = WXComponentFactory.newInstance(context.getInstance(), dom, parent);
- if (component != null) {
- component.mTraceInfo.domThreadStart = dom.mDomThreadTimestamp;
- component.mTraceInfo.rootEventId = mTracingEventId;
- component.mTraceInfo.domQueueTime = mDomQueueTime;
- }
- context.registerComponent(dom.getRef(), component);
- if (component instanceof WXVContainer) {
- WXVContainer container = (WXVContainer) component;
- WXDomObject parentDom = (WXDomObject) container.getDomObject();
- for (int i = 0; i < dom.childCount(); ++i) {
- WXDomObject child = dom.getChild(i);
- if (child != null) {
- WXComponent childComponent = buildComponentTree(context, child, container);
- container.addChild(childComponent);
- WXDomObject childDomObject = (WXDomObject) childComponent.getDomObject();
- if(childDomObject != child) {
- int index = parentDom.index(child);
- parentDom.add(childDomObject, index);
- if(index >= 0) {
- parentDom.remove(child);
- i--;
- }
- RuntimeException exception = new IllegalArgumentException(childDomObject.getClass().getName()
- + " not support clone this");
- WXLogUtils.e("weex", exception);
- if(WXEnvironment.isApkDebugable()){
- throw exception;
- }
- }
- }
- }
- }
- dom.setCloneThis(false);
- if (component != null) {
- component.mTraceInfo.domThreadNanos = System.nanoTime() - startNanos;
- }
- return component;
- }
- }
+ // TODO
+// static class DomTreeBuilder extends TraceableAction {
+//
+// private WXComponent buildComponentTree(DOMActionContext context, WXDomObject dom, WXVContainer parent) {
+// if (dom == null) {
+// return null;
+// }
+// long startNanos = System.nanoTime();
+// dom.setCloneThis(true);
+// WXComponent component = WXComponentFactory.newInstance(context.getInstance(), dom, parent);
+// if (component != null) {
+// component.mTraceInfo.domThreadStart = dom.mDomThreadTimestamp;
+// component.mTraceInfo.rootEventId = mTracingEventId;
+// component.mTraceInfo.domQueueTime = mDomQueueTime;
+// }
+// context.registerComponent(dom.getRef(), component);
+// if (component instanceof WXVContainer) {
+// WXVContainer container = (WXVContainer) component;
+// WXDomObject parentDom = (WXDomObject) container.getDomObject();
+// for (int i = 0; i < dom.childCount(); ++i) {
+// WXDomObject child = dom.getChild(i);
+// if (child != null) {
+// WXComponent childComponent = buildComponentTree(context, child, container);
+// container.addChild(childComponent);
+// WXDomObject childDomObject = (WXDomObject) childComponent.getDomObject();
+// if(childDomObject != child) {
+// int index = parentDom.index(child);
+// parentDom.add(childDomObject, index);
+// if(index >= 0) {
+// parentDom.remove(child);
+// i--;
+// }
+// RuntimeException exception = new IllegalArgumentException(childDomObject.getClass().getName()
+// + " not support clone this");
+// WXLogUtils.e("weex", exception);
+// if(WXEnvironment.isApkDebugable()){
+// throw exception;
+// }
+// }
+// }
+// }
+// }
+// dom.setCloneThis(false);
+// if (component != null) {
+// component.mTraceInfo.domThreadNanos = System.nanoTime() - startNanos;
+// }
+// return component;
+// }
+// }
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/ui/component/Textarea.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/Textarea.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/Textarea.java
index 7e36d27..acc9100 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/Textarea.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/Textarea.java
@@ -23,8 +23,7 @@ import android.view.Gravity;
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.common.Constants;
-import com.taobao.weex.dom.TextAreaEditTextDomObject;
-import com.taobao.weex.dom.WXDomObject;
+import com.taobao.weex.ui.action.BasicComponentData;
import com.taobao.weex.ui.view.WXEditText;
import com.taobao.weex.utils.WXUtils;
@@ -32,8 +31,12 @@ import com.taobao.weex.utils.WXUtils;
* Created by sospartan on 7/11/16.
*/
public class Textarea extends AbstractEditComponent {
- public Textarea(WXSDKInstance instance, WXDomObject dom, WXVContainer parent, boolean isLazy) {
- super(instance, dom, parent, isLazy);
+
+ public static final int DEFAULT_ROWS = 2;
+ private int mNumberOfLines = DEFAULT_ROWS;
+
+ public Textarea(WXSDKInstance instance, WXVContainer parent, boolean isLazy, BasicComponentData basicComponentData) {
+ super(instance, parent, isLazy, basicComponentData);
}
@Override
@@ -45,9 +48,9 @@ public class Textarea extends AbstractEditComponent {
@Override
protected void appleStyleAfterCreated(WXEditText editText) {
super.appleStyleAfterCreated(editText);
- String rowsStr = (String) getDomObject().getStyles().get(Constants.Name.ROWS);
+ String rowsStr = (String) getStyles().get(Constants.Name.ROWS);
- int rows = TextAreaEditTextDomObject.DEFAULT_ROWS;
+ int rows = DEFAULT_ROWS;
try{
if(!TextUtils.isEmpty(rowsStr)) {
rows = Integer.parseInt(rowsStr);
@@ -87,4 +90,30 @@ public class Textarea extends AbstractEditComponent {
text.setLines(rows);
}
+
+ @Override
+ protected float getMeasureHeight(){
+ return getMeasuredLineHeight() * mNumberOfLines;
+ }
+
+ @Override
+ protected void updateStyleAndAttrs() {
+ super.updateStyleAndAttrs();
+ Object raw = getAttrs().get(Constants.Name.ROWS);
+ if (raw == null) {
+ return;
+ } else if (raw instanceof String) {
+ String rowsStr = (String) raw;
+ try {
+ int lines = Integer.parseInt(rowsStr);
+ if (lines > 0) {
+ mNumberOfLines = lines;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ }
+ } else if (raw instanceof Integer) {
+ mNumberOfLines = (Integer) raw;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java
index aae667f..e0b8442 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java
@@ -21,43 +21,36 @@ package com.taobao.weex.ui.component;
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.annotation.Component;
import com.taobao.weex.common.Constants;
-import com.taobao.weex.dom.ImmutableDomObject;
import com.taobao.weex.dom.WXAttr;
-import com.taobao.weex.dom.WXDomObject;
+import com.taobao.weex.ui.action.BasicComponentData;
import com.taobao.weex.ui.view.WXFrameLayout;
import com.taobao.weex.utils.ATagUtil;
-import com.taobao.weex.utils.WXLogUtils;
@Component(lazyload = false)
public class WXA extends WXDiv {
@Deprecated
- public WXA(WXSDKInstance instance, WXDomObject dom, WXVContainer parent, String instanceId, boolean isLazy) {
- this(instance, dom, parent);
+ public WXA(WXSDKInstance instance, WXVContainer parent, String instanceId, boolean isLazy, BasicComponentData basicComponentData) {
+ this(instance, parent, basicComponentData);
}
- public WXA(WXSDKInstance instance, WXDomObject dom, WXVContainer parent) {
- super(instance, dom, parent);
+ public WXA(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) {
+ super(instance, parent, basicComponentData);
}
@Override
protected void onHostViewInitialized(WXFrameLayout host) {
- super.onHostViewInitialized(host);
addClickListener(new OnClickListener() {
@Override
public void onHostViewClick() {
String href;
- ImmutableDomObject domObject = getDomObject();
- if (domObject != null) {
- WXAttr attr = domObject.getAttrs();
- if (attr !=null && (href = (String)attr.get("href")) != null) {
- ATagUtil.onClick(null, getInstanceId(), href);
- }
- } else {
- WXLogUtils.d("WXA", "Property href is empty.");
+ WXAttr attr = getAttrs();
+ if (attr !=null && (href = (String)attr.get("href")) != null) {
+ ATagUtil.onClick(null, getInstanceId(), href);
}
}
});
+ super.onHostViewInitialized(host);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/ui/component/WXBaseRefresh.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXBaseRefresh.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXBaseRefresh.java
index 146fd27..45a21e8 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXBaseRefresh.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXBaseRefresh.java
@@ -22,7 +22,7 @@ import android.content.Context;
import android.support.annotation.NonNull;
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.annotation.Component;
-import com.taobao.weex.dom.WXDomObject;
+import com.taobao.weex.ui.action.BasicComponentData;
import com.taobao.weex.ui.view.WXFrameLayout;
/**
@@ -34,8 +34,8 @@ public class WXBaseRefresh extends WXVContainer<WXFrameLayout> {
private WXLoadingIndicator mLoadingIndicator;
- public WXBaseRefresh(WXSDKInstance instance, WXDomObject node, WXVContainer parent, boolean lazy) {
- super(instance, node, parent, lazy);
+ public WXBaseRefresh(WXSDKInstance instance, WXVContainer parent, boolean lazy, BasicComponentData basicComponentData) {
+ super(instance, parent, lazy, basicComponentData);
}
@Override