Fields Summary |
---|
public static final int | TYPE_NULLThe value contains no data. |
public static final int | TYPE_REFERENCEThe data field holds a resource identifier. |
public static final int | TYPE_ATTRIBUTEThe data field holds an attribute resource
identifier (referencing an attribute in the current theme
style, not a resource entry). |
public static final int | TYPE_STRINGThe string field holds string data. In addition, if
data is non-zero then it is the string block
index of the string and assetCookie is the set of
assets the string came from. |
public static final int | TYPE_FLOATThe data field holds an IEEE 754 floating point number. |
public static final int | TYPE_DIMENSIONThe data field holds a complex number encoding a
dimension value. |
public static final int | TYPE_FRACTIONThe data field holds a complex number encoding a fraction
of a container. |
public static final int | TYPE_FIRST_INTIdentifies the start of plain integer values. Any type value
from this to {@link #TYPE_LAST_INT} means the
data field holds a generic integer value. |
public static final int | TYPE_INT_DECThe data field holds a number that was
originally specified in decimal. |
public static final int | TYPE_INT_HEXThe data field holds a number that was
originally specified in hexadecimal (0xn). |
public static final int | TYPE_INT_BOOLEANThe data field holds 0 or 1 that was originally
specified as "false" or "true". |
public static final int | TYPE_FIRST_COLOR_INTIdentifies the start of integer values that were specified as
color constants (starting with '#'). |
public static final int | TYPE_INT_COLOR_ARGB8The data field holds a color that was originally
specified as #aarrggbb. |
public static final int | TYPE_INT_COLOR_RGB8The data field holds a color that was originally
specified as #rrggbb. |
public static final int | TYPE_INT_COLOR_ARGB4The data field holds a color that was originally
specified as #argb. |
public static final int | TYPE_INT_COLOR_RGB4The data field holds a color that was originally
specified as #rgb. |
public static final int | TYPE_LAST_COLOR_INTIdentifies the end of integer values that were specified as color
constants. |
public static final int | TYPE_LAST_INTIdentifies the end of plain integer values. |
public static final int | COMPLEX_UNIT_SHIFTComplex data: bit location of unit information. |
public static final int | COMPLEX_UNIT_MASKComplex data: mask to extract unit information (after shifting by
{@link #COMPLEX_UNIT_SHIFT}). This gives us 16 possible types, as
defined below. |
public static final int | COMPLEX_UNIT_PX{@link #TYPE_DIMENSION} complex unit: Value is raw pixels. |
public static final int | COMPLEX_UNIT_DIP{@link #TYPE_DIMENSION} complex unit: Value is Device Independent
Pixels. |
public static final int | COMPLEX_UNIT_SP{@link #TYPE_DIMENSION} complex unit: Value is a scaled pixel. |
public static final int | COMPLEX_UNIT_PT{@link #TYPE_DIMENSION} complex unit: Value is in points. |
public static final int | COMPLEX_UNIT_IN{@link #TYPE_DIMENSION} complex unit: Value is in inches. |
public static final int | COMPLEX_UNIT_MM{@link #TYPE_DIMENSION} complex unit: Value is in millimeters. |
public static final int | COMPLEX_UNIT_FRACTION{@link #TYPE_FRACTION} complex unit: A basic fraction of the overall
size. |
public static final int | COMPLEX_UNIT_FRACTION_PARENT{@link #TYPE_FRACTION} complex unit: A fraction of the parent size. |
public static final int | COMPLEX_RADIX_SHIFTComplex data: where the radix information is, telling where the decimal
place appears in the mantissa. |
public static final int | COMPLEX_RADIX_MASKComplex data: mask to extract radix information (after shifting by
{@link #COMPLEX_RADIX_SHIFT}). This give us 4 possible fixed point
representations as defined below. |
public static final int | COMPLEX_RADIX_23p0Complex data: the mantissa is an integral number -- i.e., 0xnnnnnn.0 |
public static final int | COMPLEX_RADIX_16p7Complex data: the mantissa magnitude is 16 bits -- i.e, 0xnnnn.nn |
public static final int | COMPLEX_RADIX_8p15Complex data: the mantissa magnitude is 8 bits -- i.e, 0xnn.nnnn |
public static final int | COMPLEX_RADIX_0p23Complex data: the mantissa magnitude is 0 bits -- i.e, 0x0.nnnnnn |
public static final int | COMPLEX_MANTISSA_SHIFTComplex data: bit location of mantissa information. |
public static final int | COMPLEX_MANTISSA_MASKComplex data: mask to extract mantissa information (after shifting by
{@link #COMPLEX_MANTISSA_SHIFT}). This gives us 23 bits of precision;
the top bit is the sign. |
public static final int | DENSITY_DEFAULTIf {@link #density} is equal to this value, then the density should be
treated as the system's default density value: {@link DisplayMetrics#DEFAULT_DENSITY}. |
public int | typeThe type held by this value, as defined by the constants here.
This tells you how to interpret the other fields in the object. |
public CharSequence | stringIf the value holds a string, this is it. |
public int | dataBasic data in the value, interpreted according to {@link #type} |
public int | assetCookieAdditional information about where the value came from; only
set for strings. |
public int | resourceIdIf Value came from a resource, this holds the corresponding resource id. |
public int | changingConfigurationsIf Value came from a resource, these are the configurations for which
its contents can change. |
public int | densityIf the Value came from a resource, this holds the corresponding pixel density. |
private static final float | MANTISSA_MULT |
private static final float[] | RADIX_MULTS |
private static final String[] | DIMENSION_UNIT_STRS |
private static final String[] | FRACTION_UNIT_STRS |
Methods Summary |
---|
public static float | applyDimension(int unit, float value, DisplayMetrics metrics)Converts an unpacked complex data value holding a dimension to its final floating
point value. The two parameters unit and value
are as in {@link #TYPE_DIMENSION}.
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
|
public final java.lang.CharSequence | coerceToString()Regardless of the actual type of the value, try to convert it to a
string value. For example, a color type will be converted to a
string of the form #aarrggbb.
int t = type;
if (t == TYPE_STRING) {
return string;
}
return coerceToString(t, data);
|
public static final java.lang.String | coerceToString(int type, int data)Perform type conversion as per {@link #coerceToString()} on an
explicitly supplied type and data.
switch (type) {
case TYPE_NULL:
return null;
case TYPE_REFERENCE:
return "@" + data;
case TYPE_ATTRIBUTE:
return "?" + data;
case TYPE_FLOAT:
return Float.toString(Float.intBitsToFloat(data));
case TYPE_DIMENSION:
return Float.toString(complexToFloat(data)) + DIMENSION_UNIT_STRS[
(data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK];
case TYPE_FRACTION:
return Float.toString(complexToFloat(data)*100) + FRACTION_UNIT_STRS[
(data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK];
case TYPE_INT_HEX:
return "0x" + Integer.toHexString(data);
case TYPE_INT_BOOLEAN:
return data != 0 ? "true" : "false";
}
if (type >= TYPE_FIRST_COLOR_INT && type <= TYPE_LAST_COLOR_INT) {
return "#" + Integer.toHexString(data);
} else if (type >= TYPE_FIRST_INT && type <= TYPE_LAST_INT) {
return Integer.toString(data);
}
return null;
|
public static float | complexToDimension(int data, DisplayMetrics metrics)Converts a complex data value holding a dimension to its final floating
point value. The given data must be structured as a
{@link #TYPE_DIMENSION}.
return applyDimension(
(data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK,
complexToFloat(data),
metrics);
|
public static float | complexToDimensionNoisy(int data, DisplayMetrics metrics)
float res = complexToDimension(data, metrics);
System.out.println(
"Dimension (0x" + ((data>>TypedValue.COMPLEX_MANTISSA_SHIFT)
& TypedValue.COMPLEX_MANTISSA_MASK)
+ "*" + (RADIX_MULTS[(data>>TypedValue.COMPLEX_RADIX_SHIFT)
& TypedValue.COMPLEX_RADIX_MASK] / MANTISSA_MULT)
+ ")" + DIMENSION_UNIT_STRS[(data>>COMPLEX_UNIT_SHIFT)
& COMPLEX_UNIT_MASK]
+ " = " + res);
return res;
|
public static int | complexToDimensionPixelOffset(int data, DisplayMetrics metrics)Converts a complex data value holding a dimension to its final value
as an integer pixel offset. This is the same as
{@link #complexToDimension}, except the raw floating point value is
truncated to an integer (pixel) value.
The given data must be structured as a
{@link #TYPE_DIMENSION}.
return (int)applyDimension(
(data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK,
complexToFloat(data),
metrics);
|
public static int | complexToDimensionPixelSize(int data, DisplayMetrics metrics)Converts a complex data value holding a dimension to its final value
as an integer pixel size. This is the same as
{@link #complexToDimension}, except the raw floating point value is
converted to an integer (pixel) value for use as a size. A size
conversion involves rounding the base value, and ensuring that a
non-zero base value is at least one pixel in size.
The given data must be structured as a
{@link #TYPE_DIMENSION}.
final float value = complexToFloat(data);
final float f = applyDimension(
(data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK,
value,
metrics);
final int res = (int)(f+0.5f);
if (res != 0) return res;
if (value == 0) return 0;
if (value > 0) return 1;
return -1;
|
public static float | complexToFloat(int complex)Retrieve the base value from a complex data integer. This uses the
{@link #COMPLEX_MANTISSA_MASK} and {@link #COMPLEX_RADIX_MASK} fields of
the data to compute a floating point representation of the number they
describe. The units are ignored.
return (complex&(TypedValue.COMPLEX_MANTISSA_MASK
<<TypedValue.COMPLEX_MANTISSA_SHIFT))
* RADIX_MULTS[(complex>>TypedValue.COMPLEX_RADIX_SHIFT)
& TypedValue.COMPLEX_RADIX_MASK];
|
public static float | complexToFraction(int data, float base, float pbase)Converts a complex data value holding a fraction to its final floating
point value. The given data must be structured as a
{@link #TYPE_FRACTION}.
switch ((data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK) {
case COMPLEX_UNIT_FRACTION:
return complexToFloat(data) * base;
case COMPLEX_UNIT_FRACTION_PARENT:
return complexToFloat(data) * pbase;
}
return 0;
|
public float | getDimension(DisplayMetrics metrics)Return the data for this value as a dimension. Only use for values
whose type is {@link #TYPE_DIMENSION}.
return complexToDimension(data, metrics);
|
public final float | getFloat()Return the data for this value as a float. Only use for values
whose type is {@link #TYPE_FLOAT}.
/* ------------------------------------------------------------ */
return Float.intBitsToFloat(data);
|
public float | getFraction(float base, float pbase)Return the data for this value as a fraction. Only use for values whose
type is {@link #TYPE_FRACTION}.
return complexToFraction(data, base, pbase);
|
public void | setTo(android.util.TypedValue other)
type = other.type;
string = other.string;
data = other.data;
assetCookie = other.assetCookie;
resourceId = other.resourceId;
density = other.density;
|
public java.lang.String | toString()
StringBuilder sb = new StringBuilder();
sb.append("TypedValue{t=0x").append(Integer.toHexString(type));
sb.append("/d=0x").append(Integer.toHexString(data));
if (type == TYPE_STRING) {
sb.append(" \"").append(string != null ? string : "<null>").append("\"");
}
if (assetCookie != 0) {
sb.append(" a=").append(assetCookie);
}
if (resourceId != 0) {
sb.append(" r=0x").append(Integer.toHexString(resourceId));
}
sb.append("}");
return sb.toString();
|