zoukankan      html  css  js  c++  java
  • 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();//刷新界面
    }

    }
    }

  • 相关阅读:
    poj1661【DP,左右两端dp】
    hdoj1074【A的无比爆炸】
    hdoj1024【DP.最 大 m 字 段 和】(写完我都怕。。。不忍直视。。)
    qq教xixi写模拟加法【非常爆炸】
    错排公式
    POJ3616【基础DP】
    hdoj1257【疑问】(贪心)
    【弱的C艹之路。。未完待续】
    hdoj1728【搜索的两种写法】
    hdoj1001【智障了。。。】
  • 原文地址:https://www.cnblogs.com/xingmeng/p/2419726.html
Copyright © 2011-2022 走看看