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) {