The React Native Image doc è abbastanza buono!
immagini statiche
A partire dal Reagire Native 0,14, si consiglia l'utilizzo di immagini statiche in questo modo:
<Image style={styles.catimg} source={require("./imgs/1.png")} />
Ecco alcuni vantaggi che si ottiene:
- stesso sistema su iOS e Android.
- Le immagini si trovano nella stessa cartella del codice JS. I componenti sono autonomi.
- Nessun spazio dei nomi globale, ad esempio non ti preoccupare delle collisioni di nomi.
- Solo le immagini effettivamente utilizzate verranno inserite nella tua app.
- L'aggiunta e la modifica delle immagini non richiede la ricompilazione delle app, è sufficiente aggiornare il simulatore come al solito.
- Il packager conosce le dimensioni dell'immagine, non è necessario duplicarlo nel codice.
- Le immagini possono essere distribuite tramite pacchetti npm.
immagini da parte dei nativi
Tuttavia, si potrebbe ancora voglia di utilizzare un'immagine dal lato nativo, se per esempio, si stanno costruendo un'applicazione ibrida (alcune interfacce utente in Reagire Nativo, alcune interfacce utente in codice della piattaforma).
Su Android, le immagini verranno effettivamente lette dalle cartelle android/app/src/main/res/drawable-*
.
Quando si crea una nuova app React Native, sono presenti solo le cartelle mipmap
. Le cartelle mipmap sono solo per le icone dell'app/launcher. Qualsiasi altra risorsa utilizzabile deve essere inserita nelle cartelle disegnabili pertinenti come in precedenza. More info here.
Quindi è necessario creare almeno una cartella drawable
, ad esempio android/app/src/main/res/drawable-hdpi
, quindi inserire l'immagine imgs_1.png
in essa.
Sfortunatamente, le cartelle drawable
non possono contenere sottodirectory. More info here.
Inoltre, il nome dell'immagine deve iniziare con una lettera e può contenere solo lettere minuscole, numeri o caratteri maiuscoli. See this, ad esempio.
Allora sarete in grado di utilizzare l'immagine come questo, senza l'estensione:
<Image style={styles.catimg} source={{uri: "imgs_1"}} />
Sì, lo so di questo, ma la sua anche possibile utilizzare URI e per il mio scopo ho bisogno di qui. Se funziona su iOS, perché non dovrebbe funzionare su Android? Dice chiaramente nei documenti che l'URI funziona anche con i file locali. – Hasen
@Hasen ok allora, ho aggiornato la mia risposta! Come puoi vedere, questo metodo ha alcuni inconvenienti su Android, quindi mi chiedo quale sia la tua specifica esigenza? Forse c'è un altro modo per farlo funzionare :) – Almouro
Il doc dell'immagine afferma che è possibile utilizzare l'URI con un URL o un file statico ma non indica come utilizzarlo con un file statico o fornire esempi. Ciò avrebbe salvato me e molti altri dal chiedendone uno, come farlo in iOS e poi ora di nuovo in Android. È stato molto difficile ottenere una risposta anche per iOS e molti non sembrano sapere come farlo, ma in realtà non si può fare nulla. Richiedere l'immagine è ok per l'immagine standalone ma per la sua dinamica non va bene perché non è possibile includere stringhe nella richiesta. – Hasen