2017-05-28 17 views
8

में आइटमों के बीच दृश्य जोड़ना मेरे पास स्क्रोल करने योग्य ग्रिड व्यू है जहां वस्तुओं के बीच खाली स्थान खाली स्थान है। ग्रिड में कुछ ऑब्जेक्ट्स के लिए, मैं एक से दूसरेग्रिड व्यू

का अर्थ रखने के लिए तीर छवियों को जोड़ना चाहता हूं, जिसका मतलब है, वॉरक्राफ्ट प्रतिभा के पेड़ (http://calculators.iradei.eu/talents/mage) के बारे में सोचें। आप देखेंगे कि कुछ प्रतिभाओं में एक आइटम से अगले आइटम तक तीर हैं।

लेआउट मैं बस के साथ काम कर रहा हूँ एक framelayout में एक gridview, और कुछ नहीं

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <GridView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:numColumns="4" 
     android:scrollbars="none" 
     android:id="@+id/talent_tree_grid_view"> 
    </GridView> 

</FrameLayout> 

मैं, कोड में इन ImageViews जोड़ने के लिए के रूप में मुझे नहीं लगता कि किसी भी तरह से है कोशिश कर रहा हूँ शामिल मैं ग्रिड व्यू के लिए एडाप्टर में यह तर्क जोड़ सकता है।

मैं उन्हें माता-पिता FrameLayout, पर एक्स और GridView आइटम के y coords आधारित के बच्चों के रूप में जोड़ने की कोशिश की है, और यह काम करता है, लेकिन GridView स्क्रॉल जब, तीर भी स्क्रॉल नहीं है

मैं उन्होंने ग्रिड व्यू के बच्चों के रूप में सीधे उन्हें जोड़ने की कोशिश की है, लेकिन यह इस व्यवहार का समर्थन नहीं करता है (यह java.lang.UnsupportedOperationException फेंकता है)

क्या कोई विचार है कि मैं ग्रिडव्यू आइटमों के बीच इन छवियों को कैसे जोड़ सकता हूं?

+0

आप ग्रिडलाउट को विस्तारित करना चाहते हैं और अपनी खुद की ड्राइंग – F43nd1r

+0

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

+0

मैंने डेमो प्रोजेक्ट को शामिल करने के लिए अपना जवाब अपडेट कर दिया है। – Cheticamp

उत्तर

5

यह रोमैन गाय के "शेल्व" ऐप के समान लगता है जहां एक कस्टम GridView का उपयोग किया जाता है और बुकशेल्फ़ स्क्रॉल की पृष्ठभूमि छवि का उपयोग किया जाता है। प्रोजेक्ट here पर एक नज़र डालें। कस्टम ग्रिड व्यू के लिए स्रोत स्रोत कोड में ShelvesView.java फ़ाइल में पाया जा सकता है। गाय रोमैन से एक त्वरित परिचय here है;

तीर के लिए, आप 9-patch drawable पर विचार करना चाहेंगे।


मैं एक छोटे से अधिक ऊपर दृष्टिकोण की जांच की और गूगल के Hello GridView example पर आधारित एक नमूना एप्लिकेशन होना है।

इस उदाहरण ऐप को लेते हुए, मैंने एक कस्टम ग्रिड व्यू (DogsGridView.java) बनाया है और वर्ल्ड वार्कक्राफ्ट प्रतिभा पेड़ के अपने उदाहरण के समान खाली कोशिकाओं में फ़ोटो को कनेक्ट किया है। मैं बस सरल रेखाओं का उपयोग करता हूं, लेकिन कक्षाओं को तीरों या किसी अन्य ग्राफिक से जोड़ने के लिए संशोधित किया जा सकता है।

यहां कनेक्टिंग लाइनों के साथ quick video है। यहां 9-पैच तीरों के साथ another है।

परियोजना स्रोत here पाया जा सकता है।

+0

आपके उत्तर Cheticamp के लिए धन्यवाद! यह काम करता था, लेकिन स्क्रॉलिंग करते समय मेरे पास प्रदर्शन के मुद्दे थे, क्योंकि कनेक्टिंग तीरों को लगातार फिर से खींचा जा रहा था, मुझे लगता है? मैं एक समाधान को कार्यान्वित कर सकता हूं जिसमें ग्रिड व्यू आइटम (जो मेरे मामले में framelayouts हैं) के भीतर तीरों के टुकड़े ड्राइंग शामिल है। तो जिस वस्तु से तीर उत्पन्न होता है, उसमें तीर का पहला भाग होता है, किसी भी खाली ग्रिड रिक्त स्थान के बीच मध्य वर्ग होते हैं, और अंतिम ग्रिड आइटम जहां तीर समाप्त होता है, तीर का अंत बिंदु होता है। अगर मैं इसे ठीक से काम कर रहा हूं तो मैं उस उत्तर को यहां पोस्ट करूंगा। – Dportology

+0

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

+0

@ डॉटोलॉजी जिस तरह से मैंने लूपिंग किया था, तीरों को कई बार खींचा जा रहा था। मैंने खोजों को पंक्तियों के बजाय नीचे दिए गए कॉलम में बदल दिया है, इसलिए इसे बेहतर प्रदर्शन करना चाहिए। प्रत्येक दृश्य स्थिति को केवल एक बार माना जाना चाहिए। गिटहब में अपडेट हैं। – Cheticamp