Skip to content
This repository has been archived by the owner on Jun 3, 2021. It is now read-only.

Commit

Permalink
[Android] Add support for screen rotation (#2867)
Browse files Browse the repository at this point in the history
  • Loading branch information
katherine95s authored and YorkShen committed Aug 30, 2019
1 parent 1f54d46 commit 6552002
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 0 deletions.
9 changes: 9 additions & 0 deletions android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
12 changes: 12 additions & 0 deletions android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;


Expand Down Expand Up @@ -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);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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<String, String> styles) {
WXComponent component = WXSDKManager.getInstance().getWXRenderManager().getWXComponent(instanceId, ref);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);


}
8 changes: 8 additions & 0 deletions weex_core/Source/android/wrap/wx_bridge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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) {
Expand Down
18 changes: 18 additions & 0 deletions weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 6552002

Please sign in to comment.