2016-05-18 5 views
5

मैं अपने प्रोजेक्ट के लिए षट्भुज आकार बनाना चाहता हूं, इसलिए मैं उस आकार को .xml प्रारूप में बनाना चाहता हूं, इसलिए मैं कैसे बना सकता हूं।.xml प्रारूप में हेक्सागोन आकार कैसे बनाएं

like this image

like this image

+0

क्या आप 'छवि दृश्य' पृष्ठभूमि में उपयोग करना चाहते हैं? या कोई अन्य उद्देश्य। –

+0

हाँ, मैं ImageView पृष्ठभूमि में उपयोग करना चाहता हूं। इसलिए मुझे यह आकार .xml प्रारूप – suraj

+0

http://stackoverflow.com/a/22987264/1992254 – Tejas

उत्तर

9

आप के लिए सबसे अच्छा समाधान VectorDrawable का उपयोग किया जाएगा:

वेक्टर drawable के रूप में

षट्कोण आकार:

<vector android:height="24dp" android:viewportHeight="628.0" 
android:viewportWidth="726.0" android:width="27dp" xmlns:android="http://schemas.android.com/apk/res/android"> 
<path android:fillColor="#00ffffff" 
    android:pathData="m723,314c-60,103.9 -120,207.8 -180,311.8 -120,0 -240,0 -360,0C123,521.8 63,417.9 3,314 63,210.1 123,106.2 183,2.2c120,0 240,0 360,0C603,106.2 663,210.1 723,314Z" 
    android:strokeColor="#000000" android:strokeWidth="4"/> 
</vector> 

अद्यतन (28: ०७.२,०१६):

लॉलीपॉप उपयोग समर्थन लाइब्रेरी के नीचे एपीआई का समर्थन करने के http://android-developers.blogspot.com/2016/02/android-support-library-232.html VectorDrawableCompat का उपयोग करना याद रखें VectorDrawable

+0

यह फ़ाइल के अप्रत्याशित अंत को दिखाता है /> – suraj

+0

स्टैक ओवरफ्लो स्वरूपण और टैग के साथ कुछ गलत था। मैंने ठीक कर दिया। – koliczyna

+0

हाँ यह काम कर रहा है। क्या आप साझा कर सकते हैं कि आप किस उपकरण का उपयोग करते हैं। इस प्रारूप को बनाने के लिए – suraj

1

सबसे समाधान सहित शामिल होगा जबकि ShapeImageView (जो एक महान पुस्तकालय है, Btw), तो आप हमेशा एक कस्टम षट्भुज आकार का लेआउट बनाने के लिए अपने स्वयं के तर्क लिख सकते हैं।

तुम सब Path ऑब्जेक्ट के गुणों को परिभाषित करने और उसके बाद का उपयोग करें कि कैनवास का उपयोग कर लेआउट की विधि OnDraw() में करने की जरूरत है।

इस प्रकार आप हेक्सागोन पथ बनाएंगे।

float midx = getWidth()/2; 
    float midy = getHeight()/2; 

    Path p = new Path(); 

    p.moveTo(midx, midy); 
    p.lineTo(midx+150, midy + 220); 
    p.lineTo(midx, midy + 220); 
    p.lineTo(midx-150, midy + 220); 
    p.lineTo(midx-300, midy); 
    p.lineTo(midx-150, midy-220); 
    p.lineTo(midx+150, midy-220); 
    p.lineTo(midx+300, midy); 
    p.lineTo(midx+150, midy + 220); 
    return p; 

अब, अपने कस्टम हेक्सागोन लेआउट में, इस पथ को ऑन ड्रा() में उपयोग करें।

@Override 
protected void onDraw(Canvas canvas) { 
     Path clipPath = new Path(); 
     clipPath.addPath(p); //p is the path you created above 
     canvas.clipPath(clipPath); 
     canvas.drawColor(Color.RED); //optional 

     super.onDraw(canvas) 
} 

बार जब आप अपने कस्टम लेआउट तैयार है, आप किसी भी drawable आप चाहते हैं (यदि आप किसी अन्य लेआउट के लिए क्या करना होगा बस के रूप में) करने के लिए लेआउट की पृष्ठभूमि सेट कर सकते हैं।

संबंधित मुद्दे