2015-05-19 34 views
1

我創建了自定義視圖並覆蓋了onDraw方法。自定義視圖:畫布繪製方法給API錯誤

不過,Android工作室說我​​和canvas.drawArc通話需要我我的最低API設置爲21

帆布已自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; 
    } 
} 

該錯誤消息我得到的是:

調用API需要21級(當前分鐘是16):android.graphics.Canvas#drawOval少...(按Ctrl + F1)

在API 21.

public void drawOval (float left, float top, float right, float bottom, Paint paint)加入您從帆布使用

回答

9

的drawOval()方法 - 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

+0

謝謝,這個工作。 – jim

0

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);