2017-08-27 31 views
13

जब मैं एक वेक्टर खींचने योग्य बनाता हूं, तो मैं इसका आकार dp में सेट कर सकता हूं। डिफ़ॉल्ट 24 डीपी एक्स 24 डीपी है।एंड्रॉइड वेक्टर संपत्तियां: डीपी माप केवल "रैप सामग्री" के लिए मायने रखते हैं?

  1. क्या यह माप प्रदर्शन के मामले में महत्वपूर्ण है यदि मैं अपने ऐप में 24 डीपी x 24 डीपी से भिन्न आकार में वेक्टर का उपयोग करता हूं? 21 के तहत एपीआई के संबंध में भी (छवियों को दिखाने के लिए मैं app:srcCompat का उपयोग करता हूं)।

  2. जब निचला एपीआई उपयोग किया जाता है और सिस्टम इसे नीचे स्केल करता है, तो क्या वेक्टर आकार मायने रखता है?

  3. क्या यह माप मेरे उपयोग के लिए महत्वपूर्ण है, केवल डिफ़ॉल्ट आकार होने के अलावा, जब मैं wrap_content लागू करता हूं?

+0

तो तुम माप के लिए या भी पाठ के लिए केवल वेक्टर छवि आकार चाहते हैं का उपयोग कर रहे

  • # 1, में उत्तर दिया? यदि आप सभी के लिए ** कॉम्पाइल 'com.intuit.sdp: sdp-android: 1.0.4' ** लाइब्रेरी माप के लिए लाइब्रेरी का उपयोग कर सकते हैं। –

  • +0

    मुझे लगता है कि यह https: // stackoverflow में मदद कर सकता है।कॉम/ए/35 9 30518/4252667 –

    उत्तर

    1

    मैं शायद आपके सभी सवालों लेकिन यकीन है कि के लिए डी पी आकार मायने रखती है अगर आप पहले से लॉलीपॉप संस्करणों पर समर्थन पुस्तकालय के माध्यम से वेक्टर ड्रॉएबल उपयोग नहीं कर रहे उत्तर नहीं दे सकता।

    android { 
        defaultConfig { 
         vectorDrawables.useSupportLibrary = true 
        } 
    } 
    

    https://android-developers.googleblog.com/2016/02/android-support-library-232.html

    देखें यदि यह आपके एप्लिकेशन की निर्माण फ़ाइल एंड्रॉयड स्टूडियो PNG का उत्पन्न होगा का हिस्सा नहीं है:

    समर्थन वेक्टर ड्रॉएबल यदि आप अपने ऐप्स के Gradle निर्माण फ़ाइल में निम्न जोड़ना होगा सक्षम करने के लिए सभी प्री-लॉलीपॉप संस्करणों के लिए जिनके पास परिभाषित डीपी आकार होगा। तो यदि आपका वेक्टर 24 डीपी परिभाषित करता है और आप इसे 128 डीपी ग्राफ़िक के रूप में उपयोग कर रहे हैं, तो संभवत: प्री-लॉलीपॉप संस्करणों पर यह बहुत अच्छा नहीं लगेगा क्योंकि 24 डीपी पीएनजी का उपयोग किया जाएगा।

    उत्पन्न PNG का यहां पाया जा सकता:

    app\build\generated\res\pngs\... 
    

    otherway चारों ओर अगर आपके वेक्टर 128dp है और आप 24dp ग्राफिक पीएनजी ग्राफिक कम कर दिया के रूप में यह प्रयोग कर रहे हैं के रूप में भी सही नहीं लग रही हो सकता है की वजह से अपेक्षा के अनुरूप स्केलिंग और आप शायद बहुत बड़े पीएनजी के कारण कुछ फ़ाइल आकार बर्बाद कर रहे हैं।

    मैं वास्तव में है कि प्रदर्शन के लिए क्या मतलब है पर कभी नहीं देखा ...

    +0

    हां बिल्कुल। मैंने पीएनजी पीढ़ी के फॉलबैक के बारे में सोचा नहीं था। इसलिए अनिवार्य रूप से, यदि आप पीएनजी फॉलबैक के बिना वेक्टर ड्रायबल का उपयोग कर रहे हैं, तो ड्रॉइंग एक्सएमएल में आयाम केवल तभी मायने रखते हैं जब आप 'wrap_content' का उपयोग कर रहे हों। धन्यवाद! –

    0
    1. जब आप wrap_content उपयोग कर रहे हैं, तो डिवाइस अपने वांछित आकार (24dp) में वेक्टर प्रस्तुत करना होगा। बड़े आकार को सेट करने के परिणामस्वरूप बड़ा बिटमैप प्रस्तुत किया जाएगा, जो आपके यूआई और प्रदर्शन को प्रभावित करता है। यदि आप रैप सामग्री का उपयोग नहीं कर रहे हैं और वे वेक्टर के लिए समर्थन लाइब्रेरी का उपयोग कर रहे हैं, वेक्टर आकार से कोई फर्क नहीं पड़ता।
    2. यदि आप vectorDrawables.useSupportLibrary = false सेट करते हैं, तो आपके एपीके में डिवाइस एपीआई 21 के लिए इस्तेमाल किए गए वैक्टरों के जेनरेट किए गए बिटमैप्स भी होंगे। बड़ी बिटमैप्स को खोलने के लिए और अधिक समय चाहिए, और अधिक मेमोरी का उपयोग करता है और आपके एपीके का आकार भी बढ़ाता है। यदि आप अपने यूआई के लिए आवश्यक आकार से बड़े आकार का उपयोग करते हैं (सिस्टम इसे स्केल करेगा), यह प्रदर्शन को भी प्रभावित करेगा और संभवतः छवि गुणवत्ता को कम कर सकता है। जब आप उपयोग नहीं कर रहे wrap_content, आकार कोई फर्क नहीं करना चाहिए अगर आप vectorDrawables.useSupportLibrary = true
    संबंधित मुद्दे