2012-02-15 14 views
9

Używam API w moim Android app, który pobiera obrazy z sieci i pokazuje animację zastępczy podczas gdy obrazy są pobierania (RemoteImageView, część pakietu Ignition hereAndroid. - Reference odkształcalne zasobu jako adres URL

w niektórych punktach w aplikacji, muszę pokazać obrazy z lokalnego kanału alfa zasobów, a nie pobrane z sieci.

Czy to możliwe, aby uzyskać dostęp do lokalnych kanału alfa zasobów przy użyciu adresu URL?

Odpowiedz

3

lokalne zasoby obrazów temat nie mają adresów URL, mają identyfikatory URI, więc jeśli masz obraz w losowaniu, możesz przeanalizować t rąbka od identyfikatora zasobu do URI.

Uri uri=Uri.parse("R.drawable.image"); 

Jeśli jednak możesz umieścić swoje zdjęcia w folderze zasobów pakietu i uzyskać do nich dostęp za pomocą adresu URL. Adres URL plików obrazów to "file: ///android_asset/image.png" Możesz użyć jednej z opcji.

+0

Uri.parse mówi, że R.drawable.image powinien być łańcuchem. To nie może być prawda? –

+0

Woops, zapomniałem dodać cytaty. Poprawione teraz. – noob

+0

Nie ... nie działa. Myślę, że API tworzy połączenie przez URLConnection i muszę przekazać mu ciąg reprezentujący URL. Uri.parse(). ToString() po prostu przywraca oryginalny String ... i nie znajduje go w pliku: /// android_asset/.. path albo –

10

Sposób to zrobić:

wykorzystanie tej linii "android.resource://[your package]/"+[res id]

Oto przykład

Uri myURI = Uri.parse("android.resource://com.example.project/" + R.drawable.myimage); 

do wygodnego można go używać jako metody:

public static Uri getUrl(int res){ 
    return Uri.parse("android.resource://com.example.project/" + res); 
} 

Ostrzeżenie nie używaj context.getPackageName() jako substytut nazwy pakietu, ponieważ może zwrócić wartość pustą.

+0

W jakich przypadkach zwraca zerowy po zainicjowaniu aplikacji? Jeśli program nie zostanie załadowany programowo, wówczas buduje tę zmianę, która spowoduje złamanie kodu. –

Powiązane problemy