绘制自定义视图

时间:2017-07-12 20:33:37

标签: android android-custom-view shape

我想创建一个在圆圈内有复选标记的自定义视图。请参考下图。

绘制圆圈很容易。我需要一些关于绘制刻度线的建议。

任何帮助表示赞赏。

enter image description here

2 个答案:

答案 0 :(得分:2)

如果您没有特定的要求来创建自定义视图,我建议您只使用矢量drawable:

<?xml version="1.0" encoding="utf-8"?>
<vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">

    <path
        android:pathData="M0 12a12 12 0 1 1 0 0.01z"
        android:fillColor="#8ab88c"/>

    <path
        android:pathData="M5.25 12l4.5 4.5l9 -9"
        android:strokeColor="#ffffff"
        android:strokeWidth="2.5"/>

</vector>

第一个<path>元素使用椭圆弧命令绘制圆,第二个使用两个&#34; lineto&#34;用于绘制支票的命令。

这可以在ImageView内部使用,包含您喜欢的任何尺寸,并且可以很好地缩放。

如果您必须实现自定义视图,我会在onDraw()实现中使用相同的常规技术:

@Override
protected void onDraw(Canvas canvas) {
    rectF.set(getLeft(), getTop(), getRight(), getBottom());
    canvas.drawOval(rectF, fillPaint);

    float checkmarkWidth = getWidth() * 0.5626f;
    float delta = checkmarkWidth / 3.0f;

    float initialX = (getWidth() - checkmarkWidth) / 2.0f;
    float initialY = getHeight() / 2.0f;

    path.reset();
    path.moveTo(initialX, initialY);
    path.rLineTo(delta, delta);
    path.rLineTo(2 * delta, -2 * delta);

    strokePaint.setStrokeWidth(getWidth() / 9);
    canvas.drawPath(path, strokePaint);
}

答案 1 :(得分:0)

使用https://dashboard.heroku.com/apps/sistemacrm/deploy/heroku-git,您可以绘制一个drawable数组,其中索引最大的元素将被绘制在顶部。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/circle" />
    <item android:drawable="@drawable/check" />
</layer-list>

或者您可以使用LayerDrawable,右键点击可绘制文件夹&gt;新&gt;矢量资产&gt;图标&gt;搜索“检查圈子”。