2013-07-19 9 views
6

W mojej aplikacji w folderze res znajdują się foldery wartości dla różnych urządzeń. NpAndroid: Priorytet wartości

wartości-MDPI
wartościach hdpi
wartości
-V14-V17 Wartości
wartości-W480
wartościach w720

itp

I zastanawiać się, jaki jest priorytet tych folderów dla Androida?

Wyobraźmy sobie kilka urządzeń:

first : 480*800 hdpi v14 
second: 320*480 mdpi v17 
third : 720*1280 hdpi v17 

Co Folder będzie Android wykorzystania dla każdego z nich?

Odpowiedz

8

Możesz znaleźć priorytet folderów zasobów here in this page. Zasadniczo jest używany do obsługi różnych urządzeń i konfiguracji.

Android używa pewnej logiki, aby określić najlepszy, najlepiej dopasowany folder zasobów dla urządzenia. Zostało to wyjaśnione w this documentation page.

Odnośnie zapytania urządzeniami:

  • pierwszy: 480 * 800 hdpi V14 - wartościach hdpi
  • drugie: 320 * 480 MDPI V17 - Wartości-MDPI
  • trzecie: 720 * 1280 hdpi v17 - wartości-w480

Na liście dostarczonej przez Ciebie, values-w480 (devices with lowest width of 480dp, only from API 13) ma najwyższą wartość. Niezależnie od tego, które urządzenie spełnia te kryteria, pobierze zasoby z tego folderu.

The values-vXX (devices with API >= XX) ma najniższą wartość. Jeśli więc inne foldery nie zostaną pobrane, tylko Android pobierze zasoby z tego folderu. Check the table wymienia kwalifikatory zasobów, aby uzyskać więcej informacji na ten temat. Kwalifikatory zasobów są wymienione w tabeli w kolejności priorytetów kwalifikatorów zasobów.

  • Pierwszy przypadek: Normalna hdpi - mniej niż 480dp szerokość - Więc Wartości-hdpi
  • Druga sprawa: Normalna MDPI - mniej niż 480dp szerokość - Wartości-MDPI (wartości-MDPI ma więcej niż weightage wartości-V17)
  • trzecia sprawa: urządzenie hdpi o szerokości 480dp (720/1,5 = 17 480) API - wartości-W480
+0

dzięki fo pomoc! –

+0

Należy również pamiętać o tym, że U stosuje najmniejsze kwalifikatory szerokości/wysokości, na przykład sw600dp nie oznacza "najmniejszej szerokości 600px", ale "najmniejszej szerokości 600 * pikseli". Początkowo go nie dostałem :) Może być przydatne dla początkujących, ponieważ jestem –

1

to właśnie Android stany dokumentacja:

Należy pamiętać, że gdy system Android wybiera, które zasoby mają być używane w środowisku wykonawczym , używa określonej logiki do określania zasobów "najlepiej pasujących" do zasobów .Oznacza to, że kwalifikatory, których używasz, nie muszą dokładnie pasować do bieżącej konfiguracji ekranu we wszystkich przypadkach, aby system mógł z nich korzystać. Konkretnie, podczas wybierania zasobów w oparciu o kwalifikatory o rozmiarze system użyje zasobów zaprojektowanych dla ekranu o mniejszej wartości niż bieżący ekran, jeśli nie ma zasobów, które lepiej pasują do siebie (na przykład na dużym ekranie będzie używany rozmiar normalny ekran zasobów, jeśli to konieczne). Jeśli jednak jedyne dostępne zasoby są większe niż bieżący ekran, system ich nie użyje, a aplikacja ulegnie awarii, jeśli żadne inne zasoby nie pasują do konfiguracji urządzenia (na przykład, jeśli wszystkie zasoby układu są oznaczone tagami kwalifikator, ale urządzenie jest ekranem o normalnym rozmiarze). Aby uzyskać więcej informacji o tym, w jaki sposób system wybiera zasoby, zapoznaj się z artykułem Jak system Android znajduje najlepiej dopasowany zasób.

Source

How Android Finds the Best-Matching Resource