EN SON GÜNCELLEME - Haziran / 2019
Destek Kitaplığı, orijinal cevaptan bu yana biraz değişti. Artık Gradle için Android eklentisi bile derleme zamanında otomatik olarak PNG oluşturabilir. Dolayısıyla, bugünlerde işe yaraması gereken iki yeni yaklaşım aşağıdadır. Daha fazla bilgiyi burada bulabilirsiniz :
PNG Üretimi
Gradle, derleme sırasında varlıklarınızdan otomatik olarak PNG görüntüleri oluşturabilir. Ancak, bu yaklaşımda, tüm xml öğeleri desteklenmez . Bu çözüm kullanışlıdır çünkü kodunuzda veya build.gradle'da herhangi bir değişiklik yapmanız gerekmez. Sadece Android Eklentisi 1.5.0 veya üstünü ve Android Studio 2.2 veya üstünü kullandığınızdan emin olun .
Bu çözümü uygulamamda kullanıyorum ve iyi çalışıyor. Ek build.gradle bayrağı gerekmez. Kesmeye gerek yok. Eğer giderseniz / yapı / üretilen / res / pngs / ... tüm oluşturulan PNGs görebilirsiniz.
Dolayısıyla, basit bir simgeniz varsa (tüm xml öğeleri desteklenmediğinden), bu çözüm sizin için işe yarayabilir. Android Studio'nuzu ve Gradle için Android eklentinizi güncellemeniz yeterlidir.
Destek Kitaplığı
Muhtemelen, sizin için işe yarayacak çözüm budur. Buraya geldiyseniz, bu, Android Studio'nuzun PNG'leri otomatik olarak oluşturmadığı anlamına gelir. Yani, uygulamanız kilitleniyor.
Veya belki de Android Studio'nun hiç PNG oluşturmasını istemiyorsunuz.
XML öğesinin bir alt kümesini destekleyen "Otomatik PNG oluşturma" dan farklı olarak, bu çözüm tüm xml etiketlerini destekler. Yani, vektör çiziminize tam desteğiniz var.
Desteklemek için önce build.gradle dosyanızı güncellemelisiniz :
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:23.2.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
}
Ve sonra yükleme sırasında app:srcCompat
yerine kullanın . Bunu unutma.android:src
VectorDrawables
İçin TextView
kullandığınız takdirde, androidx
Destek Kütüphanesi'nin sürümünü kullanabilirsiniz app:drawableLeftCompat
(veya sağ, üst, alt) yerineapp:drawableLeft
Durumunda CheckBox
/ RadioButton
kullanmak app:buttonCompat
yerine android:button
.
Eğer kullanmıyorsanız androidx
Destek Kütüphanesi ve sürümünü minSdkVersion
IS 17
veya daha yüksek veya bir düğmeyi kullanarak, sen aracılığıyla programlı ayarlamak deneyebilir
Drawable icon = AppCompatResources.getDrawable(context, <drawable_id>);
textView.setCompoundDrawablesWithIntrinsicBounds(<leftIcon>,<topIcon>,<rightIcon>,<bottomIcon>);
GÜNCELLEME - Temmuz / 2016
VectorDrawable'ı Android Destek Kitaplığı 23.4.0'da yeniden etkinleştirdiler
AppCompat kullanıcıları için , biz ekledik opt- için API desteği Vektör Drawables AppCompatDelegate.setCompatVectorFromResourcesEnabled (doğru) yolu ile kaynakların (davranış 23.2 bulundu) den yeniden etkinleştirmek - Unutmayın bu hala bellek kullanımı ve ilgili sorunlara neden olabilir Yapılandırma örneklerini güncelleme sorunları, bu nedenle varsayılan olarak devre dışı bırakılmasının nedeni.
Belki , build.gradle
ayar artık geçersizdir ve sadece uygun aktivitelerde etkinleştirmeniz gerekir (ancak, test etmeniz gerekir).
Şimdi, etkinleştirmek için yapmanız gerekenler:
public class MainActivity extends AppCompatActivity {
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
...
}
Orijinal Cevap - Nisan / 2016
Bunun en son kütüphane sürümünde Destek Vektörü devre dışı bırakıldığı için olduğunu düşünüyorum: 23.3.0
Bu POST'a göre :
AppCompat kullanıcıları için, 23.2.0 / 23.2.1 (ISSUE 205236) sürümündeki uygulamada bulunan sorunlar nedeniyle, Lollipop öncesi cihazlarda kaynaklardan vektör çizimlerini kullanmanıza izin veren işlevselliği kaldırmaya karar verdik . App: srcCompat ve setImageResource () kullanımı çalışmaya devam eder.
Sayı 205236'yı ziyaret ederseniz , gelecekte etkinleştirilecek gibi görünüyor ancak bellek sorunu yakında çözülmeyecek :
Bir sonraki sürümde, kaldırılan VectorDrawable desteğini yeniden etkinleştirebileceğiniz bir tercihe bağlı API ekledim. Daha önce olduğu gibi aynı uyarılarla birlikte gelir (bellek kullanımı ve Yapılandırma güncellemesiyle ilgili sorunlar).
Benzer bir sorun yaşadım. Bu yüzden, benim durumumda, vektör çizimini kullanan tüm simgeleri kaynaktan tekrar PNG görüntülerine geri döndürdüm (çünkü bellek sorunu, tekrar etkinleştirmek için bir seçenek sağladıktan sonra bile olmaya devam edecek).
Bunun en iyi seçenek olup olmadığından emin değilim, ancak bence tüm çökmeleri düzeltir.