2012-08-28 17 views
6

Ho due cartelle disegnabili: drawable-MDPI e drawable-ldpiAndroid: accedere a un drawable da una cartella -dpi specifica?

voglio mantenere questa struttura (cioè non' voglio muovere le immagini per/attivi), in modo che Android sceglierà automaticamente l'appropriato opere d'arte a seconda della densità del dispositivo, tuttavia, a volte ho bisogno di accedere alla versione più grande drawable sul dispositivo più piccolo.

C'è un modo per accedere alla cartella drawable-ldpi dal codice? Ho pensato che il seguito potrebbe essere la risposta, ma non ha funzionato:

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

ottengo un java.io.FileNotFoundException (Nessun file o directory) avviso (che non va in crash, ma è solo doesn' t caricare entrambi).

Grazie mille per il vostro aiuto!

+1

No, è non è raggiungibile come ti serve –

+0

Quindi la mia migliore scommessa è caricare tutte le mie immagini nella cartella delle risorse, e invece di usare androids integrati nel rilevamento, per rilevare manualmente la densità dello schermo e caricare le immagini corrispondenti. almeno posso accedere alle versioni hdpi in base alle esigenze? – romamnmlst

risposta

0

In genere, se è necessario utilizzare la versione HDPI, mantenere SOLO la versione HDPI dell'immagine e il telefono a densità inferiore utilizzerà automaticamente il drawable HDPI perché non ha scelta (ovvero un'immagine a bassa risoluzione con quella drawable il nome non esiste).

Se è davvero necessario passare dalla versione hdpi a quella mdpi, suggerirei di utilizzare un nome file diverso e di scambiare a livello di codice, o mostrare/nascondere elementi XML se si preferisce farlo in questo modo ... ma sembra un po 'pesante consegnato.

+0

Ho davvero bisogno di usare l'mdpi, come sto caricando molte immagini e l'uso dell'HDPI causa l'errore VM OOM. – romamnmlst

+0

In che situazione ti piacerebbe utilizzare l'immagine HDPI, quindi? Perché non avere semplicemente due drawable e scambiarli nella situazione in cui è necessario utilizzare l'mdpi? –

+0

Voglio caricare lo schermo con le immagini più piccole. Quando un'immagine è selezionata, voglio visualizzare la versione più grande di quell'immagine. Se carico le versioni hdpi e le ridimensiono per adattarle allo schermo più piccolo, ottengo gli errori OOM. – romamnmlst

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

Provate a leggere THIS LINK anche per ulteriori studi su hdpi e MDPI concetto

+0

Questo userà la normale risoluzione delle risorse del sistema e quindi non ti darà l'immagine più grande. – Ridcully

2

probabilmente non molto aiuto, ma non v'è Resources.getDrawableForDensity(), ma questo è per API 15 :-(

Problemi correlati