Repository: incubator-weex
Updated Branches:
  refs/heads/master 556cc0683 -> ebd058eb1


* [android] fix flicker caused by coexistence of box-shadow and border-radius


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

Branch: refs/heads/master
Commit: e777ac8dd8f02805c5adee19364d87ee5c40bf9d
Parents: 045e838
Author: misakuo <misa...@apache.org>
Authored: Tue Oct 10 18:20:24 2017 +0800
Committer: misakuo <misa...@apache.org>
Committed: Tue Oct 10 18:20:24 2017 +0800

----------------------------------------------------------------------
 .../taobao/weex/ui/component/WXComponent.java   | 25 +++++++-------------
 .../taobao/weex/ui/component/WXVContainer.java  | 25 +++++++++++++++++++-
 2 files changed, 33 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e777ac8d/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 d801290..74e4db4 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
@@ -759,22 +759,9 @@ public abstract class  WXComponent<T extends View> 
implements IWXObject, IWXActi
       case Constants.Name.BORDER_TOP_RIGHT_RADIUS:
       case Constants.Name.BORDER_BOTTOM_RIGHT_RADIUS:
       case Constants.Name.BORDER_BOTTOM_LEFT_RADIUS:
-        final Float radius = WXUtils.getFloat(param,null);
-        final String finalKey = key;
+        Float radius = WXUtils.getFloat(param,null);
         if (radius != null) {
-          if (this instanceof WXDiv && mHost != null) {
-            /* Hacked by moxun
-               Set border radius on ViewGroup will cause the Overlay to be cut 
and don't know why
-               Delay setting border radius can avoid the problem, and don't 
know why too, dog science…… */
-            mHost.postDelayed(new Runnable() {
-              @Override
-              public void run() {
-                setBorderRadius(finalKey, radius);
-              }
-            }, 64);
-          } else {
-            setBorderRadius(finalKey, radius);
-          }
+          setBorderRadius(key, radius);
         }
         return true;
       case Constants.Name.BORDER_WIDTH:
@@ -898,7 +885,13 @@ public abstract class  WXComponent<T extends View> 
implements IWXObject, IWXActi
           }
         }
       }
-      BoxShadowUtil.setBoxShadow(mHost, boxShadow.toString(), radii, 
getInstance().getInstanceViewPortWidth());
+
+      View target = mHost;
+      if (this instanceof WXVContainer) {
+        target = ((WXVContainer) this).getBoxShadowHost();
+      }
+
+      BoxShadowUtil.setBoxShadow(target, boxShadow.toString(), radii, 
getInstance().getInstanceViewPortWidth());
     } else {
       WXLogUtils.w("Can not resolve styles");
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e777ac8d/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 43b45a7..4570729 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
@@ -18,15 +18,19 @@
  */
 package com.taobao.weex.ui.component;
 
+import android.content.Context;
 import android.content.Intent;
-import android.util.Pair;
 import android.support.annotation.Nullable;
+import android.util.Pair;
 import android.view.Menu;
 import android.view.View;
 import android.view.ViewGroup;
+
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.common.Constants;
 import com.taobao.weex.dom.WXDomObject;
+import com.taobao.weex.utils.WXViewUtils;
+
 import java.util.ArrayList;
 
 /**
@@ -36,6 +40,7 @@ public abstract class WXVContainer<T extends ViewGroup> 
extends WXComponent<T> {
 
   private static final String TAG="WXVContainer";
   protected ArrayList<WXComponent> mChildren = new ArrayList<>();
+  private BoxShadowHost mBoxShadowHost;
 
   @Deprecated
   public WXVContainer(WXSDKInstance instance, WXDomObject dom, WXVContainer 
parent, String instanceId, boolean isLazy) {
@@ -474,4 +479,22 @@ public abstract class WXVContainer<T extends ViewGroup> 
extends WXComponent<T> {
   /********************************
    *  end hook Activity life cycle callback
    ********************************************************/
+
+  public @Nullable View getBoxShadowHost() {
+    if (mBoxShadowHost == null) {
+      mBoxShadowHost = new BoxShadowHost(getContext());
+      WXViewUtils.setBackGround(mBoxShadowHost, null);
+      mBoxShadowHost.setLayoutParams(new 
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
ViewGroup.LayoutParams.MATCH_PARENT));
+      getHostView().addView(mBoxShadowHost);
+    }
+    getHostView().removeView(mBoxShadowHost);
+    getHostView().addView(mBoxShadowHost);
+    return mBoxShadowHost;
+  }
+
+  private class BoxShadowHost extends View {
+    public BoxShadowHost(Context context) {
+      super(context);
+    }
+  }
 }

Reply via email to