From 6631c9defac53391471caf29d92f57dac2c2efe4 Mon Sep 17 00:00:00 2001 From: katherine95s <51700937+katherine95s@users.noreply.github.com> Date: Tue, 23 Jul 2019 11:13:30 +0800 Subject: [PATCH] [Android] Fix setViewPort invalid (#2738) --- .../sdk/src/main/java/com/taobao/weex/WXSDKInstance.java | 1 + .../src/main/java/com/taobao/weex/bridge/WXBridge.java | 6 ++++++ .../java/com/taobao/weex/bridge/WXBridgeManager.java | 5 +++++ .../src/main/java/com/taobao/weex/common/IWXBridge.java | 2 ++ .../base/android/jniprebuild/jniheader/WXBridge_jni.h | 9 +++++++++ 5 files changed, 23 insertions(+) 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 02a17db63c..17cd7c833e 100644 --- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java +++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java @@ -454,6 +454,7 @@ public void setUseScroller(boolean use) { public void setInstanceViewPortWidth(int instanceViewPortWidth) { this.mInstanceViewPortWidth = instanceViewPortWidth; this.mAutoAdjustDeviceWidth = false; + WXBridgeManager.getInstance().setViewPortWidth(getInstanceId(),mInstanceViewPortWidth); } public void setAutoAdjustDeviceWidth(boolean autoAdjustViewPort){ 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 d311617a78..5c20a52ace 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 @@ -134,6 +134,8 @@ public class WXBridge implements IWXBridge { * */ public native void nativeUpdateGlobalConfig(String config); + private native void nativeSetViewPortWidth(String instanceId, float viewPortWidth); + public static final boolean MULTIPROCESS = true; @@ -765,6 +767,10 @@ public void setInstanceRenderType(String instanceId, String renderType){ nativeSetInstanceRenderType(instanceId, renderType); } + @Override + public void setViewPortWidth(String instanceId,float viewPortWidth){ + nativeSetViewPortWidth(instanceId,viewPortWidth); + } @Override public void removeInstanceRenderType(String instanceId){ 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 8ee6f23895..0ad54e6363 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 @@ -3338,6 +3338,11 @@ public void markDirty(String instanceId, String ref, boolean dirty) { mWXBridge.markDirty(instanceId, ref, dirty); } } + public void setViewPortWidth(String instanceId,float viewPortWidth){ + if (isSkipFrameworkInit(instanceId) || isJSFrameworkInit()) { + mWXBridge.setViewPortWidth(instanceId,viewPortWidth); + } + } public int callHasTransitionPros(String instanceId, String ref, HashMap styles) { WXComponent component = WXSDKManager.getInstance().getWXRenderManager().getWXComponent(instanceId, ref); 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 f98d5c09a7..0df86f7572 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 @@ -213,4 +213,6 @@ int callUpdateAttrs(String instanceId, String ref, void setPageArgument(String instanceId, String key, String value); + void setViewPortWidth(String instanceId,float viewPortWidth); + } diff --git a/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h b/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h index 586a80a0c4..eb8aa93a6e 100644 --- a/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h +++ b/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h @@ -198,6 +198,9 @@ static void SetInstanceRenderType(JNIEnv* env, jobject jcaller, static void RemoveInstanceRenderType(JNIEnv* env, jobject jcaller, jstring instanceId); +static void SetViewPortWidth(JNIEnv* env, jobject jcaller, + jstring instanceId,jfloat viewPortWidth); + static void SetPageArgument(JNIEnv* env, jobject jcaller, jstring instanceId, jstring key, @@ -1204,6 +1207,12 @@ static const JNINativeMethod kMethodsWXBridge[] = { "Ljava/lang/String;" ")" "V", reinterpret_cast(RemoveInstanceRenderType) }, + { "nativeSetViewPortWidth", + "(" + "Ljava/lang/String;" + "F" + ")" + "V", reinterpret_cast(SetViewPortWidth)}, }; static bool RegisterNativesImpl(JNIEnv* env) {