2012-08-28 9 views
6

Mam dwa foldery do rysowania: drawable-mdpi i drawable-ldpiAndroid: dostęp do rysowania z określonego katalogu -dpi?

Chcę zachować tę strukturę (tzn. Nie chcę przenosić zdjęć do/zasobów), aby system Android automatycznie wybierał odpowiednie grafika w zależności od gęstości urządzenia, jednak czasami potrzebuję uzyskać dostęp do większej wersji do rysowania na mniejszym urządzeniu.

Czy istnieje sposób dostępu do folderu drawable-ldpi z kodu? Myślałem, że po może być odpowiedź, ale to nie działa:

Uri path = Uri.parse("android.resource://com.example.test/res/drawable-ldpi/icon"); 
    imageview.setImageURI(path); //assume imageview is already initialized etc. 

dostaję java.io.FileNotFoundException (nie ma takiego pliku lub katalogu) ostrzeżenie (nie upaść, ale po prostu nie robi” t obciążenie albo).

Dziękuję bardzo za pomoc!

+1

Nie, to nie jest osiągalny tak, jak tego potrzebujesz –

+0

Więc najlepiej jest załadować wszystkie moje obrazy do folderu zasobów i zamiast używać androidów wbudowanych w wykrywanie, aby ręcznie wykryć gęstość ekranu i załadować odpowiednie obrazy. przynajmniej mogę wtedy uzyskać dostęp do wersji hdpi w razie potrzeby? – romamnmlst

Odpowiedz

0

Ogólnie, jeśli kiedykolwiek będziesz potrzebować wersji HDPI, zachowaj TYLKO wersję obrazu HDPI, a telefon o niższej gęstości automatycznie użyje wysuwanego HDPI, ponieważ nie ma wyboru (tj. Obraz o niższej rozdzielczości z tym losowaniem nazwa nie istnieje).

Jeśli naprawdę potrzebujesz przełączać się pomiędzy wersją hdpi i mdpi, sugerowałbym używanie innej nazwy pliku i programowanie, lub pokazywanie/ukrywanie elementów XML, jeśli wolisz robić to w ten sposób ... ale to wydaje się trochę ciężkie przekazany.

+0

Naprawdę potrzebuję użyć mdpi, ponieważ jestem obciążony wiele obrazów, a użycie hdpi powoduje błąd OOM maszyny wirtualnej. – romamnmlst

+0

W jakiej sytuacji chciałbyś użyć obrazu HDPI? Dlaczego nie po prostu masz dwa rysunki i zamieniasz je w sytuacji, w której musisz użyć mdpi? –

+0

Chcę załadować ekran z mniejszymi obrazami. Po wybraniu obrazu chcę wyświetlić większą wersję tego obrazu. Jeśli załaduję wersje hdpi i będę je skalować w celu dopasowania do mniejszego ekranu, otrzymam błędy OOM. – romamnmlst

-1
ImageView image = (ImageView)findViewById(R.id.imageView); 
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.abc); 
image.setImageBitmap(bm); 

Spróbuj przeczytać THIS LINK również więcej badań nad hdpi i MDPI koncepcji

+0

Spowoduje to użycie normalnej rozdzielczości zasobów systemu, dzięki czemu nie uzyskasz większego obrazu. – Ridcully

2

prawdopodobnie nie wiele pomóc, ale jest Resources.getDrawableForDensity(), ale jest to dla API 15 :-(

Powiązane problemy