2015-07-29 4 views
6

में एक आधा चक्र आकर्षित करने के लिए मैं अपने अनुप्रयोग में एक आधा आकर्षित करने के लिए इस कोड का उपयोग कर रहा हूँ:कैसे एंड्रॉयड

<?xml version="1.0" encoding="utf-8" ?> 
<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <item 
     android:left="35dp" 
     android:top="40dp" 
     android:bottom="40dp" 
     android:right="0dp"> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="oval" android:innerRadius="30dp" android:thickness="0dp"> 
      <solid android:color="@color/transparent"/> 
      <stroke android:width="3dp" android:color="@color/White"/> 

     </shape> 
    </item> 
</layer-list> 

उत्पादन:

enter image description here

लेकिन मैं नीचे की तरह कुछ की जरूरत है:

enter image description here

यह कैसे आकर्षित करने के लिए?

उत्तर

9

मैं कोड के माध्यम से आकर्षित करने के लिए सुझाव है।

1- कक्षा MyView बनाएं और नीचे कोड डालें।

public class MyView extends View { 

    public MyView(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     float width = (float) getWidth(); 
     float height = (float) getHeight(); 
     float radius; 

     if (width > height) { 
     radius = height/4; 
     } else { 
     radius = width/4; 
     } 

     Path path = new Path(); 
     path.addCircle(width/2, 
     height/2, radius, 
     Path.Direction.CW); 

     Paint paint = new Paint(); 
     paint.setColor(Color.BLACK); 
     paint.setStrokeWidth(5); 
     paint.setStyle(Paint.Style.FILL); 

     float center_x, center_y; 
     final RectF oval = new RectF(); 
     paint.setStyle(Paint.Style.STROKE); 

     center_x = width/2; 
     center_y = height/2; 

     oval.set(center_x - radius, 
      center_y - radius, 
      center_x + radius, 
      center_y + radius); 
     canvas.drawArc(oval, 90, 180, false, paint); 
    } 
} 

2-प्रारंभ अंदर आप गतिविधि या टुकड़ा इस वर्ग: -

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(new MyView(this)); 
} 
+0

धन्यवाद भाई। यह महान है। – testStack

+0

@testStack आपका स्वागत है दोस्त। –

11

आप अपने सर्कल के हिस्से को काटने के लिए <clip /> ड्रायबल का उपयोग कर सकते हैं।

http://developer.android.com/guide/topics/resources/drawable-resource.html#Clip

+0

जवाब –

+2

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

+1

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

10

आपका एक आयत आकार .xml फ़ाइल का उपयोग करें और केवल एक तरफ कोने संपादित कर सकते हैं।

उदाहरण:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <size android:height="30dp" 
     android:width="30dp"/> 
    <solid android:color="@color/black"/> 
    <corners android:topLeftRadius="15dp" 
     android:bottomLeftRadius="15dp"/> 
</shape> 
+0

"Path.addRoundRect में विभिन्न कोने आकार समर्थित नहीं हैं" – Dogcat