如何在android中绘制半圈

tes*_*ack 7 android

我正在使用此代码在我的应用中绘制一半:

  <?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>
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

但我需要以下内容:

在此输入图像描述

怎么画这个?

Ada*_*dav 16

我建议通过代码绘制它.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

2 - 在您的活动或片段中初始化此类: -

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new MyView(this));
}
Run Code Online (Sandbox Code Playgroud)

  • 您添加了 Path path = new Path();.... 的行,但您从不使用它....不必要的 (2认同)

Dan*_*ñez 13

您可以使用矩形形状.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>
Run Code Online (Sandbox Code Playgroud)


Dmi*_*sev 12

您可以使用<clip />drawable来截断圆圈的一部分.

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

  • 好,但不是一个完整的答案.答案应该能够独立,并且只使用链接作为支持.这个想法是当android移动URL时,这个答案仍然有效.事实并非如此.因为我必须去其他地方学习剪辑标签是什么. (5认同)