* [android] Use linkedHashMap instead of HashMap

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

Branch: refs/heads/0.16-dev
Commit: b96d92d84bf99a661770897c9b3f4d6d14757750
Parents: cc49764
Author: YorkShen <shenyua...@gmail.com>
Authored: Fri Jul 28 14:26:09 2017 +0800
Committer: YorkShen <shenyua...@gmail.com>
Committed: Fri Jul 28 14:26:09 2017 +0800

----------------------------------------------------------------------
 .../weex/ui/animation/WXAnimationBean.java      | 32 ++++++++++++--------
 1 file changed, 20 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b96d92d8/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java
index d83b85a..f5f0d36 100644
--- 
a/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationBean.java
@@ -41,6 +41,7 @@ import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 public class WXAnimationBean {
 
@@ -80,7 +81,9 @@ public class WXAnimationBean {
     private static final String ZERO = "0%";
     private static final String PX = "px";
     private static final String DEG = "deg";
-    public static Map<String, List<Property<View,Float>>> wxToAndroidMap = new 
HashMap<>();
+    public static Map<String, List<Property<View,Float>>> wxToAndroidMap = new 
ArrayMap<>();
+    private static Map<Property<View, Float>, Float> defaultMap= new 
ArrayMap<>();
+
 
     static {
       wxToAndroidMap.put(WX_TRANSLATE, Arrays.asList
@@ -95,6 +98,13 @@ public class WXAnimationBean {
       wxToAndroidMap.put(WX_SCALE_Y, Collections.singletonList(View.SCALE_Y));
       wxToAndroidMap.put(Name.PERSPECTIVE, 
Collections.singletonList(CameraDistanceProperty.getInstance()));
       wxToAndroidMap = Collections.unmodifiableMap(wxToAndroidMap);
+      defaultMap.put(View.TRANSLATION_X, 0f);
+      defaultMap.put(View.TRANSLATION_Y, 0f);
+      defaultMap.put(View.SCALE_X, 1f);
+      defaultMap.put(View.SCALE_Y, 1f);
+      defaultMap.put(View.ROTATION, 0f);
+      defaultMap.put(View.ROTATION_X, 0f);
+      defaultMap.put(View.ROTATION_Y, 0f);
     }
 
     public String opacity;
@@ -103,7 +113,7 @@ public class WXAnimationBean {
     public String height;
     public String transform;
     public String transformOrigin;
-    private Map<Property<View, Float>, Float> transformMap = new HashMap<>();
+    private Map<Property<View, Float>, Float> transformMap = new 
LinkedHashMap<>();
     private Pair<Float, Float> pivot;
     private List<PropertyValuesHolder> holders=new LinkedList<>();
     private float cameraDistance = Float.MAX_VALUE;
@@ -300,14 +310,12 @@ public class WXAnimationBean {
       return WXUtils.fastGetFloat(percent, precision) / 100 * unit;
     }
 
-    private static @NonNull Map<Property<View, Float>, Float> 
createDefaultTransform(){
-      Map<Property<View, Float>, Float> defaultMap= new ArrayMap<>(5);
-      defaultMap.put(View.TRANSLATION_X, 0f);
-      defaultMap.put(View.TRANSLATION_Y, 0f);
-      defaultMap.put(View.SCALE_X, 1f);
-      defaultMap.put(View.SCALE_Y, 1f);
-      defaultMap.put(View.ROTATION, 0f);
-      return defaultMap;
+    private void resetToDefaultIfAbsent() {
+      for (Entry<Property<View, Float>, Float> entry : defaultMap.entrySet()) {
+        if (!transformMap.containsKey(entry.getKey())) {
+          transformMap.put(entry.getKey(), entry.getValue());
+        }
+      }
     }
 
     public @Nullable Pair<Float, Float> getPivot() {
@@ -317,9 +325,9 @@ public class WXAnimationBean {
     public void init(@Nullable String transformOrigin,@Nullable String 
rawTransform,
                      final int width, final int height,int viewportW){
       pivot = parsePivot(transformOrigin,width,height,viewportW);
-      transformMap = createDefaultTransform();
       transformMap.putAll(parseTransForm(rawTransform,width,height,viewportW));
-      if(transformMap.containsKey(CameraDistanceProperty.getInstance())){
+      resetToDefaultIfAbsent();
+      if (transformMap.containsKey(CameraDistanceProperty.getInstance())) {
         cameraDistance = 
transformMap.remove(CameraDistanceProperty.getInstance());
       }
       initHolders();

Reply via email to