Android uygulamamda vektör çekmecelerini kullanmaya çalışıyorum. Gönderen http://developer.android.com/training/material/drawables.html (vurgu mayın):
Android 5.0 (API Seviye 21) ve üzeri sürümlerde, tanımı kaybetmeden ölçeklenen vektör çekilebilir öğeleri tanımlayabilirsiniz .
Bu çekmeceyi kullanarak:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="@color/colorPrimary" android:pathData="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" />
ve bu ImageView:
<ImageView
android:layout_width="400dp"
android:layout_height="400dp"
android:src="@drawable/icon_bell"/>
simgeyi 400 dp'de görüntülemeye çalışırken bu bulanık görüntüyü oluşturur (2015 civarında lolipop çalıştıran büyük bir yüksek çözünürlüklü mobil cihazda):
Çekilebilir vektör tanımındaki genişlik ve yüksekliğin 200 dp'ye değiştirilmesi, 400 dp işlenmiş boyuttaki durumu önemli ölçüde iyileştirir. Ancak, bunu bir TextView öğesi (yani metnin solundaki simge) için bir çekilebilir olarak ayarlamak artık büyük bir simge oluşturur.
Sorularım:
1) Çekilebilir vektörde neden bir genişlik / yükseklik özelliği var? Tüm bunların kayıpsız bir şekilde yukarı ve aşağı ölçeklenmelerinin genişlik ve yüksekliği tanımında anlamsız hale getirmek olduğunu düşündüm.
2) Bir TextView üzerinde 24dp çekilebilir olarak çalışan, ancak aynı zamanda daha büyük görüntüleri kullanmak için iyi ölçeklenen tek bir vektör çekilebilirliği kullanmak mümkün müdür? Örneğin, farklı boyutlarda birden çok vektör çekilebilirliği oluşturmaktan nasıl kaçınabilirim ve bunun yerine işlenmiş gereksinimlerime göre ölçeklenen birini nasıl kullanabilirim?
3) Genişlik / yükseklik özniteliklerini nasıl etkili bir şekilde kullanırım ve görüntü alanı Genişliği / Yükseklik ile arasındaki fark nedir?
Ek detaylar:
- Cihaz API 22 çalıştırıyor
- Android Studio v1.5.1'i Gradle sürüm 1.5.0 ile kullanma
- Manifest derleme ve hedef seviye 23, minimum seviye 15. Ayrıca minimum seviyeyi 21'e çıkarmayı denedim, ancak bu hiçbir fark yaratmadı.
- APK'nin yeniden derlenmesi (minimum seviye 21'e ayarlı olarak) çekilebilir klasörde tek bir XML kaynağı gösterir. Rasterleştirilmiş görüntüler üretilmez.
New -> Vector Asset
onu seçtiğimde vektör görüntü XML'sini çekilebilir klasörüme bırakıyorum. Ancak, oluşturulan APK'yi paketinden çıkarmak için apktool kullanırsam, XML dosyalarının içinde olduğunudrawable-anydpi-v21
ve API 21+ cihazlarda doğru şekilde ölçeklendiğini görüyorum . Tarama dosyalarıdrawable-<mdpi/hdpi/etc>-v4
klasörlere yerleştirilir ve API 21+ cihazlarda kullanılmaz (doğru ölçeklendikleri gerçeğine göre)