blob: 5d08ae0de246e8a5db43fe00c61fd82a2c5d8b4e [file] [log] [blame]
package com.xtremelabs.robolectric.res;
import org.w3c.dom.Node;
public class DimenResourceLoader extends XpathResourceXmlLoader implements ResourceValueConverter {
private static final String[] UNITS = { "dp", "dip", "px", "sp", "mm" };
private ResourceReferenceResolver<Float> dimenResolver = new ResourceReferenceResolver<Float>("dimen");
public DimenResourceLoader(ResourceExtractor resourceExtractor) {
super(resourceExtractor, "/resources/dimen");
}
public float getValue(int resourceId) {
return dimenResolver.getValue(resourceExtractor.getResourceName(resourceId));
}
public float getValue(String resourceName, boolean isSystem) {
return getValue(resourceExtractor.getResourceId(resourceName, isSystem));
}
@Override
protected void processNode(Node node, String name, boolean isSystem) {
dimenResolver.processResource(name, node.getTextContent(), this, isSystem);
}
@Override
public Object convertRawValue(String rawValue) {
int end = rawValue.length();
for ( int i = 0; i < UNITS.length; i++ ) {
int index = rawValue.indexOf(UNITS[i]);
if ( index >= 0 && end > index ) {
end = index;
}
}
return Float.parseFloat(rawValue.substring(0, end));
}
}