2013-05-28 11 views
6

Ho una domanda molto semplice:Come ottenere i qualificatori per una determinata risorsa (quando lo si utilizza)?

Dato una risorsa specifica (id, stringa, drawable, ...) dal file R.java, è possibile sapere quali qualificatori aveva nella sua cartella che lo aveva abbinato? Se é cosi, come ?

Ad esempio, se il mio dispositivo ha uno schermo con densità hdpi, e ho lo stesso nome "x.png" su "res/drawable-hdpi" e "res/drawable-mdpi", e sono circa per decodificare questo file, quello che vorrei ottenere è che ha ottenuto il file da res/drawable-hdpi, e facendolo sapere che ha la densità hdpi.

Ovviamente, in questo esempio, se il file esiste in altre cartelle, ma non nella cartella hdpi, vorrei che indichi quale verrà utilizzato quando decodifico il file.

Lo stesso vale per il resto dei qualificatori (locale, dimensione schermo, ...).

+0

Sono interessato a questa domanda. Sono nello stesso problema. L'hai risolto? Hai scoperto una funzione per indovinare qualifer usato dal dispositivo in qualsiasi situazione? – GmloMalo

+0

@GmloMalo No. Non ricordo nemmeno perché volevo questo ... –

+0

Ok. Grazie comunque – GmloMalo

risposta

0

Questo problema si verifica molto se il tuo targeting per un numero elevato di dispositivi così ho deciso di creare la mia semplice applicazione per scoprire quale drawable viene utilizzato. Here è il collegamento.

Spero che questo possa essere d'aiuto.

+0

codice di esempio non ha codice e nessuna funzione che fa quello che ho scritto su ... –

+0

basta eseguire il codice di esempio e capirai. – bladeX

0

Non penso che il framework Android fornisca un meccanismo per l'applicazione per capire quale risorsa è stata utilizzata.

Ma è sempre possibile formulare le regole in base alle regole specificate nella documentazione dei qualificatori di risorse Android.

Tuttavia, non sono chiaro quale sia esattamente la vostra esigenza? Vuoi che la tua applicazione sia in grado di riconoscere quale risorsa viene utilizzata? O lo vuoi solo durante la progettazione/costruzione.

Come per capire quale risorsa viene utilizzata, è possibile formulare facilmente una logica in base alla densità dello schermo, alle dimensioni dello schermo, alle impostazioni internazionali del telefono e all'orientamento corrente, tutte disponibili tramite varie apis presenti in Android.

+0

supponiamo che il codice non sappia nulla su quali file di risorse esistono, quello che voglio è avere una funzione che indichi quali qualificatori sono usati per la risorsa data. è per il runtime (perché altrimenti posso vedere me stesso dove sono i file ...). –

+0

che a mio parere non è possibile ... la cosa migliore che puoi fare è sapere quali risorse hai messo in ogni cartella con i qualificatori da te forniti. A seconda delle metriche del dispositivo che ho menzionato, puoi indovinare quale risorsa viene prelevata dalla tua app. Non penso che tu possa scoprire quali qualificatori sono presenti per una particolare risorsa, che sarebbero fatti dal sistema Android, e non dalla tua applicazione. –

0

uso http://developer.android.com/reference/android/content/res/Configuration.html

esempio per i DPI:

Configuration config = getResources().getConfiguration(); 
    Log.d("DPI ", Integer.toString(config.densityDpi)); 
+0

Dov'è la parte che ti do l'ID della risorsa? Attualmente, tutto quello che vedo è che hai identificato la densità del dispositivo.Non ha nulla a che fare con una determinata risorsa. –

+0

questo, puoi vedere dpi in numeri. http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-in-android check dpi con Configuration e noto Density Bucket per il tuo telefono. – Novikov

+0

Non capisci la domanda. Non chiedo densità. Chiedo come ottenere la cartella di origine della risorsa che scelgo. Ad esempio, se ho un drawable all'interno di più cartelle ("drawable-ldpi", "drawable-port", "drawable-iw", ...), voglio trovare quale dei file sceglie quando cerco di ottenere esso. –

Problemi correlati