You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ac...@apache.org on 2018/03/29 03:06:18 UTC

incubator-weex git commit: [WEEX-268][Android] add updateLayout function close #1089

Repository: incubator-weex
Updated Branches:
  refs/heads/master 45ec92c81 -> 81c8e4afc


[WEEX-268][Android] add updateLayout function
close #1089

[WXTransition] fix css transition problem


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

Branch: refs/heads/master
Commit: 81c8e4afc024fa475262f9eca928ce1466ba60c0
Parents: 45ec92c
Author: Rowandjj <rj...@gmail.com>
Authored: Tue Mar 27 16:56:55 2018 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Mar 29 11:05:21 2018 +0800

----------------------------------------------------------------------
 .../weex/dom/transition/WXTransition.java       | 150 +++++++++++--------
 1 file changed, 88 insertions(+), 62 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/81c8e4af/android/sdk/src/main/java/com/taobao/weex/dom/transition/WXTransition.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/transition/WXTransition.java b/android/sdk/src/main/java/com/taobao/weex/dom/transition/WXTransition.java
index 5684b38..8c32c71 100644
--- a/android/sdk/src/main/java/com/taobao/weex/dom/transition/WXTransition.java
+++ b/android/sdk/src/main/java/com/taobao/weex/dom/transition/WXTransition.java
@@ -504,12 +504,12 @@ public class WXTransition {
             }
             break;
             case Constants.Name.PADDING_LEFT:{
-                holder = PropertyValuesHolder.ofFloat(Constants.Name.TOP,  domObject.getPadding().get(Spacing.LEFT),
+                holder = PropertyValuesHolder.ofFloat(Constants.Name.PADDING_LEFT,  domObject.getPadding().get(Spacing.LEFT),
                         WXViewUtils.getRealPxByWidth(WXUtils.getFloatByViewport(value, domObject.getViewPortWidth()), domObject.getViewPortWidth()));
             }
             break;
             case Constants.Name.PADDING_RIGHT:{
-                holder = PropertyValuesHolder.ofFloat(Constants.Name.TOP,  domObject.getPadding().get(Spacing.RIGHT),
+                holder = PropertyValuesHolder.ofFloat(Constants.Name.PADDING_RIGHT,  domObject.getPadding().get(Spacing.RIGHT),
                         WXViewUtils.getRealPxByWidth(WXUtils.getFloatByViewport(value, domObject.getViewPortWidth()), domObject.getViewPortWidth()));
             }
             break;
@@ -530,66 +530,7 @@ public class WXTransition {
                 PropertyValuesHolder holders[] = animation.getValues();
                 for(PropertyValuesHolder holder : holders){
                     String property =  holder.getPropertyName();
-                    switch (property){
-                        case Constants.Name.WIDTH:{
-                            domObject.setStyleWidth((Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.HEIGHT:{
-                            domObject.setStyleHeight((Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.MARGIN_TOP:{
-                            domObject.setMargin(Spacing.TOP, (Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.MARGIN_LEFT:{
-                            domObject.setMargin(Spacing.LEFT, (Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.MARGIN_RIGHT:{
-                            domObject.setMargin(Spacing.RIGHT, (Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.MARGIN_BOTTOM:{
-                            domObject.setMargin(Spacing.BOTTOM, (Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.LEFT:{
-                            domObject.setPositionLeft((Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.RIGHT:{
-                            domObject.setPositionRight((Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.BOTTOM:{
-                            domObject.setPositionBottom((Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.TOP:{
-                            domObject.setPositionTop((Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.PADDING_TOP:{
-                            domObject.setPadding(Spacing.TOP, (Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.PADDING_BOTTOM:{
-                            domObject.setPadding(Spacing.BOTTOM, (Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.PADDING_LEFT:{
-                            domObject.setPadding(Spacing.LEFT, (Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        case Constants.Name.PADDING_RIGHT:{
-                            domObject.setPadding(Spacing.RIGHT, (Float) animation.getAnimatedValue(property));
-                        }
-                        break;
-                        default:
-                            break;
-                    }
+                    updateShadowLayoutPropertyByName(domObject,property,(Float)animation.getAnimatedValue(property));
                 }
 
                 DOMActionContext domActionContext = WXSDKManager.getInstance().getWXDomManager().getDomContext(domObject.getDomContext().getInstanceId());
@@ -632,6 +573,91 @@ public class WXTransition {
         layoutValueAnimator.start();
     }
 
+    private static void updateShadowLayoutPropertyByName(WXDomObject domObject, String propertyName, float propertyValue) {
+        if(domObject == null || TextUtils.isEmpty(propertyName)) {
+            return;
+        }
+        switch (propertyName){
+            case Constants.Name.WIDTH:{
+                domObject.setStyleWidth(propertyValue);
+            }
+            break;
+            case Constants.Name.HEIGHT:{
+                domObject.setStyleHeight(propertyValue);
+            }
+            break;
+            case Constants.Name.MARGIN_TOP:{
+                domObject.setMargin(Spacing.TOP, propertyValue);
+            }
+            break;
+            case Constants.Name.MARGIN_LEFT:{
+                domObject.setMargin(Spacing.LEFT, propertyValue);
+            }
+            break;
+            case Constants.Name.MARGIN_RIGHT:{
+                domObject.setMargin(Spacing.RIGHT, propertyValue);
+            }
+            break;
+            case Constants.Name.MARGIN_BOTTOM:{
+                domObject.setMargin(Spacing.BOTTOM, propertyValue);
+            }
+            break;
+            case Constants.Name.LEFT:{
+                domObject.setPositionLeft(propertyValue);
+            }
+            break;
+            case Constants.Name.RIGHT:{
+                domObject.setPositionRight(propertyValue);
+            }
+            break;
+            case Constants.Name.BOTTOM:{
+                domObject.setPositionBottom(propertyValue);
+            }
+            break;
+            case Constants.Name.TOP:{
+                domObject.setPositionTop(propertyValue);
+            }
+            break;
+            case Constants.Name.PADDING_TOP:{
+                domObject.setPadding(Spacing.TOP, propertyValue);
+            }
+            break;
+            case Constants.Name.PADDING_BOTTOM:{
+                domObject.setPadding(Spacing.BOTTOM, propertyValue);
+            }
+            break;
+            case Constants.Name.PADDING_LEFT:{
+                domObject.setPadding(Spacing.LEFT, propertyValue);
+            }
+            break;
+            case Constants.Name.PADDING_RIGHT:{
+                domObject.setPadding(Spacing.RIGHT, propertyValue);
+            }
+            break;
+            default:
+                break;
+        }
+    }
+
+    @SuppressWarnings("unused")
+    public static void asynchronouslyUpdateLayout(WXComponent component, String propertyName, float propertyValue) {
+        if(component == null || TextUtils.isEmpty(propertyName)) {
+            return;
+        }
+        String instanceId = component.getInstanceId();
+        DOMActionContext domActionContext = WXSDKManager.getInstance().getWXDomManager().getDomContext(instanceId);
+        if(domActionContext == null){
+            return;
+        }
+        WXDomObject domObject = domActionContext.getDomByRef(component.getRef());
+        if(domObject == null || TextUtils.isEmpty(instanceId)) {
+            return;
+        }
+        updateShadowLayoutPropertyByName(domObject, propertyName, propertyValue);
+        domActionContext.markDirty();
+        WXSDKManager.getInstance().getWXDomManager().sendEmptyMessageDelayed(WXDomHandler.MsgType.WX_DOM_TRANSITION_BATCH, 0);
+    }
+
     private synchronized void onTransitionAnimationEnd(){
         if(duration > 0){
             if(transitionEndEvent != null){