带有画布的Android自定义视图

时间:2016-02-25 09:03:21

标签: android android-canvas

我想使用canvas在android中创建自定义项目符号。

以下是我的代码。

protected void onDraw(Canvas canvas) {
            // TODO Auto-generated method stub
            super.onDraw(canvas);
            int x = getWidth();
            int y = getHeight();
            int radius;
            radius = 100;
            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);
            paint.setColor(Color.WHITE);
            canvas.drawPaint(paint);
            // Use Color.parseColor to define HTML colors
            paint.setColor(Color.parseColor("#CD5C5C"));
            canvas.drawCircle(x / 2, y / 2, radius, paint);
        }

但它并没有产生我试图得到的观点。我把图像作为参考。我希望得到这样的看法。

enter image description here

1 个答案:

答案 0 :(得分:2)

我认为在这种情况下出现的问题是你在中心画圆圈的宽度和高度,请尝试获得你父视图的宽度和高度:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
   int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
   int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
   this.setMeasuredDimension(parentWidth/2, parentHeight);
   this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight));
   super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

并将这些值用于圈子的对齐, 如果这是你的问题,请告诉我。