2013-05-23 13 views
13

mam przechowywania ścieżkę zasobów rozciągliwej w Uri w ten sposób:Pobierz zasób rozciągliwej od Uri

Uri uri = Uri.parse("android.resource://my_app_package/drawable/drawable_name"); 

Jak mogę uzyskać rozciągliwej że uri odwołuje?

Nie chcę umieszczać go w ImageView, wystarczy pobrać obiekt Drawable (lub Bitmap).

Odpowiedz

42

getContentResolver cr object następnie zadzwonić:

is = cr.openInputStream(uri) 

i wreszcie zadzwonić:

Drawable.createFromStream(InputStream is, String srcName) 

... Oto rzeczywisty przykład kod roboczych, dzięki czemu można zobaczyć na własne oczy:

try { 
    InputStream inputStream = getContentResolver().openInputStream(yourUri); 
    yourDrawable = Drawable.createFromStream(inputStream, yourUri.toString()); 
} catch (FileNotFoundException e) { 
    yourDrawable = getResources().getDrawable(R.drawable.default_image); 
} 
+0

dzięki! Zdecydowałem się na edycję odpowiedzi @ pskink (w zamian za udzielenie nowej odpowiedzi), ponieważ mogłem wziąć tylko częściowy kredyt. – PeteH

+0

Uwaga: być może będziesz musiał również wywołać 'yourDrawable.setBounds (...)', w niektórych przypadkach jak ustawienie go jako złożonego ciągnięcia z 'TextView' –

Powiązane problemy