How to draw half circle in android

I use this code to draw half in my application:

<?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> 

output:

enter image description here

but I need something like below:

enter image description here

how to draw it?

+6
source share
3 answers

I would suggest doing this through code.

1- Create a class MyView and put the code below.

 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 -Initialization of this class inside your activity or fragment: -

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

You can use <clip /> drawable to clip part of your circle.

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

+11
source

You can use a rectangular XML file and edit corners on one side only.

Example:

 <?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> 
+10
source

All Articles