2012-07-31 27 views
24

¿Cómo almaceno un valor fraccionario como 3.1416 en recursos? ¿Qué escribir en el XML y cómo recuperarlo en código Java?¿Cómo se usa Resources.getFraction()?

La documentación para getFraction() estados:

public float getFraction (int id, int base, int pbase)

recuperar una unidad fraccionaria para un ID de recurso en particular.

Parámetros
base el valor de base de esta fracción. En otras palabras, una fracción estándar se multiplica por este valor.
pbase El valor base principal de esta fracción. En otras palabras, una fracción principal (nn% p) se multiplica por por este valor.

devoluciones
atributo de valor fraccionario multiplicado por el valor base apropiada

This answer muestra un ejemplo sencillo de porcentajes sin entrar en los detalles de lo que significan los argumentos.

Respuesta

33

Se especifica fracciones en XML como así:

<item name="fraction" type="fraction">5%</item> 
    <item name="parent_fraction" type="fraction">2%p</item> 

Dónde 5% sería de 0,05 cuando se usa en realidad.

continuación:

// 0.05f 
getResources().getFraction(R.fraction.fraction, 1, 1); 
// 0.02f 
getResources().getFraction(R.fraction.parent_fraction, 1, 1); 
// 0.10f 
getResources().getFraction(R.fraction.fraction, 2, 1); 
// 0.10f 
getResources().getFraction(R.fraction.fraction, 2, 2); 
// 0.04f 
getResources().getFraction(R.fraction.parent_fraction, 1, 2); 
// 0.04f 
getResources().getFraction(R.fraction.parent_fraction, 2, 2); 

Como se puede ver, en función del tipo de fracción, los múltiplos getFraction método de los valores en consecuencia. Si especifica una fracción padre (%p), utiliza el segundo argumento (pbase), ignorando el primero. Por otro lado, al especificar una fracción normal, solo se usa el argumento base, multiplicando la fracción por esto.