Android:自定义视图中的RectF参数

时间:2012-10-21 09:01:06

标签: android android-layout android-custom-view

我有一个自定义视图,我正在绘制饼图。该图表是在RectF中绘制的。但是如果我想创建RectF,我需要设置xLeft,xRight,yTop,yBottom params ......但是我不知道这个参数!我的自定义视图将包含在linearLayout中,其高度和填充父级。怎么样?

public class PieChart extends View {
private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
private float[] value_degree;
private int[] COLORS;
RectF rectf;

public PieChart(Context context, float[] values, int colors[]) {

    super(context);
    value_degree = new float[values.length];
    COLORS = colors;
    for (int i = 0; i < values.length; i++) {
        value_degree[i] = values[i];
    }

}

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);

    rectf = new RectF(// I dont want to hardcode coordinates here);

    for (int i = 0; i < value_degree.length; i++) {
        paint.setColor(COLORS[i]);
        canvas.drawArc(rectf, 270 + 90 * i, value_degree[i], true, paint);
    }
}

}

在我的Actitivy中

 @Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
 LinearLayout linearLayout = (LinearLayout) findViewById(R.id.pie_chart);
 linearLayout .addView(new PieChart(this, someValues, someColors));

}

1 个答案:

答案 0 :(得分:0)

当你实例化PieChart对象时,你传递一个数组value_degree。使用此数组的大小来预先确定大小或RectF。您可以在2(即rectfHeight = 5 * value_degree.lenght)之间实现常量关系,或创建某种变量动态关系。