OSDN Git Service

Resolve color xml attributes properly. [DO NOT MERGE]
authorDeepanshu Gupta <deepanshu@google.com>
Sat, 9 Aug 2014 21:14:45 +0000 (14:14 -0700)
committerDeepanshu Gupta <deepanshu@google.com>
Tue, 26 Aug 2014 00:27:57 +0000 (00:27 +0000)
Color attributes were not being converted to int properly. The
conversion to int was a simple string to int using base 16. This change
resolves the colors as per #RGB, #ARGB, #RRGGBB or #AARRGGBB format
depending on the length of the attribute. All values that begin with '#'
are treated as colors.

Bug: http://b.android.com/73845
Change-Id: I8ad089b821af1e290b9b95771b50213fe2fdd784
(cherry picked from commit 81564dfe60020fa977d39d168f682e9d61825660)

tools/layoutlib/bridge/src/android/util/BridgeXmlPullAttributes.java

index 6ac5b02..691339e 100644 (file)
@@ -22,6 +22,7 @@ import com.android.internal.util.XmlUtils;
 import com.android.layoutlib.bridge.Bridge;
 import com.android.layoutlib.bridge.BridgeConstants;
 import com.android.layoutlib.bridge.android.BridgeContext;
+import com.android.layoutlib.bridge.impl.ResourceHelper;
 import com.android.resources.ResourceType;
 
 import org.xmlpull.v1.XmlPullParser;
@@ -210,6 +211,9 @@ public class BridgeXmlPullAttributes extends XmlPullAttributes {
                 value = r.getValue();
             }
 
+            if (value.charAt(0) == '#') {
+                return ResourceHelper.getColor(value);
+            }
             return XmlUtils.convertValueToInt(value, defaultValue);
         }