2017-07-12 204 views
0

我想创建一个自定义视图,其中有一个圆圈内的复选标记。参考下面的图片。绘图自定义视图

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

任何帮助表示赞赏。

enter image description here

+0

你可能会考虑矢量绘图资源使用路径。 –

回答

1

如果没有特定的要求,以创建自定义视图,我建议干脆用绘制矢量:

<?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>元素使用椭圆弧命令画圆,而第二使用两个“lineto”命令来绘制检查。

这可以用在你想要的任何尺寸的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); 
} 
0

随着LayerDrawable你可以画绘项目,其中与最大的索引元素将在上面绘制的数组。

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

或者你可以使用一个VectorDrawable,右键单击文件夹绘制>新建>矢量资源>图标>搜索“复圆”。