2013-01-16 15 views
6

Questo codiceRecupera hidensity disegnabile dalla confezione (nido d'ape)

final ApplicationInfo ai = getPackageManager().getApplicationInfo("com.company.hello", 0); 
final Drawable d = getPackageManager().getApplicationIcon(ai); 

prelevare un 48x48 (MDPI) drawable anche sul mio hidensity HoneyComb dispositivo.

Premesso che posso allargare drawable da Bitmap.createScaledBitmap, mi sto chiedendo come estrarre l'icona densità di hi che è già lì. Il metodo getDrawableForDensity non è disponibile per sdk < 15, ma non sono felice di richiamare una funzione di ridimensionamento per ogni icona che devo disegnare quando è disponibile nel pacchetto gratuitamente.

Modifica per taglie

dimenticando per un po 'il mio dispositivo densità di visualizzazione della domanda è la seguente: dato un proprio pacchetto per il quale sappiamo per certo di avere l'icona di 72x72 nella cartella relativa hdpi res, come estrarre questa icona da un altro pacchetto?

THIS FUNCTION non è disponibile su ambiente Honeycomb.

+0

Che cosa stai usando il drawable per una volta che lo hai? Mi sembra che tu possa usare il 'R.drawable.id' dell'immagine per ottenerlo, che prenderà automaticamente quello corretto per qualsiasi schermo di dimensioni che stai usando al momento. – FoamyGuy

+0

Forse stai confondendo le dimensioni con la densità (sono diverse). Non dovresti ridimensionare le tue risorse PNG (questo è l'unico scopo dell'utilizzo di diversi drawable di risoluzione). – Booger

+0

hi FoamGuy Ho già provato a estrarre l'icona da un ID specifico ma il risultato è lo stesso: 48x48 disegnabile. Booger: Non sto confondendo nulla: dato un pacchetto, voglio il disegnabile 72x72 che conosco. La densità dello schermo è HI_DENSITY e la soluzione potrebbe essere getDrawableForDensity ma non è disponibile. – lorenzoff

risposta

1

per trovare il tuo directlyy drawable con la buona densità, non resta che provare questo:

mContext.getResources().getDrawable(R.drawable.mydrawable); 

qual è il problema? Se Android ti dà un'icona 48x48, è quella che è l'icona buona o, non hai impostato l'icona nella cartella buona risoluzione/disegnabile-.

+0

Sì, grazie per la risposta, ma la domanda non è se l'icona 48x48 è buona o meno ma come estrarre tutte le icone di risoluzione da un pacchetto indipendentemente dalla densità del dispositivo. Come ho già scritto usando l'API> 15, una funzione che fa esattamente ciò di cui ho bisogno è disponibile (getDrawableForDensity) e la domanda è come ottenere lo stesso risultato senza usare questa funzione. – lorenzoff

Problemi correlati