Home | History | Annotate | Download | only in res
      1 package com.xtremelabs.robolectric.res;
      2 
      3 import org.w3c.dom.Node;
      4 public class DimenResourceLoader extends XpathResourceXmlLoader implements ResourceValueConverter {
      5 
      6     private static final String[] UNITS = { "dp", "dip", "px", "sp", "mm" };
      7 
      8     private ResourceReferenceResolver<Float> dimenResolver = new ResourceReferenceResolver<Float>("dimen");
      9 
     10     public DimenResourceLoader(ResourceExtractor resourceExtractor) {
     11         super(resourceExtractor, "/resources/dimen");
     12     }
     13 
     14     public float getValue(int resourceId) {
     15         return dimenResolver.getValue(resourceExtractor.getResourceName(resourceId));
     16     }
     17 
     18     public float getValue(String resourceName, boolean isSystem) {
     19         return getValue(resourceExtractor.getResourceId(resourceName, isSystem));
     20     }
     21 
     22     @Override
     23     protected void processNode(Node node, String name, boolean isSystem) {
     24         dimenResolver.processResource(name, node.getTextContent(), this, isSystem);
     25     }
     26 
     27     @Override
     28     public Object convertRawValue(String rawValue) {
     29     	int end = rawValue.length();
     30     	for ( int i = 0; i < UNITS.length; i++ ) {
     31     		int index = rawValue.indexOf(UNITS[i]);
     32     		if ( index >= 0 && end > index ) {
     33     			end = index;
     34     		}
     35     	}
     36 
     37         return Float.parseFloat(rawValue.substring(0, end));
     38     }
     39 }
     40 
     41