2010-07-08 18 views
47

Qual è l'approccio migliore quando si utilizzano i drawable predefiniti di Android? Dovrei usare android.R.drawable o dovrei copiare i drawable nel mio progetto e usare R.drawable?Come utilizzare i drawable predefiniti di Android

C'è qualche rischio, che in una versione più recente di Android, alcuni dei drawable predefiniti vengano rimossi o ridimensionati? Oppure, influenzare in modo negativo, l'aspetto della mia app? Inoltre, quale dei drawable nel codice sorgente di Android è considerato "stabile" e dovrebbe essere invocato?

Preferisco non copiare i drawable perché penso che l'aspetto dell'app debba essere coerente con la versione di Android utilizzata. Ad esempio, per la versione 1.6 dovrebbe utilizzare le bitmap di Android predefinite per la versione 1.6.

+1

http://androiddrawables.com/ ha una lista dei drawable predefiniti disponibili per ogni versione. –

+0

Possibile duplicato di [Dove sono tutte le risorse standard per le icone di Android?] (Http://stackoverflow.com/questions/7352898/where-are-all-the-standard-android-icon-resources) –

risposta

20

Se si legge attraverso una delle discussioni sul gruppo di sviluppo di Android si vedrà che scoraggiano l'uso di tutto ciò che non è nel SDK pubblico, perché il resto è soggetto a ampio cambiamento.

+4

Quindi, in sostanza, qualsiasi cosa da http://developer.android.com/reference/android/R.drawable.html può essere utilizzata direttamente senza copiare? –

+0

Sì ... questo è quello che penserei. – androidworkz

+4

Mentre è tecnicamente corretto che qualcosa che non è nell'SDK può cambiare, ci sono alcune cose che sono altamente improbabili da cambiare e se VERAMENTE ne hai bisogno puoi farla franca. La cosa più sicura da fare sarebbe quella di copiare i file immagine necessari dal sorgente anroid nella tua directory drawable, ma questo significa che se rilasceranno una nuova versione di Android con immagini diverse, la tua app sembrerà vecchia. – OldSchool4664

3

Meglio utilizzare android.R.drawable perché è pubblico e documentato.

21

Meglio che copi e li sposti alle tue risorse. Alcune risorse potrebbero non essere disponibili nelle precedenti versioni di Android. Here is a link con tutti i drawable disponibili su ciascuna versione di Android grazie a @fiXedd

+0

Grazie per il collegamento utile . Tuttavia, non sono convinto che dovrei copiarli con le mie risorse. –

+0

Il collegamento è rotto. Potresti spiegare nella tua risposta di cosa si trattava o reindirizzare il collegamento ipertestuale alla posizione giusta, per favore. –

+0

Nel link fornito, è possibile vedere ciò che è disponibile per ogni versione. Volevo solo mostrare come alcune icone potrebbero non essere disponibili per le vecchie versioni. Quindi è meglio copiarli e spostarli nelle risorse del tuo progetto. Questo link potrebbe essere d'aiuto: http://androiddrawableexplorer.appspot.com/ – ggomeze

33

Per quanto mi ricordo, la documentazione sconsiglia di utilizzare direttamente le icone del menu di Android.R.drawable e consiglia di copiarle nella cartella dei disegni. Il motivo principale è che tali icone e nomi possono essere soggetti a modifiche e potrebbero non essere disponibili nelle versioni future.

Avviso: poiché queste risorse possono cambiare tra le versioni della piattaforma, non è necessario fare riferimento a queste icone utilizzando gli ID delle risorse della piattaforma Android (ad esempio icone del menu in Android.R.drawable). Se si desidera utilizzare qualsiasi icona o altre risorse estraibili interne, è necessario archiviare una copia locale di tali icone o disegni nelle risorse dell'applicazione, quindi fare riferimento alla copia locale dal codice dell'applicazione. In questo modo, puoi mantenere il controllo sull'aspetto delle tue icone, anche se la copia del sistema cambia.

da: http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

+0

Ho trovato il collegamento: http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#menuapx –

+0

Ciao, quindi qual è la conclusione? Per copiare o non copiare? Questa risposta sembra convincente per copiare, ma tutti gli altri sconsigliano. – kiki

+2

Attenzione che alcuni drawable sono modificati dai produttori e appariranno diversi su diversi telefoni. Motoblur utilizza l'evidenziazione rossa anziché l'arancione, quindi i drawable come i segni di spunta e i pulsanti (alcuni dei quali sono anche in R.Drawable) saranno incoerenti se si effettua una copia. – idbrii

6

Per utilizzare la risorsa drawable Android di default, non c'è bisogno copiare niente .. si può semplicemente importare prima con ..

import android.R; 

ma farò le proprie risorse avranno un errore se si desidera usalo L'errore sarà qualcosa di simile:

R. non può essere risolto

Quindi, preferisco non import android.R ma import *my.own.package*.R;

poi quando posso normalmente usare la mia risorsa con R.drawable.*something* senza errore, e inserire android.R.*something_default* per utilizzare le risorse Android predefinite.

81

Java Esempio di utilizzo: myMenuItem.setIcon(android.R.drawable.ic_menu_save);

risorse Esempio di utilizzo: android:icon="@android:drawable/ic_menu_save"

+0

Questo risponde esattamente alla domanda. – hopia

+0

ma alcuni drawable nel mio SDK non si trovano in questa lista !! –

+0

È possibile che si stia utilizzando una versione precedente di SDK – IcedDante

Problemi correlati