2016-03-02 17 views
11

Ho un'app per Android Xamarin Forms (2.0) in cui sto cercando di mostrare un'immagine. Ho un'icona chiamata icon-pages-r1.png che sto cercando di mostrare utilizzando il seguente codice:Xamarin Forms immagine non visualizzata

<Image Source="icon-pages-r1.png" /> 

L'immagine non mostra però. Quando cambio la sorgente su Icon.png (l'icona di Xamarin predefinita) funziona.

L'immagine è un PNG semitrasparente (quindi un'icona colorata nel mezzo e trasparente attorno ad esso), è 46x46 e in Windows è indicata come tipo di file PNG. Ho provato ad aprire l'immagine in Paint e ri-salvarla (che uccide la trasparenza) ma non funziona neanche. Lo Build Action per le immagini è AndroidResource con Copy to Output Directory impostato su Do not copy.

Qualcuno sa perché non riesco a visualizzare questa immagine nella mia app?

+1

È in Risorse/disegnabile? Potresti anche provare a pulire la tua soluzione e a mettere a fuoco manualmente il cestino e le cartelle obj. A volte questo aiuta. – Jason

+0

Dove è definita l'azione di compilazione? – nishantvodoo

+0

@ keanu101 è possibile impostarlo andando alle proprietà per l'oggetto (rightclick in solution explorer -> properties). –

risposta

18

Non è possibile utilizzare i trattini nei nomi delle immagini per Xamarin Android. Sbarazzati dei trattini (sia nel nome del file che nella referenza Immagini) e verrai impostato.

+3

Ugh, questo era il problema. Dannazione, ho perso ORE per capire questa stupida regola priva di documenti. Suggerimento per gli altri: vai a strumenti -> opzioni -> progetti e soluzioni -> crea ed esegui -> verbosità di output build del progetto MSBuild -> imposta su 'normale' invece di 'minima'. Questo lo mostrerà come un errore nell'output. –

+1

"Normale" non l'ha tagliato per me. Ho dovuto impostarlo su "Diagnostica" finché non sono riuscito a vedere gli errori relativi ai PNG. –

8

Per gli altri che possono finire qui ...

Assicurarsi che il file di immagine è in realtà una parte del progetto (risorse \ disegnabili) e che l'azione build è AndroidResource.

4

Quando il legame con il nome di una risorsa immagine in Android ho trovato deve essere:

  • in Risorse/cartella Drawable
  • insieme Costruire Azione: AndroidResource
  • set Copia di uscita: Non copiare
  • non permette trattini nel nome
  • nome è case sensitive
0

Ho avuto questo problema. Ho impostato MSBuild project build output verbosity come Diagnostic. Ora ho trovato il seguente nella mia finestra di output quando ho cercato OOM.

ImageRenderer: Error loading image: Java.Lang.OutOfMemoryError: Failed to allocate a 571513228 byte allocation with 2140744 free bytes and 92MB until OOM

Ora provato

  • creare un'immagine di png che ha meno di 200KB dimensioni e meno di 1400 x 1050 dimensioni (a scopo di test).

Ha funzionato bene.

Nota: "MSBuild progetto output di generazione di dettaglio" si trovano in Strumenti -> Opzioni -> Progetti e soluzioni -> Creare ed eseguire

Punti di controllo generali

  • Leggi Local Images
  • Assicurati che il nome del file abbia solo lettere minuscole.
  • Aggiungi il file png alla cartella Risorse/disegnabile.

creare una pagina di contenuti come segue

<StackLayout VerticalOptions="Center" HorizontalOptions="Center"> 
    <Label Text="Pre" /> 
    <Image Source="abstracttriangleg.png" 
      Aspect="AspectFill" VerticalOptions="End" HorizontalOptions="CenterAndExpand"/> 
    <Label Text="Post" /> 
</StackLayout> 
  • soluzione Clean.
  • Pulisci file bin e Obj.

Resources dice:

Android supports bitmap files in three formats: .png (preferred), .jpg (acceptable), .gif (discouraged).

Compress PNG and JPEG files dice:

You can reduce PNG file sizes without losing image quality using tools like pngcrush, pngquant, or zopflipng. All of these tools can reduce PNG file size while preserving the perceptive image quality.

The pngcrush tool is particularly effective.

To compress JPEG files, you can use tools like packJPG and guetzli.

Riferimenti:

  1. Android : Maximum allowed width & height of bitmap

  2. Android:java.lang.OutOfMemoryError: Failed to allocate a 23970828 byte allocation with 2097152 free bytes and 2MB until OOM

  3. Handling Bitmaps

+0

Ulteriori riferimenti: [Caricamento di grandi bitmap in modo efficiente] (https://developer.android.com/topic/performance/graphics/load-bitmap.html) e [Caricamento di grandi bitmap in modo efficiente] (https://developer.xamarin.com/ricette/Android/risorse/generali/load_large_bitmaps_efficiently /) – Lijo

0

Per iOS

Fase 1: Aggiungi la tua immagine in ios -> cartella Risorse (Se non lo crea)

Passo 2; Immagine con il tasto destro del mouse -> Proprietà -> Crea azione -> imposta come "Contenuto"