Chcę to sprawdzić, aby pobierać różne obrazy przez Internet. Jak to zrobić?
121
density = getResources().getDisplayMetrics().density;
// return 0.75 if it's LDPI
// return 1.0 if it's MDPI
// return 1.5 if it's HDPI
// return 2.0 if it's XHDPI
// return 3.0 if it's XXHDPI
// return 4.0 if it's XXXHDPI
Możesz sprawdzić gęstość ekranu za pomocą:
EDYCJA Należy pamiętać, że wraz z rozwojem systemu Android w
switch
przypadkach należy uwzględnić inne wartości . Od tej edycji obejmuje toDisplayMetrics.DENSITY_TV
iDisplayMetrics.DENSITY_XXHIGH
. Aby uzyskać najnowsze informacje, zapoznaj się z dokumentacją ; Nie mam zamiaru utrzymywać tej odpowiedzi.źródło
density
zgodnie z sugestią SteD.)DENSITY_XXHIGH
. Dodałem zastrzeżenie do odpowiedzi, aby uwzględnić wszystkie przyszłe przypadki. :)Od 2018 roku możesz użyć poniższej metody -
Ale jak wskazał @Ted, zawsze zapoznaj się z oficjalną dokumentacją przed użyciem
źródło
Z powyższych odpowiedzi połączyłem je i stworzyłem poniższą funkcję:
Teraz, na którym urządzeniu chcesz uzyskać informacje o gęstości i który folder będzie używany, po prostu dodaj powyższą metodę w tym działaniu i dodaj poniższy wiersz w onCreate
źródło
Aby React Native sprawdził, jaki jest aktualnie rozmiar urządzenia
źródło
PixelRatio.get()
zwróci zakres wartości w zależności od rozmiaru ekranu ustawionego w ustawieniach systemu Android oraz rozdzielczości dpi. Te wartości nie będą pokrywać się z dokładnymi wartościami, które wyznaczyłeś.Na niektórych urządzeniach (moim jest Galaxy Tab3), zarówno gęstość, jak i densityDpi zwracają dziwne wartości, takie jak 1,33 (gęstość), 213 (densityDpi). Więc moim rozwiązaniem jest dodanie tej flagi:
do 4 plików values.xml, umieść je w odpowiednich folderach res / values- [xxx] /.
źródło