2012-07-31 30 views
24

Come si memorizza un valore frazionario come 3.1416 nelle risorse? Cosa scrivere nell'XML e come recuperarlo nel codice Java?Come si usa Resources.getFraction()?

La documentazione per getFraction() stati:

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

Recuperare un'unità di frazione per un particolare ID di risorsa.

Parametri
base il valore base di questa frazione. In altre parole, una frazione standard viene moltiplicata per questo valore.
pbase Il valore base genitore di questa frazione. In altre parole, una frazione genitore (nn% p) viene moltiplicata per con questo valore.

ritorni
attributo valore frazionario moltiplicato per il valore base appropriata

This answer mostra un semplice esempio di percentuali senza entrare nei dettagli di ciò che significano argomenti.

risposta

33

Si specifica frazioni in XML come così:

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

Dove 5% sarebbe 0.05 quando effettivamente utilizzato.

Poi:

// 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); 

Come si può vedere, a seconda del tipo di frazione, i getFraction metodo dei multipli, i valori di conseguenza. Se si specifica una frazione genitore (%p), utilizza il secondo argomento (pbase), ignorando il primo. D'altra parte, specificando una frazione normale, viene utilizzato solo l'argomento base, moltiplicando la frazione di questo.