自定义视图:Canvas 绘制方法给出 API 错误
Custom View: Canvas draw methods give API error
我创建了一个自定义视图并覆盖了 onDraw
方法。
但是,Android Studio 说我的 canvas.drawOval
和 canvas.drawArc
调用要求我将我的最小值 API 设置为 21。
Canvas 从 API 1 开始就存在了,对吗?
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.Button;
public class PieButton extends Button {
float progress = 0f;
public PieButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(0xFF00C853);
canvas.drawOval(0, 0, getWidth(), getHeight(), paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(0xFF000000);
canvas.drawArc(0, 0, getWidth(), getHeight(), 0f, progress*(-360), true, paint);
}
public void setProgress (float inputProgress) {
progress = inputProgress;
}
}
我收到的错误信息是:
Call requires API level 21 (current min is 16): android.graphics.Canvas#drawOval less... (Ctrl+F1)
您在 canvas 中使用的 drawOval() 方法已添加到 API 21.
public void drawOval (float left, float top, float right, float bottom, Paint paint)
- API 21.
您应该尝试使用带有 RectF 参数的 drawOval()。
public void drawOval (RectF oval, Paint paint)
- API 1
同样适用于 drawArc()。使用带 RectF 参数的 drawArc。
public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
- API 1
canvas.drawOval(0, 0, getWidth(), getHeight(), paint);
正在 API 级别 21 中添加。参见 API 调用 here。
如果你想在 api 级别上绘制椭圆,最低级别低于 21,你应该按以下方式使用它,
RectF rect=new RectF(0, 0, getWidth(), getHeight());
public void drawOval (rect, paint);
我创建了一个自定义视图并覆盖了 onDraw
方法。
但是,Android Studio 说我的 canvas.drawOval
和 canvas.drawArc
调用要求我将我的最小值 API 设置为 21。
Canvas 从 API 1 开始就存在了,对吗?
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.Button;
public class PieButton extends Button {
float progress = 0f;
public PieButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(0xFF00C853);
canvas.drawOval(0, 0, getWidth(), getHeight(), paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(0xFF000000);
canvas.drawArc(0, 0, getWidth(), getHeight(), 0f, progress*(-360), true, paint);
}
public void setProgress (float inputProgress) {
progress = inputProgress;
}
}
我收到的错误信息是:
Call requires API level 21 (current min is 16): android.graphics.Canvas#drawOval less... (Ctrl+F1)
您在 canvas 中使用的 drawOval() 方法已添加到 API 21.
public void drawOval (float left, float top, float right, float bottom, Paint paint)
- API 21.
您应该尝试使用带有 RectF 参数的 drawOval()。
public void drawOval (RectF oval, Paint paint)
- API 1
同样适用于 drawArc()。使用带 RectF 参数的 drawArc。
public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
- API 1
canvas.drawOval(0, 0, getWidth(), getHeight(), paint);
正在 API 级别 21 中添加。参见 API 调用 here。
如果你想在 api 级别上绘制椭圆,最低级别低于 21,你应该按以下方式使用它,
RectF rect=new RectF(0, 0, getWidth(), getHeight());
public void drawOval (rect, paint);