Çok yoğunluklu vektör grafikleri ekleme

Android Studio, malzeme simgeleri eklemenize ve Ölçeklenebilir Vektör Grafiği (SVG) ile Adobe Photoshop Belgesi (PSD) dosyalarını projenize vektör çekilebilir kaynaklar olarak içe aktarmanıza yardımcı olan Vector Asset Studio adlı bir araç içerir. Bit eşlemler yerine vektör çekilebilir öğelerinin kullanılması, APK'nızın boyutunu küçültür. Çünkü aynı dosya, resim kalitesinden ödün vermeden farklı ekran yoğunlukları için yeniden boyutlandırılabilir. Vektör çekilebilirlerini desteklemeyen eski Android sürümleri için Vector Asset Studio, oluşturma zamanında vektör çekilebilir öğelerinizi her ekran yoğunluğu için farklı bit eşlem boyutlarına dönüştürebilir.

Vector Asset Studio hakkında

Vector Asset Studio, projeye görüntüyü açıklayan XML dosyası olarak bir vektör grafiği ekler. Tek bir XML dosyası tutmak, çeşitli çözünürlüklerdeki birden fazla kafes grafiğini güncellemekten daha kolay olabilir.

Android 4.4 (API düzeyi 20) ve önceki sürümler, vektör çekilebilirlerini desteklemez. Minimum API düzeyiniz bu API düzeylerinden birine ayarlanmışsa Vector Asset Studio'yu kullanırken iki seçeneğiniz vardır: Taşınabilir Ağ Grafiği (PNG) dosyaları oluşturma (varsayılan) veya Destek Kitaplığı'nı kullanma.

Geriye dönük uyumluluk için Vector Asset Studio, çekilebilir vektörün karo resimlerini oluşturur. Vektör ve kafes çekilebilir öğeleri APK'da birlikte paketlenir. Vektör çekilebilirlerine Java kodunda Drawable veya XML kodunda @drawable ifade edebilirsiniz. Uygulamanız çalıştığında, API düzeyine bağlı olarak ilgili vektör veya kafes görüntüsü otomatik olarak gösterilir.

Yalnızca vektör çekilebilir kaynaklarını kullanmak istiyorsanız Android Destek Kitaplığı 23.2 veya üstünü kullanabilirsiniz. Bu teknik, Vector Asset Studio'yu çalıştırmadan önce Destek Kitaplığı Geriye Dönük Uyumluluk konusunda açıklandığı gibi build.gradle dosyanızda değişiklik yapılmasını gerektirir. Destek Kitaplığı'ndaki VectorDrawableCompat sınıfı, Android 2.1 (API düzeyi 7) ve sonraki sürümlerde VectorDrawable öğesini desteklemenize olanak tanır.

Desteklenen vektör grafik türleri

Google Materyal Tasarım spesifikasyonu, Android uygulamalarınızda kullanabileceğiniz malzeme simgeleri sağlar. Vector Asset Studio, malzeme simgelerini seçmenize, içe aktarmanıza ve boyutlandırmanızın yanı sıra opaklığı ve Sağdan Sola (RTL) yansıtma ayarını tanımlamanıza yardımcı olur.

Vector Asset Studio, kendi SVG ve PSD dosyalarınızı da içe aktarmanıza olanak tanır. SVG, World Wide Web Consortium'un (W3C) XML tabanlı bir açık standardıdır. PSD dosya biçimi Adobe Photoshop özelliklerini destekler. Vector Asset Studio temel standartları destekler, ancak tüm SVG ve PSD özelliklerini desteklemez. Bir SVG veya PSD dosyası belirttiğinizde, Vector Asset Studio, grafik kodunun desteklenip desteklenmediğiyle ilgili anında geri bildirim verir. Dosyayı, VectorDrawable kodu içeren bir XML dosyasına dönüştürür. Hatalarla karşılaşırsanız, vektör çiziminizin gerektiği gibi göründüğünü doğrulamanız gerekir. İzin verilen PSD özellikleri hakkında daha fazla bilgi için PSD dosyaları için destek ve kısıtlamalar sayfasına bakın.

Android 5.0 (API düzeyi 21) ve sonraki sürümlerde VectorDrawable sınıfının özelliklerini canlandırmak için AnimatedVectorDrawable sınıfını kullanabilirsiniz. Destek Kitaplığı sayesinde, Android 3.0 (API düzeyi 11) ve sonraki sürümler için VectorDrawable sınıfını canlandırmak üzere AnimatedVectorDrawableCompat sınıfını kullanabilirsiniz. Daha fazla bilgi için Vektör çekilebilirlerini canlandırma bölümüne bakın.

SVG ve PSD dosyalarıyla ilgili dikkat edilmesi gereken noktalar

Çizim vektörü, basit simgeler için uygundur. Malzeme simgeleri, bir uygulamada ve vektör çekilebilir öğeler için iyi sonuç veren resim örnekleri sağlar. Buna karşılık, birçok uygulama başlatma simgesi birçok ayrıntıya sahip olduğundan kafes resimler olarak daha iyi çalışırlar.

Çekilebilir bir vektörün ilk yüklemesi, karşılık gelen kafes görüntüsünden daha fazla CPU döngüsüne mal olabilir. Daha sonra ikisi arasında bellek kullanımı ve performans benzer olur. Vektörel resimleri en fazla 200 x 200 dp boyutunda kullanmanızı öneririz. Aksi takdirde, çizim çok uzun sürebilir.

Vektör çizimleri bir veya daha fazla rengi desteklese de, çoğu durumda simgeleri siyah (android:fillColor="#FF000000") renklendirmek anlamlıdır. Bu yaklaşımı kullanarak, bir düzene yerleştirdiğiniz çizilebilir vektöre bir tonlama ekleyebilirsiniz ve simge rengi ton rengine değişir. Simge rengi siyah değilse simge rengi bunun yerine ton rengiyle karışabilir.

Vektör çekilebilir geriye dönük uyumluluk çözümleri

Aşağıdaki tabloda, geriye dönük uyumluluk için kullanabileceğiniz iki teknik özetlenmektedir:

Teknik APK'da çizilebilirler VectorDrawable XML öğeleri Sürüm Oluşturma işareti Uygulama kodu
PNG oluşturma Vektör ve kafes Alt küme destekleniyor

SVG: Gradle için Android eklentisi 1.5.0 veya sonraki sürümler

PSD: Android Studio 2.2 veya üstü

Varsayılan Çeşitli kodlama teknikleri desteklenir
Destek Kitaplığı 23.2 veya sonraki sürümler Vektör Tam destek Gradle 2.0 veya üstü için Android eklentisi Destek Kitaplığı bildirimleri gerekli Desteklenen kodlama teknikleri alt kümesi

Vektör çekilebilir öğelerinin kullanılması daha küçük bir APK oluşturabilir ancak vektör çekilebilir öğelerinin ilk kez yüklenmesi daha uzun sürebilir.

PNG oluşturma

Android 5.0 (API düzeyi 21) ve sonraki sürümler vektör çekilebilirliği desteği sağlar. Uygulamanızın minimum API düzeyi daha düşükse Vector Asset Studio, projenize çekilebilir vektör dosyası ekler. Ayrıca, derleme sırasında Gradle, çeşitli çözünürlüklerde PNG kafes resimleri oluşturur. Gradle, bir build.gradle dosyasında Alana Özgü Dil (DSL) generateDensities özelliği tarafından belirtilen PNG yoğunluklarını oluşturur.

Android 5.0 (API düzeyi 21) ve sonraki sürümler için Vector Asset Studio tüm VectorDrawable öğelerini destekler. Vector Asset Studio, Android 4.4 (API düzeyi 20) ve önceki sürümlerle geriye dönük uyumluluk için aşağıdaki XML öğelerini destekler:

<vector>

  • android:width
  • android:height
  • android:viewportWidth
  • android:viewportHeight
  • android:alpha

<group>

  • android:rotation
  • android:pivotX
  • android:pivotY
  • android:scaleX
  • android:scaleY
  • android:translateX
  • android:translateY

<path>

  • android:pathData
  • android:fillColor
  • android:strokeColor
  • android:strokeWidth
  • android:strokeAlpha
  • android:fillAlpha
  • android:strokeLineCap
  • android:strokeLineJoin
  • android:strokeMiterLimit

Vector Asset Studio'nun oluşturduğu XML kodunu değiştirebilirsiniz, ancak bu en iyi uygulama değildir. Koddaki değerlerin değiştirilmesi, geçerli ve statik oldukları sürece herhangi bir soruna neden olmamalıdır. XML öğeleri eklemek istiyorsanız bunların minimum API düzeyinize göre desteklendiğinden emin olmanız gerekir.

Destek Kitaplığı

Bu teknik, Android Support Library 23.2 veya sonraki sürümleri ile Gradle 2.0 veya sonraki sürümleri için Android Eklentisini gerektirir ve yalnızca vektör çekilebilir kaynaklarını kullanır. Destek Kitaplığı'ndaki VectorDrawableCompat sınıfı, Android 2.1 (API düzeyi 7) ve sonraki sürümlerde VectorDrawable öğesini desteklemenize olanak tanır.

Vektör Asset Studio'yu kullanmadan önce build.gradle dosyanıza bir ifade eklemeniz gerekir:

Modern

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

dependencies {
    implementation 'com.android.support:appcompat-v7:23.2.0'
}

Kotlin

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

dependencies {
    implementation("com.android.support:appcompat-v7:23.2.0")
}

Destek Kitaplığı ile uyumlu kodlama teknikleri de kullanmanız gerekir. Örneğin, vektör çekilebilirleri için android:src özelliği yerine app:srcCompat özelliğini kullanabilirsiniz. Daha fazla bilgi için Android Destek Kitaplığı 23.2 bölümüne bakın.

Vector Asset Studio çalıştırılıyor

Vector Asset Studio'yu başlatmak için:

  1. Android Studio'da bir Android uygulama projesi açın.
  2. Proje penceresinde Android görünümünü seçin.
  3. res klasörünü sağ tıklayın ve Yeni > Vektör Öğesi'ni seçin.
  4. Bu menü öğesi diğer bazı proje görünümlerinde ve klasörlerde de bulunur.

    Vector Asset Studio görünür.

    1. Şekil. Vector Asset Studio.

  5. Bunun yerine need Newer Android Plugin for Gradle iletişim kutusu görüntülenirse Gradle sürümünüzü aşağıdaki şekilde düzeltin:
    1. Dosya > Proje Yapısı'nı seçin.
    2. Proje Yapısı iletişim kutusunda Proje'yi seçin.
    3. Android Plugin Version (Android Eklenti Sürümü) alanında Gradle için Android Plugin sürümünü 1.5.0 veya daha yeni bir sürüm olarak değiştirin ve Tamam'ı tıklayın.
    4. Gradle projeyi senkronize eder.

    5. Proje penceresinin Android görünümünde res klasörünü sağ tıklayın ve Yeni > Vektör Öğesi'ni seçin.
    6. Vector Asset Studio görünür.

  6. Vektör Grafiği İçe Aktarma ile devam edin.

Vektör grafiğini içe aktarma

Vector Asset Studio, uygulama projenize bir vektör grafik dosyası aktarmanıza yardımcı olur. Aşağıdaki prosedürlerden birini uygulayın:

Materyal simgesi ekleme

Vector Asset Studio'yu açtıktan sonra aşağıdaki gibi bir malzeme simgesi ekleyebilirsiniz:

  1. Vector Asset Studio'da Malzeme Simgesi'ni seçin.
  2. Simge alanındaki düğmeyi tıklayın.
  3. Simge Seçin iletişim kutusu görünür. Soldaki listeden bir simge kategorisi seçerek veya Şekil 2'de gösterildiği gibi arama alanına yazarak hangi simgelerin görüneceğini filtreleyebilirsiniz.

    2. Şekil. Vector Asset Studio'da malzeme simgelerini filtreleme.

  4. Bir malzeme simgesi seçin ve Tamam'ı tıklayın. Simge, Vektör Çekilebilir Önizlemesi'nde görünür.

  5. İsteğe bağlı olarak kaynak adını, boyutunu, opaklığını ve Sağdan Sola (RTL) yansıtma ayarını değiştirin:
    • Ad: Varsayılan adı kullanmak istemiyorsanız yeni bir ad yazın. Vector Asset Studio, projede zaten kaynak adı yer alıyorsa otomatik olarak benzersiz bir ad oluşturur (adın sonuna bir sayı ekler). Ad yalnızca küçük harf, alt çizgi ve rakam içerebilir.
    • Geçersiz kıl: Resmin boyutunu ayarlamak istiyorsanız bu seçeneği belirleyin. Yeni bir boyut yazdığınızda, yaptığınız değişiklik önizleme alanında görünür.
    • Varsayılan değer 24 x 24 dp'dir ve malzeme tasarımı spesifikasyonunda tanımlanmıştır. Varsayılan ayara dönmek için onay kutusunun işaretini kaldırın.

    • Saydamlık - Resmin opaklığını ayarlamak için kaydırıcıyı kullanın. Değişiklik, önizleme alanında görünür.
    • Sağdan sola düzeni için otomatik yansıtmayı etkinleştir - Düzen soldan sağa değil, sağdan sola doğru yansıtıldığında ayna görüntüsünün görüntülenmesini istiyorsanız bu seçeneği belirleyin. Örneğin, bazı diller sağdan sola doğru okunur; bir ok simgeniz varsa bu durumda onun ayna görüntüsünü görüntülemek isteyebilirsiniz. Eski bir projeyle çalışıyorsanız android:supportsRtl="true" öğesini uygulama manifestinize de eklemeniz gerekebileceğini unutmayın. Otomatik yansıtma, Android 5.0 (API düzeyi 21) ve üzeri sürümlerde ve Destek Kitaplığı ile desteklenir.
  6. İleri'yi tıklayın.
  7. İsteğe bağlı olarak modülü ve kaynak dizinini değiştirin:
    • Res Directory - Çekilebilir vektörü eklemek istediğiniz kaynak kaynak kümesini seçin: src/main/res, src/debug/res, src/release/res veya kullanıcı tanımlı bir kaynak kümesi. Ana kaynak grubu, hata ayıklama ve sürüm yayınlama dahil olmak üzere tüm derleme varyantları için geçerlidir. Hata ayıklama ve yayın kaynağı grupları, ana kaynak grubunu geçersiz kılar ve derlemenin bir sürümüne uygulanır. Hata ayıklama kaynağı grubu yalnızca hata ayıklama amaçlıdır. Yeni bir kaynak grubu tanımlamak için Dosya > Proje Yapısı > uygulama > Derleme Türleri'ni seçin. Örneğin, bir beta kaynak grubu tanımlayabilir ve sağ alt köşede "BETA" metnini içeren bir simgenin sürümünü oluşturabilirsiniz. Daha fazla bilgi için Derleme Varyantlarını Yapılandırma bölümüne bakın.

    Çıkış Dizinleri alanında, çizilebilir vektörü ve görüneceği dizin görüntülenir.

  8. Son'u tıklayın.
  9. Vector Asset Studio, app/src/main/res/drawable/ klasöründeki projeye çizilebilen vektörü tanımlayan bir XML dosyası ekler. Proje penceresinin Android görünümünde, oluşturulan vektör XML dosyasını drawable klasöründe görüntüleyebilirsiniz.

  10. Projeyi oluşturun.
  11. Minimum API düzeyi, Android 4.4 (API düzeyi 20) veya önceki bir sürümse ve Destek Kitaplığı tekniğini etkinleştirmediyseniz Vector Asset Studio PNG dosyaları oluşturur. Proje penceresinin Proje Dosyaları görünümünde, oluşturulan PNG ve XML dosyalarını app/build/generated/res/pngs/debug/ klasöründe görüntüleyebilirsiniz.

    Oluşturulan bu kafes dosyalarını düzenlememeniz, bunun yerine vektör XML dosyasıyla çalışmanız gerekir. Derleme sistemi, kafes dosyalarını gerektiğinde otomatik olarak yeniden oluşturur. Böylece bu dosyaları korumanız gerekmez.

SVG veya PSD dosyasını içe aktarma

Vector Asset Studio'yu açtıktan sonra aşağıdaki şekilde bir SVG veya PSD dosyasını içe aktarabilirsiniz:

  1. Vector Asset Studio'da Yerel dosya'yı seçin.
  2. Dosya, yerel bir sürücüde olmalıdır. Örneğin, dosya ağ üzerinde bulunuyorsa önce yerel bir sürücüye indirmeniz gerekir.

  3. ... öğesini tıklayarak bir Resim dosyası belirleyin.
  4. Resim, Vektör Çekilebilir Önizlemesi'nde görünür.

    SVG veya PSD dosyası desteklenmeyen özellikler içeriyorsa Vector Asset Studio'nun alt kısmında Şekil 3'te gösterildiği gibi bir hata görünür.

    3. Şekil. Vector Asset Studio'da bazı hatalar görünüyor.

    Hata görürseniz içe aktarılan vektör çekilebilir öğesinin düzgün bir şekilde oluşturulduğundan emin olmanız gerekir. Hataları görüntülemek için listeyi kaydırın.

    Desteklenen öğelerin listesi için Vektör Çekilebilir Geriye Dönük Uyumluluk Çözümleri bölümüne bakın. İzin verilen PSD dosyaları hakkında daha fazla bilgi için PSD Dosyaları için Destek ve Kısıtlamalar bölümüne bakın.

  5. İsteğe bağlı olarak kaynak adını, boyutunu, opaklığını ve Sağdan Sola (RTL) yansıtma ayarını değiştirin:
    • Ad: Varsayılan adı kullanmak istemiyorsanız yeni bir ad yazın. Vector Asset Studio, projede zaten mevcut olan kaynak adı varsa otomatik olarak benzersiz bir ad oluşturur (adın sonuna bir sayı ekler). Ad yalnızca küçük harf, alt çizgi ve rakam içerebilir.
    • Geçersiz kıl: Resmin boyutunu ayarlamak istiyorsanız bu seçeneği belirleyin. Seçiminizden sonra boyut, resmin boyutuna göre değişir. Boyutu her değiştirdiğinizde, değişiklik önizleme alanında görünür. Varsayılan değer 24 x 24 dp'dir ve malzeme tasarımı spesifikasyonunda tanımlanmıştır.
    • Saydamlık - Resmin opaklığını ayarlamak için kaydırıcıyı kullanın. Değişiklik, önizleme alanında görünür.
    • Sağdan sola düzeni için otomatik yansıtmayı etkinleştir - Düzen soldan sağa değil, sağdan sola doğru yansıtıldığında ayna görüntüsünün görüntülenmesini istiyorsanız bu seçeneği belirleyin. Örneğin, bazı diller sağdan sola doğru okunur; bir ok simgeniz varsa bu durumda onun ayna görüntüsünü görüntülemek isteyebilirsiniz. Eski bir projeyle çalışıyorsanız android:supportsRtl="true" öğesini uygulama manifestinize eklemeniz gerekebileceğini unutmayın. Otomatik yansıtma, Android 5.0 (API düzeyi 21) ve sonraki sürümler ile Destek Kitaplığı tarafından desteklenir.
  6. İleri'yi tıklayın.
  7. İsteğe bağlı olarak kaynak dizinini değiştirin:
    • Res Directory - Çekilebilir vektörü eklemek istediğiniz kaynak kaynak kümesini seçin: src/main/res, src/debug/res, src/release/res veya kullanıcı tanımlı bir kaynak kümesi. Ana kaynak grubu, hata ayıklama ve sürüm yayınlama dahil olmak üzere tüm derleme varyantları için geçerlidir. Hata ayıklama ve yayın kaynağı grupları, ana kaynak grubunu geçersiz kılar ve derlemenin bir sürümüne uygulanır. Hata ayıklama kaynağı grubu yalnızca hata ayıklama amaçlıdır. Yeni bir kaynak grubu tanımlamak için Dosya > Proje Yapısı > uygulama > Derleme Türleri'ni seçin. Örneğin, bir beta kaynak grubu tanımlayabilir ve sağ alt köşede "BETA" metnini içeren bir simgenin sürümünü oluşturabilirsiniz. Daha fazla bilgi için Derleme Varyantlarını Yapılandırma bölümüne bakın.

    Çıkış Dizinleri alanında, çizilebilir vektörü ve görüneceği dizin görüntülenir.

  8. Son'u tıklayın.
  9. Vector Asset Studio, app/src/main/res/drawable/ klasöründeki projeye çizilebilen vektörü tanımlayan bir XML dosyası ekler. Proje penceresinin Android görünümünde, oluşturulan vektör XML dosyasını drawable klasöründe görüntüleyebilirsiniz.

  10. Projeyi oluşturun.
  11. Minimum API düzeyi, Android 4.4 (API düzeyi 20) veya önceki bir sürümse ve Destek Kitaplığı tekniğini etkinleştirmediyseniz Vector Asset Studio PNG dosyaları oluşturur. Proje penceresinin Proje Dosyaları görünümünde, oluşturulan PNG ve XML dosyalarını app/build/generated/res/pngs/debug/ klasöründe görüntüleyebilirsiniz.

    Oluşturulan bu kafes dosyalarını düzenlememeniz, bunun yerine vektör XML dosyasıyla çalışmanız gerekir. Derleme sistemi, kafes dosyalarını gerektiğinde otomatik olarak yeniden oluşturur. Böylece bu dosyaları korumanız gerekmez.

Bir düzene çizilebilir bir vektör ekleme

Bir düzen dosyasında, simgeyle ilgili herhangi bir widget'ı (ör. ImageButton, ImageView vb.) bir vektör çekilebilir dosyasını işaret edecek şekilde ayarlayabilirsiniz. Örneğin, aşağıdaki düzende bir düğme üzerinde çizilebilir bir vektör gösterilmektedir:

4. Şekil. Düğme üzerinde, düzende görüntülenen bir çizim.

Bir widget üzerinde çizilebilir bir vektörü şekilde gösterildiği gibi görüntülemek için:

  1. Bir proje açın ve bir vektör çekilebilir dosyasını içe aktarın.
  2. Bu örnekte, Yeni Proje Sihirbazı ile oluşturulmuş bir Telefon/Tablet projesi kullanılmaktadır.

  3. Proje penceresinin Android görünümünde content_main.xml gibi bir düzen XML dosyasını çift tıklayın.
  4. Düzen Düzenleyici'yi görüntülemek için Tasarım sekmesini tıklayın.
  5. ImageButton widget'ını Palet penceresinden Düzen Düzenleyici'ye sürükleyin.
  6. Kaynaklar iletişim kutusunda, sol bölmeden Çekilebilir'i ve ardından içe aktardığınız çizimi seçin. Tamam'ı tıklayın.
  7. Çekilebilir vektör, düzende ImageButton üzerinde görünür.

  8. Resmin rengini temada tanımlanan vurgu rengiyle değiştirmek için Özellikler penceresinde Tonlama özelliğini bulup ... simgesini tıklayın.
  9. Kaynaklar iletişim kutusunda, sol bölmeden Renk'i ve ardından colorAccent'i seçin. Tamam'ı tıklayın.
  10. Resmin rengi, düzendeki vurgu rengine değişir.

Projede Destek Kitaplığı kullanılıyorsa ImageButton kodu aşağıdakine benzer olmalıdır:

<ImageButton
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:srcCompat="@drawable/ic_build_black_24dp"
  tools:layout_editor_absoluteX="11dp"
  tools:layout_editor_absoluteY="225dp"
  android:id="@+id/imageButton"
  android:tint="@color/colorAccent" />

Proje Destek Kitaplığı'nı kullanmıyorsa vektör çekilebilir kodu, android:src="@drawable/ic_build_black_24dp" olur.

Kodda çizilebilir bir vektöre başvuruda bulunma

Normalde kodunuzda bir vektör çekilebilir kaynağına genel bir şekilde başvuruda bulunabilirsiniz ve uygulamanız çalıştığında, karşılık gelen vektör veya kafes görüntüsü, API düzeyine bağlı olarak otomatik olarak görüntülenir:

  • Çoğu durumda, vektör çekilebilir kaynaklarını XML kodunda @drawable veya Java kodunda Drawable olarak referans alabilirsiniz.
  • Örneğin, aşağıdaki düzen XML kodu, resmi bir görünüme uygular:

    <ImageView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/myimage" />
    

    Aşağıdaki Java kodu resmi Drawable olarak alır:

    Kotlin

    val drawable = resources.getDrawable(R.drawable.myimage, theme)

    Java

    Resources res = getResources();
    Drawable drawable = res.getDrawable(R.drawable.myimage, getTheme());
    

    getResources() yöntemi; etkinlikler, parçalar, düzenler, görünümler gibi kullanıcı arayüzü nesnelerine uygulanan Context sınıfında yer alır.

  • Uygulamanız Destek Kitaplığı'nı hiç kullanıyorsa (build.gradle dosyanızda vectorDrawables.useSupportLibrary = true ifadesi olmasa bile) app:srcCompat ifadesiyle çekilebilir bir vektöre de başvurabilirsiniz. Örneğin:
  • <ImageView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        app:srcCompat="@drawable/myimage" />
    
  • Bazı durumlarda, çekilebilir kaynağı tam sınıfına yazmanız gerekebilir (örneğin, VectorDrawable sınıfının belirli özelliklerini kullanmanız gerektiğinde). Bunu yapmak için aşağıdaki gibi bir Java kodu kullanabilirsiniz:
  • Kotlin

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        val vectorDrawable = drawable as VectorDrawable
    } else {
        val bitmapDrawable = drawable as BitmapDrawable
    }
    

    Java

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
       VectorDrawable vectorDrawable = (VectorDrawable) drawable;
    } else {
       BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
    }
    

Vektör çekilebilir kaynaklarına yalnızca ana iş parçacığından erişebilirsiniz.

Destek Kitaplığı tekniği için, Destek Kitaplığı ile uyumlu kodlama teknikleri kullanmanız gerekir. Daha fazla bilgi için Android Destek Kitaplığı 23.2 bölümüne bakın.

Vector Asset Studio tarafından oluşturulan XML kodunu değiştirme

Çekilebilir vektör XML kodunu değiştirebilirsiniz, ancak oluşturma sırasında oluşturulan PNG'leri ve ilgili XML kodunu değiştiremezsiniz. Ancak bunu önermeyiz.

Vector Asset Studio, PNG oluşturma tekniğini kullanırken vektör çizimlerinin ve PNG'lerin eşleştiğinden ve manifestin doğru kodu içerdiğinden emin olur. Android 4.4 (API düzeyi 20) ve önceki sürümlerde desteklenmeyen bir kod eklerseniz vektörünüz ve PNG resimleriniz farklılık gösterebilir. Ayrıca, manifest dosyasının değişikliklerinizi destekleyecek kodu içerdiğinden de emin olmanız gerekir.

Destek Kitaplığı tekniğini kullanmadığınızda vektör XML dosyasını değiştirmek için:

  1. Proje penceresindeki drawable klasöründe oluşturulan vektör XML dosyasını çift tıklayın.
  2. XML dosyası düzenleyicide ve Önizleme pencerelerinde görünür.

    5. Şekil. Kod Düzenleyici'de ve Önizleme penceresinde görüntülenen bir vektör XML dosyası.

  3. XML kodunu minimum API seviyesinin desteklediği şekilde düzenleyin:
    • Android 5.0 (API düzeyi 21) ve sonraki sürümler - Vector Asset Studio, tüm Drawable ve VectorDrawable öğelerini destekler. XML öğeleri ekleyebilir ve değerleri değiştirebilirsiniz.
    • Android 4.4 (API düzeyi 20) ve önceki sürümler: Vector Asset Studio, tüm Drawable öğelerini ve VectorDrawable öğelerinin bir alt kümesini destekler. Liste için Vektör Çekilebilir Geriye Dönük Uyumluluk Çözümleri bölümüne bakın. Oluşturulan koddaki değerleri değiştirebilir ve desteklenen XML öğeleri ekleyebilirsiniz.
  4. Projeyi oluşturun ve vektör çekilebilirliği ile karşılık gelen kafes görüntülerin aynı göründüğünü kontrol edin.
  5. Farklı oluşturma motorları ve derlemeden önce çekilebilir vektörde yapılan değişiklikler nedeniyle, oluşturulan PNG'lerin Önizleme penceresinde uygulamadakinden farklı görünebileceğini unutmayın. Vector Asset Studio tarafından oluşturulan vektör XML dosyasına kod eklerseniz Android 4.4 (API düzeyi 20) ve önceki sürümlerinde desteklenmeyen özellikler, oluşturulan PNG dosyalarında görünmez. Bu nedenle, kod eklediğinizde oluşturulan PNG'lerin vektör çekilebilirliğiyle eşleşip eşleşmediğini daima kontrol etmeniz gerekir. Bunu yapmak için Proje penceresinin Proje Dosyaları görünümünde PNG'yi çift tıklayabilirsiniz. Şekil 6'da gösterildiği gibi, kodunuz çekilebilir öğeye başvuruda bulunduğunda Kod Düzenleyici'nin sol kenar boşluğu da PNG resmini gösterir.

    6. Şekil. Kod Düzenleyici'nin sol kenarında gösterilen bir PNG resmi.

Bir projeden çekilebilir bir vektörü silme

Bir projeden çekilebilir bir vektörü kaldırmak için:

  1. Proje penceresinde, oluşturulan vektör XML dosyasını dosyayı seçip Sil tuşuna basarak silin (veya Düzenle > Sil'i seçin).
  2. Güvenli Silme iletişim kutusu görünür.

  3. İsteğe bağlı olarak dosyanın projede kullanıldığı yeri bulmak için seçenekleri belirleyin ve Tamam'ı tıklayın.
  4. Android Studio, dosyayı projeden ve sürücüden siler. Bununla birlikte, projede dosyanın kullanıldığı yerleri aramayı seçtiyseniz ve bazı kullanımlar bulunursa bunları görüntüleyebilir ve dosyanın silinip silinmeyeceğine karar verebilirsiniz.

  5. Build (Derleme) > Clean Project'i (Projeyi temizle) seçin.
  6. Silinmiş vektöre karşılık gelen, otomatik olarak oluşturulmuş PNG ve XML dosyaları projeden ve sürücüden kaldırılır.

Vektör çekilebilir öğeleri içeren bir uygulamayı yayınlama

Destek Kitaplığı tekniğini kullandıysanız veya minimum API düzeyiniz Android 5.0 (API düzeyi 21) ya da sonraki bir sürümse APK'nız Vector Asset Studio ile eklediğiniz vektör çizimlerini içerir. Bu APK'lar, vektör resimlerin PNG'lere dönüştürülmesinden daha küçük olacaktır.

Minimum API düzeyiniz Android 4.4 (API düzeyi 20) veya önceki sürümleri içeriyorsa ve projenizde karşılık gelen vektör çizimleri ve kafes görüntüleri varsa APK dosyalarınızı göndermek için iki seçeneğiniz vardır:

  • Hem vektör çizimlerini hem de karşılık gelen kafes gösterimlerini içeren bir APK oluşturun. Bu çözüm, uygulanması en basit çözümdür.
  • Farklı API düzeyleri için ayrı APK'lar oluşturun. İlgili kafes resimleri Android 5.0 (API düzeyi 21) ve sonraki sürümler için APK'ya eklemediğinizde APK'nın boyutu çok daha küçük olabilir. Daha fazla bilgi için Birden Fazla APK Desteği başlıklı makaleyi inceleyin.

PSD dosyaları için destek ve kısıtlamalar

Vector Asset Studio tüm PSD dosyası özelliklerini desteklemez. Aşağıdaki listede, desteklenen ve desteklenmeyen PSD özelliklerinin yanı sıra bazı dönüştürme ayrıntıları özetlenmiştir.

Doküman

Destekleniyor:

  • Bit eşlem, gri tonlamalı, dizine eklenmiş, RGB, Lab veya CMYK'nın PSD renk modu.
  • 8, 16 veya 32 bit renk derinliği.

Dönüşüm ayrıntıları:

  • PSD belge boyutları, vektör çekilebilir ve görüntü alanı boyutları haline gelir.

Desteklenmeyenler:

  • Çift tonlu veya çok kanallı PSD renk modu.

Şekiller

Destekleniyor:

  • Kırpma tabanı başka bir şekilse kırpma maskeleri.
  • Birleştirme/ekleme, kesişim, çıkarma ve hariç tutma dahil şekil işlemleri.

Desteklenmeyenler:

  • Photoshop şekilleri tarafından kullanılan çift tek sayılı dolgu kuralı. Android 6.0 (API düzeyi 23) ve önceki sürümlerde vektör çekilebilir öğeleri yalnızca sıfır olmayan doldurma kuralını destekler. Kendiyle kesişen şekillerde, bu sınırlama PSD ile ortaya çıkan vektör çekilebilir arasında oluşturma farklılıklarına yol açabilir. Bu sorunu düzeltmek için vektör çekilebilir dosyasındaki şekle android:fillType="evenOdd" ekleyin. Örnek:
    <vector xmlns:android="https://schemas.android.com/apk/res/android"
        android:viewportHeight="168"
        android:height="24dp"
        android:viewportWidth="209"
        android:width="24dp">
    
        <path
            android:fillAlpha="1.0"
            android:fillColor="#000000"
            android:fillType="evenOdd"
            android:pathData="M24,58 L24,167 L114,167 L114,66 M64,1 L64,96 L208,96 L208,8 M1,97 L146,139 L172,47"/>
    </vector>
    

Fırça ve dolgular

Destekleniyor:

  • Renk, opaklık, genişlik, birleştirme, kap, tire ve hizalama dahil çizgiler.
  • Düz renkli dolgular ve fırçalar.
  • RGB, Laboratuvar veya CMYK olarak belirtilen çizgi ve dolgu renkleri.

Dönüşüm ayrıntıları:

  • Bir fırça kesik çizgiliyse, bir kırpma tabanı kullanılarak kırpılmışsa veya merkezden farklı bir hizalama kullanırsa Vector Asset Studio, bunu vektör çekilebilir özelliğinde bir dolgu şekline dönüştürür.

Desteklenmeyenler:

  • Renk dolguları ve düz dışındaki fırçalar (gradyanlar gibi).

Opaklık

Destekleniyor:

  • Katmanları opaklığı 0 ile şekillendirin.

Dönüşüm ayrıntıları:

  • Vector Asset Studio, dolgu alfasını hesaplamak için dolgu opaklığını katman opaklığıyla çarpar.
  • Araç, son dolgu alfasını hesaplamak için kırpma tabanının opaklığını (kırpma tabanı varsa) dolgu alfa karakteriyle çarpar.
  • Araç, alfa çizgisini hesaplamak için fırça opaklığını katman opaklığıyla çarpar.
  • Bu araç, son çizgi alfasını hesaplamak için kırpma tabanının opaklığını (bir kırpma tabanı varsa) alfa çizgisiyle çarpar.

Katmanlar

Destekleniyor:

  • Herhangi bir görünür şekil katmanı.

Dönüşüm ayrıntıları:

  • Vector Asset Studio, vektör çekilebilir dosyasındaki katmanların adını korur.

Desteklenmeyenler:

  • Katman efektleri.
  • Düzenleme ve metin katmanları.
  • Harmanlama modları (yok sayıldı).

SVG dosyaları için destek ve kısıtlamalar

Vector Asset Studio tüm SVG dosyası özelliklerini desteklemez. Aşağıdaki bölümde, araç bir SVG dosyasını VectorDrawable biçimine dönüştürdüğünde desteklenen ve desteklenmeyen özellikler ile ek dönüştürme ayrıntıları özetlenmektedir.

Desteklenen özellikler

VectorDrawable, Tiny SVG 1.2'deki metin hariç tüm özellikleri destekler.

Şekiller

VectorDrawable, SVG yollarını destekler.

Araç, daire, kare ve poligon gibi temel şekilleri yollara dönüştürür.

Dönüşümler

Araç, dönüşüm matrislerini destekleyip bunları doğrudan alt yollara uygular.

Gruplar

Araç, çevirme, ölçeklendirme ve döndürme için grup öğelerini destekler. Gruplar, opaklık özelliğini desteklemez.

Araç, grup stillerini veya opaklığını alt yollara da uygular.

Dolgular ve fırçalar

Yollar, düz renkler veya renk geçişleri (doğrusal, dairesel veya açısal) kullanılarak doldurulabilir ve çizilebilir. Yalnızca ortalanmış çizgiler desteklenir. Karışım modları desteklenmiyor. Kesikli yollar desteklenmez.

Maskeler

Araç, grup başına bir kırpma maskesini destekler.

SVG içe aktarıcısı tarafından desteklenmeyen özellikler

Yukarıdaki Desteklenen özellikler bölümünde listelenmeyen özellikler desteklenmez. Önemli desteklenmeyen özellikler arasında şunlar bulunur:

  • Filtre efektleri: Gölge, bulanıklaştırma ve renk matrisi gibi efektler desteklenmez.
  • Metin: Metnin diğer araçlar kullanılarak şekillere dönüştürülmesi önerilir.
  • Desen dolguları