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 2018/05/07 07:53:00 UTC

[27/52] [abbrv] incubator-weex git commit: * [android] Add stacksize-limit for overdraw.

* [android] Add stacksize-limit for overdraw.


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/cddba7fe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/cddba7fe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/cddba7fe

Branch: refs/heads/master
Commit: cddba7fe326e7471d00cb49fc2c34dc31d24ad75
Parents: 0c9dfa3
Author: miomin <69...@qq.com>
Authored: Sat Apr 28 17:54:17 2018 +0800
Committer: YorkShen <sh...@gmail.com>
Committed: Mon May 7 15:52:08 2018 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/common/Constants.java  |  2 ++
 .../taobao/weex/ui/component/WXComponent.java   | 10 ++++++
 .../com/taobao/weex/ui/component/WXDiv.java     | 28 ++++++++++++++++
 .../taobao/weex/ui/component/WXVContainer.java  |  3 ++
 .../com/taobao/weex/ui/view/WXFrameLayout.java  | 34 ++++++++++++--------
 5 files changed, 64 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/cddba7fe/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
index 8f4b440..cd50b3f 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
@@ -189,6 +189,8 @@ public class Constants {
     String ARIA_HIDDEN = "ariaHidden";
     String ROLE = "role";
 
+    String STACKSIZE_LIMIT = "stacksizeLimit";
+
     String DIRECTION = "direction";
     String RTL = "rtl";
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/cddba7fe/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index 55fd843..4f28a7f 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -170,6 +170,16 @@ public abstract class WXComponent<T extends View> extends WXBasicComponent imple
 
   private boolean waste = false;
 
+  private boolean hasStackSizeLimit = false;
+
+  protected void setStackSizeLimit(boolean hasStackSizeLimit) {
+    this.hasStackSizeLimit = hasStackSizeLimit;
+  }
+
+  public boolean isStackSizeLimit() {
+    return hasStackSizeLimit;
+  }
+
   private ContentBoxMeasurement contentBoxMeasurement;
   private WXTransition mTransition;
   private GraphicSize mPseudoResetGraphicSize;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/cddba7fe/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java
index b9f5ada..b485db5 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java
@@ -20,8 +20,12 @@ package com.taobao.weex.ui.component;
 
 import android.content.Context;
 import android.support.annotation.NonNull;
+import android.text.TextUtils;
+import android.widget.ImageView;
+
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.annotation.Component;
+import com.taobao.weex.common.Constants;
 import com.taobao.weex.ui.ComponentCreator;
 import com.taobao.weex.ui.action.BasicComponentData;
 import com.taobao.weex.ui.flat.FlatComponent;
@@ -114,4 +118,28 @@ public class WXDiv extends WidgetContainer<WXFrameLayout> implements FlatCompone
   public boolean isVirtualComponent() {
     return !promoteToView(true);
   }
+
+  @WXComponentProp(name = Constants.Name.STACKSIZE_LIMIT)
+  public void setStackSizeLimitModle(String stackSizeLimit) {
+    setStackSizeLimit(getStackSizeLimit(stackSizeLimit));
+  }
+
+  private boolean getStackSizeLimit(String stackSizeLimit) {
+    boolean ret = false;
+    if (TextUtils.isEmpty(stackSizeLimit)) {
+      return ret;
+    }
+
+    switch (stackSizeLimit) {
+      case "true":
+        ret = true;
+        break;
+      case "false":
+        ret = false;
+        break;
+      default:
+        break;
+    }
+    return ret;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/cddba7fe/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
index 3fb3915..346387c 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
@@ -268,6 +268,9 @@ public abstract class WXVContainer<T extends ViewGroup> extends WXComponent<T> {
     } else {
       mChildren.add(index, child);
     }
+
+    if (isStackSizeLimit())
+      child.setStackSizeLimit(true);
   }
 
   public final int indexOf(WXComponent comp) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/cddba7fe/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
index fce7dcc..56dc205 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
@@ -96,20 +96,28 @@ public class WXFrameLayout extends FrameLayout implements WXGestureObservable,IR
 
   @Override
   protected void dispatchDraw(Canvas canvas) {
-    try {
-      if (mWidgets != null) {
-        canvas.save();
-        canvas.translate(getPaddingLeft(), getPaddingTop());
-        for (Widget widget : mWidgets) {
-          widget.draw(canvas);
-        }
-        canvas.restore();
-      } else {
-        WXViewUtils.clipCanvasWithinBorderBox(this, canvas);
-        super.dispatchDraw(canvas);
+    if (getComponent() != null && getComponent().isStackSizeLimit()) {
+      dispatchDrawInterval(canvas);
+    } else {
+      try {
+        dispatchDrawInterval(canvas);
+      }catch (Throwable e){
+        WXLogUtils.e("FlatGUI Crashed when dispatchDraw", WXLogUtils.getStackTrace(e));
       }
-    }catch (Throwable e){
-      WXLogUtils.e("FlatGUI Crashed when dispatchDraw", WXLogUtils.getStackTrace(e));
+    }
+  }
+
+  private void dispatchDrawInterval(Canvas canvas) {
+    if (mWidgets != null) {
+      canvas.save();
+      canvas.translate(getPaddingLeft(), getPaddingTop());
+      for (Widget widget : mWidgets) {
+        widget.draw(canvas);
+      }
+      canvas.restore();
+    } else {
+      WXViewUtils.clipCanvasWithinBorderBox(this, canvas);
+      super.dispatchDraw(canvas);
     }
   }
 }