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