2011-10-22 19 views
11

में एक पृष्ठभूमि drawable मैं अपने आवेदन के लिए एक पृष्ठभूमि के रूप में एक एसवीजी छवि (इंकस्केप उपयोग कर बनाई गई और सादे एसवीजी के रूप में सहेजा) का उपयोग करने की कोशिश कर रहा हूँ के रूप में एक एसवीजी का उपयोग करना। मैं svg-android लाइब्रेरी का उपयोग करके ऐसा करने की कोशिश कर रहा हूं। मेरे पास में background.svg नामक एक फ़ाइल है। मेरे कोड इस तरह दिखता है:एंड्रॉयड

SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.background); 
Drawable pictureDrawable = svg.createPictureDrawable(); 
Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(), pictureDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); 
BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap); 

LinearLayout backgroundLayout = (LinearLayout) findViewById(R.id.background); 
bitmapDrawable.setTileModeX(Shader.TileMode.REPEAT); 
backgroundLayout.setBackgroundDrawable(bitmapDrawable); 

लेकिन जब मेरे आवेदन शुरू होता है, कुछ भी नहीं ऊपर पृष्ठभूमि (लेआउट से पृष्ठभूमि रंग के अलावा अन्य) के रूप में दिखाता है। ऐसा प्रतीत होता है मेरी एसवीजी के साथ एक समस्या है कि वहाँ

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#aacceeff" 
    > 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/background" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    > 
</LinearLayout> 

</LinearLayout> 

अद्यतन

: मेरी लेआउट xml फ़ाइल इस प्रकार है। यह इस तथ्य के कारण हो सकता है कि सभी सुविधाएं समर्थित नहीं हैं।

+0

आप Drawable pictureDrawable BitmapDrawable bitmapDrawable के बजाय लेआउट की पृष्ठभूमि के रूप में सेट करने की कोशिश की है? –

+0

@ डिमिटिस मैक्रिस हां, यह पहली बात थी जिसकी मैंने कोशिश की लेकिन मुझे अभी भी एक खाली पृष्ठभूमि मिली है। एक और समस्या यह है कि 'चित्र ड्रॉबल' पर टाइलिंग सेट करने का कोई तरीका नहीं है। –

+0

शायद ज़रुरत पड़े; - यू पता एंड्रॉयड देशी रूप का समर्थन नहीं करता एसवीजी Android के लिए Firefox पर अपने कोड का प्रयास करें? – Chasbeen

उत्तर

14

svg-एंड्रॉयड परियोजना एक वर्ष से अधिक में अद्यतन नहीं किया गया है और यह SVG1.2 का समर्थन नहीं करता तो इंकस्केप (मुक्त स्रोत) द्वारा उत्पन्न SVGs समर्थित नहीं हैं। AndroidSVG

वे 1.3 पर संस्करण 1.2 और काम पर हैं जो वर्तमान में चल रहा है:

वहाँ हालांकि एक नया एंड्रॉयड svg पुस्तकालय है। जार लाइब्रेरी समेत एक प्रोग्रामेटिक रूप से एंड्रॉइड अनुप्रयोगों में svgs शामिल कर सकते हैं। लगभग सभी svg सुविधाओं को शामिल किया गया है। मुझे अभी तक एक एसवीजी नहीं मिला है कि मैं इस पुस्तकालय का उपयोग करने में शामिल नहीं था।

क्या आप SVGImageView वर्ग जो imageView का ही विस्तार है जिससे तुम इतनी तरह XML लेआउट फ़ाइलों का उपयोग कर अपनी परियोजना के लिए svg जोड़ सकते हैं पाने के एक पुस्तकालय मॉड्यूल के रूप में अपनी परियोजना में स्रोत (Hg क्लोन) से androidsvg शामिल हैं:

<com.caverock.androidsvg.SVGImageView 
    xmlns:svg="http://schemas.android.com/apk/res-auto" 
    android:layout_width="100dp" 
    android:layout_height="50dp" 
    svg:svg="filename.svg"/> 

यह है कि। संपत्ति फ़ोल्डर में आपको केवल filename.svg स्थान देना है और आप जाने के लिए अच्छे हैं।

यह एपीआई 8 और ऊपर का समर्थन करता है। API < 11 के लिए इसका उपयोग करते समय कुछ समस्याएं थीं लेकिन मैं इन्हें ठीक करने में सक्षम था। मैंने उन्हें प्रोजेक्ट पेज पर मुद्दों के रूप में पोस्ट किया और लेखकों ने कुछ मिनटों में जवाब दिया। उन्हें अगले संशोधन में जोड़ा गया है। यदि आपको कोई समस्या है, तो हल किए गए मुद्दों को देखें, जिससे मैं यहां प्रश्नों के उत्तर देने के लिए उपलब्ध हूं।

पीएस प्रोजेक्ट पेज पर प्रलेखन और उदाहरण उत्कृष्ट हैं और लाइब्रेरी के साथ काम करने में खुशी है। एंड्रॉइड और एसवीजी एक शक्तिशाली मिश्रण हैं।

1

मैं एक उदाहरण की कोशिश की निम्नलिखित कोड का उपयोग कर और यह पृष्ठभूमि सही ढंग से पता चलता है:

LinearLayout root = (LinearLayout) findViewById(R.id.background); 
SVG svg = SVGParser.getSVGFromResource(getResources(), 
       R.raw.android_body); 
Drawable pictureDrawable = svg.createPictureDrawable(); 
root.setBackgroundDrawable(pictureDrawable); 

यदि आप किसी अन्य svg साथ की कोशिश की?

+0

मैंने ब्राउज़र में एसवीजी लोड करने का प्रयास किया और ऐसा लगता है कि यह ठीक दिख रहा है, ऐसा लगता है कि इसमें कुछ भी गलत नहीं है। मुझे एक और svg कोशिश करने दो।ओह, क्या आपने इसे नेस्टेड लेआउट के साथ भी कोशिश की है जैसा कि मेरे पास है? मुझे आश्चर्य है कि क्या यह समस्या में योगदान दे रहा है। –

+0

हाँ, एक ही लेआउट exaclty, लेकिन हाँ यह अप्रासंगिक है। मैं जिस svg का उपयोग करता हूं वह svg-android प्रोजेक्ट (लाइव वॉलपेपर प्रोजेक्ट) –

+0

से है, मैंने इसे प्रदान किए गए svg के साथ कोशिश की और ऐसा लगता है कि यह काम करता है। तो मुझे लगता है कि यह मेरे svg के साथ एक मुद्दा है। –