Repository: incubator-weex Updated Branches: refs/heads/master c6d99036d -> e74c60cd3
[WEEX-408][android] measure func not right recyclelist update measure function and support horizontal Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e74c60cd Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e74c60cd Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e74c60cd Branch: refs/heads/master Commit: e74c60cd3ca9242143c0d83bfd22d4dcceda3805 Parents: c6d9903 Author: jianbai.gbj <[email protected]> Authored: Thu May 31 11:59:32 2018 +0800 Committer: jianbai.gbj <[email protected]> Committed: Thu May 31 11:59:32 2018 +0800 ---------------------------------------------------------------------- .../src/main/java/com/taobao/weex/WXSDKInstance.java | 10 +++++----- .../main/java/com/taobao/weex/bridge/WXBridge.java | 4 ++-- .../java/com/taobao/weex/bridge/WXBridgeManager.java | 6 +++--- .../main/java/com/taobao/weex/common/IWXBridge.java | 2 +- .../src/main/java/com/taobao/weex/dom/WXAttr.java | 2 +- .../com/taobao/weex/ui/component/WXComponent.java | 4 +++- .../list/template/WXRecyclerTemplateList.java | 15 +++++++-------- .../android/bridge/impl/bridge_impl_android.cpp | 7 +++---- .../Source/android/bridge/impl/bridge_impl_android.h | 2 +- .../core/layout/measure_func_adapter_impl_android.h | 2 +- 10 files changed, 27 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java index 114f084..fba31d6 100644 --- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java +++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java @@ -189,7 +189,7 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan private ComponentObserver mComponentObserver; private Map<String, GraphicActionAddElement> inactiveAddElementAction = new ArrayMap<>(); - private Map<String, ContentBoxMeasurement> mContentBoxMeasurements = new ArrayMap<>(); + private Map<Long, ContentBoxMeasurement> mContentBoxMeasurements = new ArrayMap<>(); /** * set make weexCore run in single process mode @@ -1946,11 +1946,11 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan } } - public void addContentBoxMeasurement(String ref, ContentBoxMeasurement contentBoxMeasurement) { - mContentBoxMeasurements.put(ref, contentBoxMeasurement); + public void addContentBoxMeasurement(long renderObjectPtr, ContentBoxMeasurement contentBoxMeasurement) { + mContentBoxMeasurements.put(renderObjectPtr, contentBoxMeasurement); } - public ContentBoxMeasurement getContentBoxMeasurement(String ref) { - return mContentBoxMeasurements.get(ref); + public ContentBoxMeasurement getContentBoxMeasurement(long renderObjectPtr) { + return mContentBoxMeasurements.get(renderObjectPtr); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java index 6315a4f..cc2d1a9 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java @@ -478,10 +478,10 @@ public class WXBridge implements IWXBridge { } @Override - public ContentBoxMeasurement getMeasurementFunc(String instanceId, String ref) { + public ContentBoxMeasurement getMeasurementFunc(String instanceId, long renderObjectPtr) { ContentBoxMeasurement obj = null; try { - obj = WXBridgeManager.getInstance().getMeasurementFunc(instanceId, ref); + obj = WXBridgeManager.getInstance().getMeasurementFunc(instanceId, renderObjectPtr); } catch (Throwable e) { if (WXEnvironment.isApkDebugable()) { WXLogUtils.e(TAG, "getMeasurementFunc throw exception:" + e.getMessage()); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java index 42f96fb..58b18a0 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java @@ -2605,15 +2605,15 @@ public class WXBridgeManager implements Callback, BactchExecutor { return IWXBridge.INSTANCE_RENDERING; } - public ContentBoxMeasurement getMeasurementFunc(String instanceId, String ref) { + public ContentBoxMeasurement getMeasurementFunc(String instanceId, long renderObjectPtr) { ContentBoxMeasurement contentBoxMeasurement = null; WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId); if (instance != null) { - contentBoxMeasurement = instance.getContentBoxMeasurement(ref); + contentBoxMeasurement = instance.getContentBoxMeasurement(renderObjectPtr); } return contentBoxMeasurement; } - + public void bindMeasurementToRenderObject(long ptr){ mWXBridge.bindMeasurementToRenderObject(ptr); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java index 56c7c8e..25821e3 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java @@ -154,7 +154,7 @@ public interface IWXBridge extends IWXObject { int callHasTransitionPros(String instanceId, String ref, HashMap<String, String> styles); - ContentBoxMeasurement getMeasurementFunc(String instanceId, String ref); + ContentBoxMeasurement getMeasurementFunc(String instanceId, long renderObjectPtr); void bindMeasurementToRenderObject(long ptr); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java b/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java index 1ff916d..000db30 100644 --- a/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java +++ b/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java @@ -261,7 +261,7 @@ public class WXAttr implements Map<String, Object>,Cloneable { public int getOrientation() { String direction = getScrollDirection(); if(!TextUtils.isEmpty(direction)){ - if(direction.equals(Constants.Value.HORIZONTAL.equals(direction))){ + if(direction.equals(Constants.Value.HORIZONTAL)){ return Constants.Orientation.HORIZONTAL; } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java index 632f716..3c15cd5 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java @@ -210,6 +210,8 @@ public abstract class WXComponent<T extends View> extends WXBasicComponent imple } } + + @Override protected final void bindComponent(WXComponent component) { super.bindComponent(component); @@ -222,7 +224,7 @@ public abstract class WXComponent<T extends View> extends WXBasicComponent imple protected final void setContentBoxMeasurement(final ContentBoxMeasurement contentBoxMeasurement) { this.contentBoxMeasurement = contentBoxMeasurement; - mInstance.addContentBoxMeasurement(getRef(), contentBoxMeasurement); + mInstance.addContentBoxMeasurement(getRenderObjectPtr(), contentBoxMeasurement); WXBridgeManager.getInstance().bindMeasurementToRenderObject(getRenderObjectPtr()); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java index 3375500..70d135e 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java @@ -829,14 +829,13 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp @WXComponentProp(name = Constants.Name.SCROLL_DIRECTION) public void setScrollDirection(String direction){ - // TODO -// if(orientation != mDomObject.getOrientation()) { -// orientation = mDomObject.getOrientation(); -// updateRecyclerAttr(); -// WXRecyclerView wxRecyclerView = getHostView().getInnerView(); -// wxRecyclerView.initView(getContext(), mLayoutType,mColumnCount,mColumnGap, getOrientation()); -// -// } + if(orientation != getAttrs().getOrientation()) { + orientation = getAttrs().getOrientation(); + updateRecyclerAttr(); + WXRecyclerView wxRecyclerView = getHostView().getInnerView(); + wxRecyclerView.initView(getContext(), mLayoutType,mColumnCount,mColumnGap, getOrientation()); + + } } @WXComponentProp(name = Constants.Name.COLUMN_WIDTH) http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp index 634cf56..6cea477 100644 --- a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp +++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp @@ -916,15 +916,14 @@ namespace WeexCore { env->CallVoidMethod(jWMThis, jDispatchMeaasge, jClientId, jVmId, jData, jCallback); } - jobject Bridge_Impl_Android::getMeasureFunc(const char* pageId, const char* ref) { + jobject Bridge_Impl_Android::getMeasureFunc(const char* pageId, jlong renderObjectPtr) { JNIEnv *env = getJNIEnv(); jstring jPageId = getKeyFromCache(env, pageId); - jstring jRef = getKeyFromCache(env, ref); if (jCallGetMeasurementMethodId == NULL) { jCallGetMeasurementMethodId = env->GetMethodID(jBridgeClazz, "getMeasurementFunc", - "(Ljava/lang/String;Ljava/lang/String;)Lcom/taobao/weex/layout/ContentBoxMeasurement;"); + "(Ljava/lang/String;J)Lcom/taobao/weex/layout/ContentBoxMeasurement;"); } - return env->CallObjectMethod(jThis, jCallGetMeasurementMethodId, jPageId, jRef); + return env->CallObjectMethod(jThis, jCallGetMeasurementMethodId, jPageId, renderObjectPtr); } } //end WeexCore http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/weex_core/Source/android/bridge/impl/bridge_impl_android.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.h b/weex_core/Source/android/bridge/impl/bridge_impl_android.h index 72d14b5..825c47c 100644 --- a/weex_core/Source/android/bridge/impl/bridge_impl_android.h +++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.h @@ -133,7 +133,7 @@ namespace WeexCore { void handleDispatchMessage(jstring jClientId, jstring jVmId, jbyteArray jData, jstring jCallback); - jobject getMeasureFunc(const char* pageId, const char* ref); + jobject getMeasureFunc(const char* pageId, jlong renderObjectPtr); }; } //end WeexCore #endif //BridgeAndroid_h \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/weex_core/Source/core/layout/measure_func_adapter_impl_android.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/layout/measure_func_adapter_impl_android.h b/weex_core/Source/core/layout/measure_func_adapter_impl_android.h index 162df29..1795c78 100644 --- a/weex_core/Source/core/layout/measure_func_adapter_impl_android.h +++ b/weex_core/Source/core/layout/measure_func_adapter_impl_android.h @@ -89,7 +89,7 @@ namespace WeexCore { if (!node->haveMeasureFunc()) { return nullptr; } - return Bridge_Impl_Android::getInstance()->getMeasureFunc(((RenderObject *) node)->PageId().c_str(), ((RenderObject *) node)->Ref().c_str()); + return Bridge_Impl_Android::getInstance()->getMeasureFunc(((RenderObject *) node)->PageId().c_str(), convert_render_object_to_long(node)); } }; }
