1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java canvas画圆圈_java – 在视图上绘制一个圆圈(android)

java canvas画圆圈_java – 在视图上绘制一个圆圈(android)

时间:2019-10-17 02:20:11

相关推荐

java canvas画圆圈_java – 在视图上绘制一个圆圈(android)

几点意见:

在确定圆的中心点和半径时,您需要考虑分配给视图的宽度和高度.

您应该考虑分配给视图的填充,这样就不会绘制该保留部分.

你应该避免在onDraw方法中分配对象,因为这会被调用很多.

为了允许在XML布局中指定视图,您需要提供带有Context和AttributeSet的构造函数. AttributeSet是将XML属性传递给视图的机制.

尝试一下:

package com.tak3r07.montecarlopi;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.view.View;

public class CircleView extends View

{

private static final int DEFAULT_CIRCLE_COLOR = Color.RED;

private int circleColor = DEFAULT_CIRCLE_COLOR;

private Paint paint;

public CircleView(Context context)

{

super(context);

init(context,null);

}

public CircleView(Context context,AttributeSet attrs)

{

super(context,attrs);

init(context,attrs);

}

private void init(Context context,AttributeSet attrs)

{

paint = new Paint();

paint.setAntiAlias(true);

}

public void setCircleColor(int circleColor)

{

this.circleColor = circleColor;

invalidate();

}

public int getCircleColor()

{

return circleColor;

}

protected void onDraw(Canvas canvas)

{

super.onDraw(canvas);

int w = getWidth();

int h = getHeight();

int pl = getPaddingLeft();

int pr = getPaddingRight();

int pt = getPaddingTop();

int pb = getPaddingBottom();

int usableWidth = w - (pl + pr);

int usableHeight = h - (pt + pb);

int radius = Math.min(usableWidth,usableHeight) / 2;

int cx = pl + (usableWidth / 2);

int cy = pt + (usableHeight / 2);

paint.setColor(circleColor);

canvas.drawCircle(cx,cy,radius,paint);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。