draw的一个简单实例

package src.com;

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 {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
setContentView(new DrawView(this));
}

private static class DrawView extends View{
private Paint[] mPaints;//画笔类数组
private Paint mFramePaint;
private RectF[] mOvals;
private RectF mBigOval;//画矩形区域,只不过数值类型是float型
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[4];
mUseCenters = new boolean[4];
mOvals = new RectF[4];

mPaints[0] = new Paint();
mPaints[0].setAntiAlias(true);//设置画笔的锯齿效果
mPaints[0].setColor(0x88111111);//设置画笔颜色
mUseCenters[0] = false;

mPaints[1] = new Paint(mPaints[0]);
mPaints[1].setStyle(Paint.Style.FILL);//设置画笔风格,空心或者实心。
mPaints[1].setColor(0x88FF0000);
mUseCenters[1] = true;

mPaints[2] = new Paint(mPaints[0]);
mPaints[2].setStyle(Paint.Style.STROKE);
mPaints[2].setStrokeWidth(10);//设置空心的边框宽度。
mPaints[2].setColor(0x8800FF00);
mUseCenters[2] = false;

mPaints[3] = new Paint(mPaints[2]);
mPaints[3].setStyle(Paint.Style.FILL_AND_STROKE);
mPaints[3].setColor(0x880000FF);
mUseCenters[3] = true;

mBigOval = new RectF(40,10,280,250);

mOvals[0] = new RectF(10, 270, 70, 330);
mOvals[1] = new RectF(90, 270, 150, 330);
mOvals[2] = new RectF(170, 270, 230, 330);
mOvals[3] = new RectF(250, 270, 310, 330);

mFramePaint = new Paint();
mFramePaint.setAntiAlias(true);
mFramePaint.setStyle(Paint.Style.STROKE);
mFramePaint.setStrokeWidth(2);
}

private void drawArcs(Canvas canvas, RectF oval, boolean useCenter,
Paint paint){
canvas.drawRect(oval, mFramePaint);//绘制矩形
canvas.drawArc(oval, mStart, mSweep, useCenter, paint);//绘制弧线
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

canvas.drawColor(Color.WHITE);/* 设置画布的颜色 */

drawArcs(canvas, mBigOval, mUseCenters[mBigIndex], mPaints[mBigIndex]);

for(int i = 0; i < 4; i++){
drawArcs(canvas, mOvals[i], mUseCenters[i], mPaints[i]);
}

mSweep += SWEEP_INC;

if( mSweep > 360 ){
mSweep -= 360;
mStart += START_INC;
if(mStart >= 360){
mStart -= 360;
}
mBigIndex = (mBigIndex + 1) % mOvals.length;
}

invalidate();//刷新界面
}

}
}

posted @ 2012-03-27 16:11  幻星宇  阅读(175)  评论(0编辑  收藏  举报