当解析的出的style中包含了 transform 属性时,绑定的Component就会对动画执行单独处理

Transform设置

具体位置:GraphicActionAbstractAddElement#createComponent

  1. //动画的处理
  2. if(mStyle != null && mStyle.containsKey(Constants.Name.TRANSFORM) && component.getTransition() == null) {
  3. Map<String, Object> animationMap = new ArrayMap<>(2);
  4. //记录js中transform的值,真正动画的执行的数组,如[rotate(-90deg) scale(1.2)]
  5. animationMap.put(Constants.Name.TRANSFORM, mStyle.get(Constants.Name.TRANSFORM));
  6. //js中transformOrigin对应的值,一般是 left,top,right,bottom 就是动画执行时的锚点
  7. animationMap
  8. .put(Constants.Name.TRANSFORM_ORIGIN, mStyle.get(Constants.Name.TRANSFORM_ORIGIN));
  9. component.addAnimationForElement(animationMap);
  10. }

�Transition设置

具体位置GraphicActionCreateBody#构造函数

  1. /**
  2. * Style中
  3. * transition-property: right, left, top, bottom, width, height, backgroundColor, opacity, transform;
  4. * transition-duration: 0.5s;
  5. * transition-delay: 0s;
  6. * transition-timing-function: cubic-bezier(0.58, 0.1, 0.42, 1.0);
  7. * 这些属性的配置,当只有全部配置transition-property属性时,做相应的动画才不会那么突兀,否则都是瞬间变化,无过程可言
  8. * 具体可以参考 vue/examples/transition.vue 的使用明细
  9. */
  10. component.setTransition(WXTransition.fromMap(component.getStyles(), component));