6

एंड्रॉइड सपोर्ट लाइब्रेरी (23.2) का नवीनतम संस्करण वेक्टर ड्रॉबल्स के लिए समर्थन जोड़ता है। ऐसा लगता है कि वे प्लेटफार्मों पर फ्लाई पर वैक्टरों को रास्टराइज करके ऐसा करते हैं जो वेक्टर ड्रॉबल्स का मूल रूप से समर्थन नहीं करते हैं।एंड्रॉइड सपोर्ट लाइब्रेरी 23.2 वेक्टर ड्रॉबल्स धुंधले हैं

हालांकि, रास्टरराइज छवि एक निश्चित आकार के रूप में प्रतीत होती है जो उपयोग पर निर्भर करती है। यहां एक उदाहरण दिया गया है।

वेक्टर

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
     android:width="24dp" 
     android:height="24dp" 
     android:viewportWidth="24.0" 
     android:viewportHeight="24.0"> 
    <path 
     android:fillColor="#FF000000" 
     android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm0,3c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zm0,14.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/> 
</vector> 

लेआउट

<ImageView 
    android:layout_width="128dp" 
    android:layout_height="128dp" 
    android:id="@+id/imageView" 
    app:srcCompat="@drawable/vector1"/> 

वेक्टर 24dp एक्स 24dp है। इसका उपयोग एक छवि दृश्य में किया गया है जो 128 डीपी x 128 डीपी है। प्लेटफॉर्म पर वेक्टर ड्रॉबल्स का समर्थन नहीं करते हैं, परिणामी छवि धुंधली होती है क्योंकि वेक्टर 16 डीपी पर रास्टरराइज किया जाता है और 128 डीपी का आकार बदलता है।

मुझे मिला एकमात्र समाधान प्रत्येक इच्छित आकार के लिए एक अलग वेक्टर खींचने योग्य बनाना है। केवल ऊंचाई और चौड़ाई परिवर्तन के साथ डुप्लिकेट वैक्टर का एक गुच्छा बनाने के लिए यह बहुत परेशान है। और यदि आप fill_parent को आकर्षित करने योग्य या किसी अन्य तरीके से गतिशील रूप से आकार देने की इच्छा रखते हैं तो यह समस्या हल नहीं करता है।

उन्नत में अपने वेक्टर छवियों के आयामों को परिभाषित करने के लिए लगभग पूरी तरह से वैक्टर का उपयोग करने के लाभ को पूरी तरह से हरा देता है।

क्या किसी के पास कोई सच्चा काम है?

उत्तर

11

वेक्टर 16dp पर rasterized और 128dp को

23.1 अप करने के लिए, एंड्रॉयड प्रदान की VectorDrawable से शुरू रेखापुंज छवियों का निर्माण कर रहा आकार दिया जाता है। यह बात समर्थन पुस्तकालय के v23.2 में बदल गई। यह व्यवहार तब होता है जब आप सही ढंग से अपना build.gradle सेट अप करते हैं।

आप Gradle Plugin 2.0+ का उपयोग कर रहे हैं, तो

android { 
    defaultConfig { 
    vectorDrawables.useSupportLibrary = true 
    } 
} 

यदि आप 1.5.0

android { 
    defaultConfig { 
    generatedDensities = [] 
    } 

    // This is handled for you by the 2.0+ Gradle Plugin 
    aaptOptions { 
    additionalParameters "--no-version-vectors" 
    } 
} 

उपयोग कर रहे हैं आप सिंक के बाद, अपने कार्यक्षेत्र को साफ करने और फिर से निर्माण जोड़ें। आप इसके बारे में अधिक पढ़ सकते हैं here और here

+0

धन्यवाद, मैंने जेनरेटेडेंसिटी हिस्से को जोड़ने के लिए उपेक्षित किया और मुझे यह नहीं पता था कि सभी ग्रेडल छवियों को रास्टराइज कर सकते हैं। – Ben

संबंधित मुद्दे