Android पर SVG सपोर्ट


जवाबों:


56

सबसे पूर्ण उत्तर यह है:

  • Android 2.x डिफ़ॉल्ट ब्राउज़र मूल रूप से SVG का समर्थन नहीं करता है।
  • एंड्रॉइड 3+ डिफ़ॉल्ट ब्राउज़र एसवीजी का समर्थन करते हैं।

मंच के 2.x संस्करणों में एसवीजी समर्थन जोड़ने के लिए, आपके पास दो बुनियादी विकल्प हैं:

  1. अधिक सक्षम ब्राउज़र स्थापित करें (जैसे फ़ायरफ़ॉक्स या ओपेरा मोबाइल - दोनों एसवीजी का समर्थन करते हैं)
  2. जावास्क्रिप्ट पॉलीफ़िल का उपयोग करें जो एसवीजी को पार्स कर सकता है और इसे एचटीएमएल 5 कैनवास को सौंप सकता है

पहला विकल्प ठीक है यदि आप निजी उपयोग के लिए एसवीजी काम करने की कोशिश कर रहे हैं या उपयोगकर्ताओं का एक सीमित (नियंत्रणीय) सेट है। यदि आप बड़े, अनियंत्रित उपयोगकर्ता आधार को लक्षित करते हुए SVG का उपयोग करना चाहते हैं तो यह एक बढ़िया विकल्प नहीं है।

बाद के मामले में, आप एक पॉलीफिल का उपयोग करना चाहते हैं। आज कई जावास्क्रिप्ट लाइब्रेरी उपलब्ध हैं जो एसवीजी को प्रदर्शित कर सकते हैं और एक कैनवास को प्रस्तुत कर सकते हैं। दो उदाहरण हैं:

एक पॉलीफ़िल का उपयोग करके, आप अपने एसवीजी को एंड्रॉइड 2.x के सभी संस्करणों पर एक कैनवस में प्रस्तुत कर सकते हैं।

इस दृष्टिकोण के अधिक पूर्ण उदाहरण के लिए, आप इस ब्लॉग पोस्ट का उल्लेख कर सकते हैं जो किन्डो यूआई डेटाविज़ चार्ट (एसवीजी-आधारित) एंड्रॉइड 2.x पर काम करने के लिए कैनवग पॉलीफिल के उपयोग पर चर्चा करता है। उम्मीद है की वो मदद करदे!


हैलो, मैं ImageView के लिए जानना चाहूंगा, क्या मैं उस svg छवि रनटाइम का रंग बदलने में सक्षम हूं?
श्रेयश महाजन

22

एक नया ओपन-सोर्स लाइब्रेरी है जो एसवीजी बेसिक 1.1 फ़ाइलों को लोड करने और ड्राइंग का समर्थन करता है: https://github.com/pents90/svg-android । प्रदर्शन अच्छा है क्योंकि वास्तविक ड्राइंग एक android.graphics.Picture ऑब्जेक्ट द्वारा मूल रूप से नियंत्रित किया जाता है।


ताकि यह याद न हो, मैं यहां एक टिप्पणी जोड़ूंगा (जैसा कि @ टॉड के जवाब में उल्लेख किया गया है) एंड्रॉइड 3+ एसवीजी का समर्थन करता है। यदि पुराने Android उपकरणों के बारे में चिंतित नहीं हैं, तो डेवलपर्स को पुस्तकालयों के बारे में चिंतित होने की कोई आवश्यकता नहीं है।
मोनोटस्कर

9
मेरे जवाब में, मैं एक पुस्तकालय का उल्लेख कर रहा हूं जो एक डेवलपर को अपने ऐप में एसवीजी फ़ाइलों को लोड और प्रस्तुत करने में सक्षम बनाता है। एंड्रॉइड 3+ एसवीजी के लिए ब्राउज़र समर्थन जोड़ता है, लेकिन इसके डेवलपर एपीआई में एसवीजी का समर्थन नहीं है।
pents90

यह मेरे लिए दुर्भाग्य से एंड्रॉइड 4.3 के साथ काम नहीं करता था। नमूना छवि समाप्त होने से रिक्त होती है। मैं उस सटीक कोड का उपयोग कर रहा हूं जो विकी पर ट्यूटोरियल पेज में है।
बीवी

2
@BVB आपको Android 4.x पर काम करने के लिए हार्डवेयर त्वरण को बंद करना होगा। देखें: stackoverflow.com/questions/10384613/… और stackoverflow.com/questions/8771219/…
pents90

धन्यवाद, लेकिन क्या इसका नकारात्मक प्रभाव कहीं और नहीं होगा?
बीवीबी

8

वर्तमान में मेरे सहित कुछ लोग स्वतंत्र रूप से इस पर काम करते हैं।
आपको इन लेखों में काम करने का हल मिल सकता है:
  Android। SVG समर्थन के साथ ImageView।
  एसवीजी सपोर्ट के साथ एंड्रॉयड इमेज व्यू और ड्रॉएबल


8

एक नया पुस्तकालय (सक्रिय विकास के तहत) androidsvg है जो परियोजनाओं में सीधे svg छवियों को शामिल करने की अनुमति देता है। यह एक को परिभाषित करने का लाभ है SVGImageViewजो किसी को लेआउट xml में सीधे एक svg को शामिल करने की अनुमति देता है।

अंत में, Android में svg सहित सीधा है।

अधिक जानकारी: ढेर अतिप्रवाह पोस्ट


यह svg पुस्तकालय वास्तव में काम करता है। svg-android और यह कांटे उन शैलियों / css को लागू नहीं करते हैं जिन्हें मैंने समूह के बच्चों के लिए एक समूह में परिभाषित किया था। यह एक करता है। धन्यवाद।
दिनमानुक

8

एंड्रॉइड वेक्टर ड्रॉबल्स का समर्थन करता है: https://developer.android.com/reference/android/graphics/drawable/Vectorrawraw.html

और वेक्टरड्रायबल कनवर्टर के लिए एक एंड्रॉइड एसवीजी मौजूद है: http://inloop.github.io/svg2android/


1
और समर्थन पुस्तकालय में पिछड़े बंदरगाह: developer.android.com/reference/android/support/graphics/…
Leos लीटरक

2

मैंने https://code.google.com/p/androidsvg/ पर संक्षिप्त जानकारी दी है । अब तक सभी एसवीजी फाइलें जो मैंने उस पर फेंक दीं, प्रदर्शित कीं। उम्मीद तो दिखती है।


1

मैं सिर्फ एक Github रेपो और उदाहरण के लिए अपने खुद के TPSVG पुस्तकालय के लिए रेपो को चकित करता हूं, जिसे मैंने मूल रूप से मेरे एक आवेदन के लिए बनाया है।

https://github.com/TrevorPage/TPSVG_Android_SVG_Library

https://github.com/TrevorPage/TPSVG_Example1


1

मुझे पता है कि मेरा समाधान कुछ हद तक कट्टर है, लेकिन यह बहुत अच्छा काम करता है, किसी भी बाहरी पुस्तकालयों की आवश्यकता नहीं है (कम से कम आपके अंतिम कोड में नहीं) और यह बहुत तेज़ है।

1) बस एक मौजूदा एसवीजी लोडिंग लाइब्रेरी लें, जैसे कि उदाहरण के लिए svg-android-2 (जो कि svg-android का एक कांटा है, जो किसी अन्य उत्तर में उल्लेख किया गया है, अधिक सुविधाओं और बगफिक्स के साथ): https://code.google.com / p / svg-android-2 /

2) एक सरल ऐप लिखें जो आपकी एसवीजी छवि को लोड करने और प्रदर्शित करने के अलावा और कुछ नहीं करेगा।

3) एसवीजी लोडिंग लाइब्रेरी को संशोधित करें, ताकि यह जावा कोड प्रिंट करता है जो चित्र वर्ग बनाता है या इसे स्ट्रिंग चर में बचाता है।

4) जावा कोड को कॉपी-पेस्ट करें जिस तरह से आप लिख रहे हैं।

इस तकनीक के बारे में अधिक जानकारी प्राप्त करने और नमूना स्रोत कोड डाउनलोड करने के लिए, मेरे ब्लॉग पर जाएँ : http://androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-android.html

आप Google Play से इस तकनीक का कार्यशील उदाहरण यहां प्राप्त कर सकते हैं: https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.svgtodrawablesample

इस तकनीक (मिलान मेट्रो मैप) का उपयोग करके बनाए गए व्यावसायिक ऐप का उदाहरण यहां दिया गया है: https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.atmmetroplan

गौर करें कि आवर्धन होने पर भी नक्शा कितना तेज और कितना सुंदर दिखता है।


1

की जाँच करें समर्थन वेक्टर drawable । एंड्रॉइड स्टूडियो में एसवीजी फाइलों को .XML फाइलों में बदलने का उपकरण होता है।

इमेज व्यू के साथ AppCompat का उपयोग करते समय (या ImageButton और FloatingActionButton जैसे उपक्लास), आप नए ऐप का उपयोग करने में सक्षम होंगे: वेक्टर ड्राअवेबल्स (साथ ही एंड्रॉइड के लिए उपलब्ध किसी भी अन्य ड्रॉइंग को संदर्भित करने के लिए srcCompat विशेषता):

एंड्रॉइड सपोर्ट लाइब्रेरी 23.3.0 के अनुसार, वेक्टर वेक्टर का समर्थन केवल ऐप के माध्यम से किया जा सकता है: srcCompat या setImageource ()



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.