edison_cool911 发表于 2013-1-15 02:21:12

API中画arc的简单代码

package com.test;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.os.Bundle;import android.view.View;public class DrawActivity extends Activity {protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(new DrawView(this));}private static class DrawView extends View {private Paint[] mPaints;private Paint mFramePaint;private RectF[] mOvals;private RectF mBigOval;private float mStart;private float mSweep;private int mBigIndex;private boolean[] mUseCenters;private static final float START_INC = 0;// 度数增加控制参数private static final float SWEEP_INC = 2;public DrawView(Context context) {super(context);mPaints = new Paint;mUseCenters = new boolean;mOvals = new RectF;mPaints = new Paint();mPaints.setAntiAlias(true);mPaints.setColor(0x88111111);mUseCenters = false;mPaints = new Paint(mPaints);mPaints.setStyle(Paint.Style.FILL);mPaints.setColor(0x88FF0000);mUseCenters = true;mPaints = new Paint(mPaints);mPaints.setStyle(Paint.Style.STROKE);mPaints.setStrokeWidth(10);mPaints.setColor(0x8800FF00);mUseCenters = false;mPaints = new Paint(mPaints);mPaints.setStyle(Paint.Style.FILL_AND_STROKE);mPaints.setColor(0x880000FF);mUseCenters = true;mBigOval = new RectF(40, 10, 280, 250);mOvals = new RectF(10, 270, 70, 330);mOvals = new RectF(90, 270, 150, 330);mOvals = new RectF(170, 270, 230, 330);mOvals = new RectF(250, 270, 310, 330);mFramePaint = new Paint();mFramePaint.setAntiAlias(true);// 控制图形是否填充mFramePaint.setStyle(Paint.Style.STROKE);mFramePaint.setStrokeWidth(5);}private void drawArcs(Canvas canvas, RectF oval, boolean useCenter,Paint paint) {canvas.drawRect(oval, mFramePaint);canvas.drawArc(oval, mStart, mSweep, useCenter, paint);}protected void onDraw(Canvas canvas) {canvas.drawColor(Color.WHITE);drawArcs(canvas, mBigOval, mUseCenters,mPaints);for (int i = 0; i < 4; i++) {drawArcs(canvas, mOvals, mUseCenters, mPaints);}mSweep += SWEEP_INC;if (mSweep > 360) {mSweep -= 360;mStart += START_INC;if (mStart >= 360) {mStart -= 360;}mBigIndex = (mBigIndex) % mOvals.length;}invalidate();}}}
页: [1]
查看完整版本: API中画arc的简单代码