2016-04-16 13 views
6

Etrafında arama yaptım ve bunun için doğru çözümü bulamadık. Ben XCode projenize yerel bir klasör başvuru ekledikten sonra aşağıdaki kodu kullanarak iOS'da uri ile görüntüleri sorun görüntüleyen uygulaması var: React Yerli yerel görüntülere Android ile URI

<Image style={styles.catimg} source={{uri: "imgs/1.png"}} /> 

Ama

Android'de oldukça görüntüleri koymak için nereye anlamaya edemez ve Onlara kodda nasıl başvurulur. Bazı insanlar android/app/src/main/res/drawable-hdpi'de 'drawable-hdpi' adlı bir klasör hakkında bir şeyler söylediler, ancak bu klasör eklendiğinde yapı başarısız oluyor. Şu anda sadece mipmap klasörleri var.

cevap

19

Doğal olarak tepki Image doc oldukça iyi! Yerli 0,14 Tepki As

Statik görüntüler

, bu kadar gibi statik resimleri kullanmanızı öneririz: Burada
<Image style={styles.catimg} source={require("./imgs/1.png")} /> 

Alacağınız bazı faydaları şunlardır:

  1. aynı sistemi iOS'ta ve Android.
  2. Görüntüler, JS kodunuzla aynı klasörde görüntülenir. Bileşenler bağımsızdır.
  3. Genel ad alanı yok, ör. Ad çakışmaları hakkında endişeniz yok.
  4. Sadece gerçekte kullanılan görüntüler uygulamanıza paketlenir.
  5. Resimlerin eklenmesi ve değiştirilmesi, uygulamanın yeniden derlenmesini gerektirmiyor, simülatörü normalde yaptığınız gibi yenilemeniz yeterlidir.
  6. Paketleyici, görüntü boyutlarını bilir, kodda çoğaltmaya gerek yoktur.
  7. Görüntüler npm paketleri ile dağıtılabilir. Örneğin, bir melez app inşa eğer

    Ancak Yerli taraftan

Görüntüler, hala istiyorum, yerli taraftan bir resim kullanmak olabilir (bazı UI bazı UI platformu kodunda, Yerli Tepki).

Android'de, görüntüler gerçekten android/app/src/main/res/drawable-* klasörlerinden okunacak.

Yeni bir React Native uygulaması oluşturduğunuzda, yalnızca mipmap klasörleri bulunur. Mipmap klasörleri yalnızca uygulamanız/başlatıcı simgeleriniz içindir. Kullandığınız diğer çekilebilir varlıklar, daha önce olduğu gibi ilgili çizilebilir klasörlere yerleştirilmelidir. More info here. Bu nedenle, android/app/src/main/res/drawable-hdpi diyelim, en az bir drawable klasörü oluşturmalısınız, sonra görüntünüze imgs_1.png yerleştirin.

Ne yazık ki, drawable klasörleri alt dizinler içeremez. More info here. Ayrıca, görüntü adı bir harfle başlamalıdır ve yalnızca küçük harfler, sayılar veya boyutsuz karakter içerebilir. Örneğin, See this.

Sonra uzantısı olmadan bu, gibi resim kullanmak mümkün olacak:

<Image style={styles.catimg} source={{uri: "imgs_1"}} /> 

+0

Evet bunu ancak hakkında bilmek onun da mümkündür URI kullanmak ve benim amaç için burada ihtiyacımız. IOS'ta çalışıyorsa neden Android'de çalışmaz? Dokümanlarda açıkça URI'nin yerel dosyalarla çalıştığı yazıyor. – Hasen

+0

@Hasen tamam, cevabımı güncelledim! Gördüğünüz gibi, bu yöntemin Android'de bazı dezavantajları var, bu yüzden özel ihtiyacın ne olduğunu merak edebilir miyim? Belki de çalışması için başka bir yol var :) – Almouro

+0

Resim dokümanı, URI'yi bir URL veya statik dosya ile kullanabileceğinizi ancak bunun statik bir dosyayla nasıl kullanılacağını veya herhangi bir örnek vermediğini belirtir. Bu beni ve başkalarını kurtardı, bir tane için sormaktan, iOS'ta nasıl yapılacağını ve sonra tekrar Android'de görünmesini istiyordu. IOS için de bir cevap almak çok zordu ve birçoğu bunu nasıl yapacağını bilmiyor gibiydi ama aslında hiç sorun değil. Görüntünün yüklenmesi, tek başına resim için yeterlidir, ancak dinamik için iyi değil çünkü istekte dizeleri ekleyemezsiniz. – Hasen