2012-04-07 12 views
8

LayerDrawable उपयोग करने के लिए कोशिश कर रहा है का उपयोग किए बिना एक LayeredList में स्केलिंग आकार की रोकथाम एक-दूसरे पर कई आकार ड्रॉएबल परत (परत-सूची के रूप में एक्सएमएल में परिभाषित); एक लेआउट के लिए पृष्ठभूमि के रूप में इस्तेमाल किया जाना है।बिटमैप

एंड्रॉयड गाइड (for LayerList) का कहना है:

सभी drawable आइटम डिफ़ॉल्ट रूप से युक्त देखें, के आकार के अनुसार बदल जाता है। इस प्रकार, विभिन्न पदों पर एक परत सूची में अपनी छवियों को रखने देखें का आकार बढ़ सकता है और कुछ छवियों के रूप में उपयुक्त पैमाने। सूची में आइटम स्केलिंग से बचने के लिए drawable निर्दिष्ट और कुछ है कि बड़े पैमाने नहीं करता है, इस तरह के "केन्द्र" के रूप में परिभाषित गुरुत्वाकर्षण के <item> तत्व के अंदर एक <bitmap> तत्व का उपयोग करें।

मैं अपने आकार पैमाने पर नहीं करना चाहते, लेकिन मैं अनिश्चित उन्हें bitmap टैग सही ढंग से में रैप करने के लिए कैसे कर रहा हूँ: यह एक त्रुटि का उत्पादन करता है, तो मैं यह कर इस प्रकार है:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <bitmap 
      android:src="@drawable/layer_one" 
      android:gravity="center" /> 
    </item> 
    <item> 
     <bitmap 
      android:src="@drawable/layer_two" 
      android:gravity="center" /> 
    </item> 
    <item> 
     <bitmap 
      android:src="@drawable/layer_three" 
      android:gravity="center" /> 
    </item> 
    <item> 
     <bitmap 
      android:src="@drawable/layer_four" 
      android:gravity="center" /> 
    </item> 
</layer-list> 

शिकायत:

बाइनरी एक्सएमएल फ़ाइल लाइन # 25: <bitmap> एक वैध src विशेषता की आवश्यकता है

ड्रॉबल्स में से एक का उदाहरण, उदा। रेस/drawable/layer_one.xml:

<?xml version="1.0" encoding="utf-8"?> 

<!-- res/drawable/layer_one.xml --> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <solid android:color="#FFFFFF"/> 
    <corners 
     android:bottomRightRadius="15dp" 
     android:bottomLeftRadius="15dp" 
     android:topLeftRadius="15dp" 
     android:topRightRadius="15dp" /> 
</shape> 

एंड्रॉयड साइट पर इस्तेमाल किया उदाहरण ड्रॉएबल के रूप में छवियों का उपयोग करता है, नहीं एक्सएमएल से परिभाषित आकार (कहने के लिए नहीं है कि मेरे त्रुटि इन के लिए विशिष्ट है, और मैं नहीं है कहीं मूर्खतापूर्ण गलती की)। किसी भी सुराग की सराहना की, धन्यवाद।


Using drawable resources
इस सवाल का जवाब कहा गया है कि यदि आप एक बिटमैप के लिए स्रोत के रूप में एक XML drawable उपयोग नहीं कर सकते। मैं प्रश्न के शीर्षक में संशोधन कर दिया है, अब पूछते हैं कि आप bitmap का उपयोग किए बिना स्केलिंग (जिससे कंटेनर दृश्य आकार बदलने) से आकार रोका जा सकता है, या मैं वास्तविक छवि संसाधनों का उपयोग करने के लिए मजबूर?


जोड़ा वांछित परिणाम की एक छवि - एक नियमित रूप से आयत भरा आकार या जो कुछ भी है, और इस के शीर्ष पर तो स्तरित के साथ एक पृष्ठभूमि है करने की क्षमता है, और अधिक आकार ड्रॉएबल (यहाँ वहाँ 3 दीर्घवृत्त हैं)। पर छोड़ दिया, आदर्श जहां शीर्ष और बाएं ऑफसेट अनुमति दी जाती है, और पर सही ठीक है, जहां सभी आकृति सिर्फ एक डिफ़ॉल्ट स्थिति के लिए जाना है:

enter image description here

उत्तर

2

हाँ, (अनुसार अपने पिछले answer) आप बिटमैप्स के लिए एक्सएमएल ड्रायबल का उपयोग नहीं कर सकते हैं। यह बनाना ठीक है, लेकिन जब आप ऐप चलाते हैं, तो यह दुर्घटनाग्रस्त हो जाता है।

बयान use a <bitmap> element inside the <item> element का अर्थ है कि आप अपनी परत सूची में और आकार परिभाषित कर सकते हैं और यही वह है। हालांकि आप भी बिटमैप परिभाषित कर सकते हैं लेकिन उसके बाद अपने बिटमैप्स एक src मूल्य ठोस (नहीं xml) छवि का जिक्र होना चाहिए।

आप क्या कर सकते हैं layer_one, layer_two और अन्य परत के xml को अपनी layer_list xml में डालने के लिए है। उदाहरण के लिए:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item> 
     <shape 
      android:shape="rectangle" > 
      <solid android:color="#FFFFFF" /> 

      <corners 
       android:bottomLeftRadius="15dp" 
       android:bottomRightRadius="15dp" 
       android:topLeftRadius="15dp" 
       android:topRightRadius="15dp" /> 
     </shape> 
    </item> 

    <!-- and so on with your other shapes --> 

</layer-list> 

आशा है कि यह :)

+0

क्षमा वकास काम करना चाहिए, जब एंड्रॉयड देव साइट से उद्धृत बैकटिक भूल गया, पढ़ना चाहिए, अब तय " तत्व में एक तत्व का उपयोग करें"। जिस विधि का आप वर्णन करते हैं वह वह है जो मैंने शुरू किया था, लेकिन माता-पिता को भरने के लिए आकार स्केल करें जो मैं टालने का प्रयास कर रहा हूं :( – ataulm

+0

हां, यह कथन वैध स्रोत विशेषता के साथ बिटमैप्स का उपयोग करने के लिए अभी भी मान्य है (xml का जिक्र नहीं खींचने योग्य) परत सूची में खींचने योग्य के रूप में। एंड्रॉइड की डेवलपर साइट में भी, वे उदाहरण के रूप में ठोस छवियों का उपयोग कर रहे हैं। आप क्या उत्पादन करने की कोशिश कर रहे हैं? क्या आप इसे एक छवि के रूप में पोस्ट कर सकते हैं? शायद मैं आपको कुछ अन्य समाधान सुझा सकता हूं – waqaslam

+2

कथन है गुरुत्वाकर्षण (बिटमैप के) को "केंद्र" में सेट करते समय वैध नहीं है जो इसे स्केलिंग से रोक देगा। मैं पृष्ठभूमि के रूप में एक-दूसरे (आकार में कमी) पर भरे भरे हुए लंबित इलिप्स की एक श्रृंखला को परिभाषित करने की उम्मीद कर रहा था। (प्रयोग, अंतिम नहीं डिज़ाइन: पी) 10min के भीतर एक छवि पोस्ट करेगा। – ataulm