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 9e0f2dca7e..17f4cece9d 100644 --- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java +++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java @@ -465,6 +465,15 @@ public void setInstanceViewPortWidth(int instanceViewPortWidth,boolean fromMetaM WXBridgeManager.getInstance().setViewPortWidth(getInstanceId(), mInstanceViewPortWidth); } } + public void resetDeviceDisplayOfPage(){ + WXBridgeManager.getInstance().setDeviceDisplayOfPage(getInstanceId(), WXViewUtils.getScreenWidth(getContext()), WXViewUtils.getScreenHeight(getContext())); + } + public void setPageKeepRawCssStyles(){ + WXBridgeManager.getInstance().setPageArgument(getInstanceId(),"reserveCssStyles","true"); + } + public void reloadPageLayout(){ + WXBridgeManager.getInstance().reloadPageLayout(getInstanceId()); + } public void setAutoAdjustDeviceWidth(boolean autoAdjustViewPort){ this.mAutoAdjustDeviceWidth = 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 3020cf6c97..aa38a262b1 100755 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java @@ -139,6 +139,10 @@ public class WXBridge implements IWXBridge { private native void nativeSetViewPortWidth(String instanceId, float viewPortWidth); private native void nativeSetLogType(float type, float isPerf); + private native void nativeReloadPageLayout(String instanceId); + + private native void nativeSetDeviceDisplayOfPage(String instanceId,float width,float height); + public static final boolean MULTIPROCESS = true; @@ -919,4 +923,12 @@ public void registerModuleOnDataRenderNode(String data) { public void registerComponentOnDataRenderNode(String data) { nativeRegisterComponentOnDataRenderNode(data); } + public void reloadPageLayout(String instanceId){ + nativeReloadPageLayout(instanceId); + } + + public void setDeviceDisplayOfPage(String instanceId, float width, float height){ + nativeSetDeviceDisplayOfPage(instanceId,width,height); + } + } 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 c1a9616451..4446d746e5 100755 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java @@ -3580,6 +3580,22 @@ public void setViewPortWidth(String instanceId,float viewPortWidth){ mWXBridge.setViewPortWidth(instanceId,viewPortWidth); } } + public void setPageArgument(String instanceId,String key,String value){ + if (isSkipFrameworkInit(instanceId) || isJSFrameworkInit()) { + mWXBridge.setPageArgument(instanceId,key,value); + } + } + public void reloadPageLayout(String instanceId){ + if (isSkipFrameworkInit(instanceId) || isJSFrameworkInit()) { + mWXBridge.reloadPageLayout(instanceId); + } + } + + public void setDeviceDisplayOfPage(String instanceId,float width,float height){ + if (isSkipFrameworkInit(instanceId) || isJSFrameworkInit()) { + mWXBridge.setDeviceDisplayOfPage(instanceId,width,height); + } + } 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 da33222637..479203dee5 100755 --- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java @@ -226,4 +226,9 @@ int callAddChildToRichtext(String instanceId, String nodeType, String ref, Strin void setViewPortWidth(String instanceId,float viewPortWidth); + void reloadPageLayout(String instanceId); + + void setDeviceDisplayOfPage(String instanceId, float width, float height); + + } diff --git a/weex_core/Source/android/wrap/wx_bridge.cpp b/weex_core/Source/android/wrap/wx_bridge.cpp index d0e74663ec..1b45e2eafe 100755 --- a/weex_core/Source/android/wrap/wx_bridge.cpp +++ b/weex_core/Source/android/wrap/wx_bridge.cpp @@ -286,6 +286,10 @@ static void SetLogType(JNIEnv* env, jobject jcaller, jfloat logLevel, ->core_side() ->SetLogType(l, flag); } +static void ReloadPageLayout(JNIEnv *env, jobject jcaller, + jstring instanceId){ + WeexCoreManager::Instance()->getPlatformBridge()->core_side()->RelayoutUsingRawCssStyles(jString2StrFast(env,instanceId)); +} static void SetPageArgument(JNIEnv* env, jobject jcaller, jstring instanceId, @@ -296,6 +300,10 @@ static void SetPageArgument(JNIEnv* env, jobject jcaller, ->core_side()->SetPageArgument(jString2StrFast(env, instanceId), jString2StrFast(env, key), jString2StrFast(env, value)); } +static void SetDeviceDisplayOfPage(JNIEnv *env, jobject jcaller, + jstring instanceId,jfloat width,jfloat height){ + WeexCoreManager::Instance()->getPlatformBridge()->core_side()->SetDeviceDisplayOfPage(jString2StrFast(env,instanceId),width,height); +} static void SetDeviceDisplay(JNIEnv* env, jobject jcaller, jstring instanceId, jfloat value, float height, float scale) { 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 c059a6f2b9..2cba9f9a22 100755 --- a/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h +++ b/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h @@ -210,6 +210,12 @@ static void SetPageArgument(JNIEnv *env, jobject jcaller, static void SetLogType(JNIEnv* env, jobject jcaller, jfloat type, jfloat isPerf); +static void ReloadPageLayout(JNIEnv *env, jobject jcaller, + jstring instanceId); +static void SetDeviceDisplayOfPage(JNIEnv *env, jobject jcaller, + jstring instanceId,jfloat width,jfloat height); + + // Step 2: method stubs. static intptr_t g_WXBridge_onReceivedResult = 0; @@ -1390,6 +1396,18 @@ static const JNINativeMethod kMethodsWXBridge[] = { "F" ")" "V", reinterpret_cast(SetLogType)}, + {"nativeReloadPageLayout", + "(" + "Ljava/lang/String;" + ")" + "V",reinterpret_cast(ReloadPageLayout)}, + {"nativeSetDeviceDisplayOfPage", + "(" + "Ljava/lang/String;" + "F" + "F" + ")" + "V",reinterpret_cast(SetDeviceDisplayOfPage)} }; static bool RegisterNativesImpl(JNIEnv *env) {