2012-07-31 14 views
24

Jak przechowywać ułamkowe wartości, takie jak 3.1416 w zasobach? Co napisać w XML i jak go odzyskać w kodzie Java?Jak korzystać z Resources.getFraction()?

Dokumentacja dla getFraction() stany:

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

Odzyskaj jednostkę ułamkowej dla danego ID zasobów.

Parametry
base wartość bazowa tej frakcji. Innymi słowy, standardowa frakcja jest mnożona przez tę wartość.
pbase Główna wartość bazowa tej frakcji. Innymi słowy, ułamek macierzysty (nn% p) jest mnożony przez tę wartość przez .

Zwraca
Atrybut wartość ułamkową pomnożonej przez wartość odpowiednie podstawy

This answer pokazuje prosty przykład procentowe bez wchodzenia w szczegóły co argumenty myśli.

Odpowiedz

33

określić jako frakcje w XML tak:

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

przypadku 5% byłoby 0.05 kiedy rzeczywiście używany.

Następnie:

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

Jak widać, w zależności od rodzaju frakcji, że getFraction metoda wielokrotności Wartości odpowiednio. Jeśli podasz ułamek macierzysty (%p), użyje on drugiego argumentu (pbase), ignorując pierwszy. Z drugiej strony, określając normalny ułamek, używany jest tylko argument base, mnożąc ułamek przez to.