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 2019/08/30 09:23:50 UTC

[incubator-weex] branch master updated: [Android] Add support for screen rotation (#2867)

This is an automated email from the ASF dual-hosted git repository.

kyork pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git


The following commit(s) were added to refs/heads/master by this push:
     new 6552002  [Android] Add support for screen rotation (#2867)
6552002 is described below

commit 655200236aab1f608f25866827afaf63eba6e797
Author: katherine95s <51...@users.noreply.github.com>
AuthorDate: Fri Aug 30 17:23:45 2019 +0800

    [Android] Add support for screen rotation (#2867)
---
 .../src/main/java/com/taobao/weex/WXSDKInstance.java   |  9 +++++++++
 .../src/main/java/com/taobao/weex/bridge/WXBridge.java | 12 ++++++++++++
 .../java/com/taobao/weex/bridge/WXBridgeManager.java   | 16 ++++++++++++++++
 .../main/java/com/taobao/weex/common/IWXBridge.java    |  5 +++++
 weex_core/Source/android/wrap/wx_bridge.cpp            |  8 ++++++++
 .../base/android/jniprebuild/jniheader/WXBridge_jni.h  | 18 ++++++++++++++++++
 6 files changed, 68 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 9e0f2dc..17f4cec 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 class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
       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 3020cf6..aa38a26 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 @@ import java.util.Map;
   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 @@ import java.util.Map;
   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 c1a9616..4446d74 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 class WXBridgeManager implements Callback, BactchExecutor {
       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<String, String> 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 da33222..479203d 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 @@ public interface IWXBridge extends IWXObject {
 
   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 d0e7466..1b45e2e 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 c059a6f..2cba9f9 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<void *>(SetLogType)},
+    {"nativeReloadPageLayout",
+     "("
+     "Ljava/lang/String;"
+     ")"
+     "V",reinterpret_cast<void *>(ReloadPageLayout)},
+    {"nativeSetDeviceDisplayOfPage",
+    "("
+    "Ljava/lang/String;"
+    "F"
+    "F"
+    ")"
+    "V",reinterpret_cast<void *>(SetDeviceDisplayOfPage)}
 };
 
 static bool RegisterNativesImpl(JNIEnv *env) {