एंड्रॉइड में SVG का उपयोग करने का सबसे आसान तरीका?


165

मैंने एंड्रॉइड में svg का उपयोग करने और प्रत्येक रिज़ॉल्यूशन के लिए अलग-अलग रिज़ॉल्यूशन के निराशाजनक निर्माण और फ़ाइलों को छोड़ने से बचने के लिए पुस्तकालयों का असंख्य पाया है, यह तब बहुत कष्टप्रद हो जाता है जब ऐप में कई आइकन या चित्र होते हैं।

क्या कोई भी एंड्रॉइड में SVG का उपयोग करने के लिए लाइब्रेरी का उपयोग करने के लिए सरलतम कदम से कदम की प्रक्रिया देने के लिए दयालु हो सकता है, मुझे यकीन है कि यह कई अन्य लोगों की भी मदद करेगा।

इसके अलावा, मैं अपने आइकन और चित्र बनाने के लिए एंड्रॉइड स्टूडियो और इलस्ट्रेटर का उपयोग करता हूं।



Android स्टूडियो में svg आयात करने के लिए लघु वीडियो: youtube.com/watch?v=8e3I-PYJNHg
Zohab Ali

जवाबों:


337

पहले आपको svgसरल चरणों का पालन करके फ़ाइलों को आयात करने की आवश्यकता है ।

  1. ड्रा करने योग्य पर राइट क्लिक करें
  2. नया क्लिक करें
  3. वेक्टर एसेट चुनें

यदि छवि आपके कंप्यूटर में उपलब्ध है, तो स्थानीय svgफ़ाइल का चयन करें । उसके बाद छवि पथ का चयन करें और यदि आप चाहते हैं तो संवाद के दाईं ओर छवि का आकार बदलने का विकल्प भी उपलब्ध है। इस तरह svgसे आपकी परियोजना में छवि आयात की जाती है। इस छवि का उपयोग करने के लिए उसी प्रक्रिया का उपयोग करें

@drawable/yourimagename

5
लघु और उपयोगी उत्तर, सिरदर्द के बिना जब आप प्रोजेक्ट करने के लिए बाहरी svg फ़ाइलों का आयात करते हैं।
कोडटॉइल

2
वास्तव में मैं क्या देख रहा था :)
मोहम्मद नगेह

5
Nextबटन हमेशा अक्षम है। किसी भी विचार क्यों?
mrid

तो, हम svg का रंग कैसे बदलते हैं?
ओनिया डैनियल

एक जादू की तरह काम करता है। अच्छा!
सुद 6००

19

अद्यतन: इस पुराने उत्तर का उपयोग करें, इसका बेहतर उपयोग करें: https://stackoverflow.com/a/39266840/4031815

ठीक है, अनुसंधान के कुछ घंटों के बाद मैंने svg-android को उपयोग करने में काफी आसान पाया , इसलिए मैं यहाँ कदम दर कदम निर्देश छोड़ रहा हूँ:

  1. इस से डाउनलोड करने के लिए: https://code.google.com/p/svg-android/downloads/list नवीनतम संस्करण डाउनलोड करें :svg-android-1.1.jar

  2. जार को libदिर में रखें ।

  3. अपनी * .svg फ़ाइल को res/drawabledir में सहेजें (इलस्ट्रेटर में सेव को दबाने जितना आसान है और svg को चुनें)

  4. Svg लाइब्रेरी का उपयोग करके अपनी गतिविधि में निम्नलिखित कोड दें:

    ImageView imageView = (ImageView) findViewById(R.id.imgView);
    SVG svg = SVGParser.getSVGFromResource(getResources(), R.drawable.example);
    //The following is needed because of image accelaration in some devices such as samsung
    imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    imageView.setImageDrawable(svg.createPictureDrawable());



आप बॉयलरप्लेट कोड को इस तरह कम कर सकते हैं

बहुत आसान मैंने पिछले कोड को शामिल करने और बॉयलरप्लेट कोड को कम करने के लिए एक साधारण वर्ग बनाया, जैसे:

import android.app.Activity;
import android.view.View;
import android.widget.ImageView;

import com.larvalabs.svgandroid.SVG;
import com.larvalabs.svgandroid.SVGParser;

public class SvgImage {

    private static ImageView imageView;
    private Activity activity;
    private SVG svg;
    private int xmlLayoutId;
    private int drawableId;


    public SvgImage(Activity activity, int layoutId, int drawableId) {
        imageView = (ImageView) activity.findViewById(layoutId);
        svg = SVGParser.getSVGFromResource(activity.getResources(), drawableId);
        //Needed because of image accelaration in some devices such as samsung
        imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        imageView.setImageDrawable(svg.createPictureDrawable());
    }
}

अब मैं इसे गतिविधि में इस तरह कह सकता हूं:

    SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain);
    SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder);
    SvgImage oceanSVG = new SvgImage(MainActivity.this, R.id.oceanImageView, R.drawable.ocean);
    SvgImage fireSVG = new SvgImage(MainActivity.this, R.id.fireImageView, R.drawable.fire);
    SvgImage windSVG = new SvgImage(MainActivity.this, R.id.windImageView,R.drawable.wind);
    SvgImage universeSVG = new SvgImage(MainActivity.this, R.id.universeImageView,R.drawable.universe);

3
आपको अपने स्वयं के उत्तर को चिह्नित करने पर विचार करना चाहिए क्योंकि पिछले एक के बजाय स्वीकार किया गया है
क्लिफ बर्टन

1
जब मैं SVG फ़ाइलों को जोड़ने की कोशिश कर रहा हूँ तो मुझे यह कहते हुए त्रुटि हो रही है, त्रुटि: फ़ाइल का नाम .xml या .png के साथ समाप्त होना चाहिए
Sujay UN

1
क्यों है imageView static? मुझे यहां एक ह्यूग लाल बग झंडा दिखाई देता है। SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain); SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder); rainSVG के संदर्भ में thunderImageView शामिल है
DSchmidt

@DSchmidt जो कि इमेजव्यू का केवल एक संकेतक है। अगर यह मेरा कोड होता तो मैं पूरी कक्षा को लोडएसवीजी नामक एक विधि से स्थिर बना देता। और जैसा कि आप देख सकते हैं कि निजी चर पर डेटा लोड करने का कोई बिंदु नहीं है जिसे एक्सेस नहीं किया जा सकता है।
नसरेडडाइन गेलफौट

14

एंड्रॉइड स्टूडियो एसवीजी को 1.4 के बाद से सपोर्ट करता है

यहाँ एक वीडियो है कि कैसे आयात किया जाए


यह सबसे अच्छा जवाब है। एंड्रॉइड स्टूडियो इसे सुपर आसान बनाता है!
डस्टिन्रॉव

5

पुस्तकालयों को जोड़ने के बजाय जो आपके एपीके आकार को बढ़ाता है, मैं आपको सुझाव दूंगा कि http://inloop.github.io/svg2android/ का उपयोग करके Svg को ड्रा करने योग्य में परिवर्तित करें । और vectorDrawables.useSupportLibrary = trueढाल में जोड़ें ,


3

SVG2VectorDrawable प्लगइन की कोशिश करो। प्राथमिकताएं-> प्लगइन्स-> प्लगइन्स ब्राउज़ करें और SVG2VectorDrawable स्थापित करें। वेक्टर दराज के लिए शिथिलता फ़ाइलों को परिवर्तित करने के लिए महान। एक बार जब आप स्थापित हो जाते हैं, तो आपको टूलबार अनुभाग में सहायता के लिए दाईं ओर (?) आइकन के लिए एक आइकन मिलेगा।


मेरे लिए काम नहीं करता है - एसवीजी फ़ाइल पथ भी प्लगइन में अपलोड नहीं होता है। ऊपर सबसे अच्छा उत्तर बहुत सरल है, और काम हो जाता है।
डेविनोटविड

महान प्लगइन - जल्दी से कई svg वेक्टर वेक्टर में परिवर्तित!
मोर्टन होलगार्ड

2
  1. android प्रोजेक्ट में उपयोग करने के लिए आपको SVG को XML में बदलना होगा।

1.1 आप इस साइट के साथ ऐसा कर सकते हैं: http://inloop.github.io/svg2android/ लेकिन यह कुछ ग्रेडिएटर्स की तरह SVG की सभी विशेषताओं का समर्थन नहीं करता है।

1.2 आप एंड्रॉइड स्टूडियो के माध्यम से परिवर्तित कर सकते हैं लेकिन यह कुछ सुविधाओं का उपयोग कर सकता है जो केवल एपीआई 24 का समर्थन करता है और उच्चतर है जो पुराने उपकरणों में आपके ऐप को क्रेश करता है।

और vectorDrawables.useSupportLibrary = trueइस तरह से प्रयोग करें

<android.support.v7.widget.AppCompatImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:srcCompat="@drawable/ic_item1" />
  1. इस लाइब्रेरी का उपयोग करें https://github.com/MegatronKing/SVG-Android जो इन सुविधाओं का समर्थन करता है: https://github.com/MegatronKing/SVG-Android/blob/master/support_d_.md

इस कोड को एप्लिकेशन क्लास में जोड़ें:

public void onCreate() {
    SVGLoader.load(this)
}

और इस तरह SVG का उपयोग करें:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_android_red"/>

जब आपके पास @ पल्लवी का सीधा फॉरवर्ड अप्रोच है तो एसवीजी लोडर का उपयोग क्यों करें? क्या लोडर का उपयोग करने का कोई फायदा है?
तस्लीम ओसेनी

@ तस्लीम समर्थित विशेषताएं सामान्य तरीके से अधिक है। आप समर्थित सुविधाओं को देख और देख सकते हैं।
सज्जाद अब्बासी

0

1) ड्रा करने योग्य निर्देशिका पर राइट क्लिक करें, फिर नए पर जाएं, फिर वेक्टर परिसंपत्तियों पर जाएं 2) क्लिप आर्ट से लोकल 3 में संपत्ति प्रकार बदलें) अपनी फाइल को ब्राउज़ करें 4) साइज 5 दें) फिर 5 पर क्लिक करें, फिर अगला किया गया। निर्देशिका

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