ApiDemos-->Graphics->Arc

来源:互联网 发布:es5与javascript 编辑:程序博客网 时间:2024/05/18 00:57

API DEMOS演示了drawArc的四种不同用法,你:圆弧4种画法



public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

oval :指定圆弧的外轮廓矩形区域。

startAngle: 圆弧起始角度,单位为度。

sweepAngle: 圆弧扫过的角度,顺时针方向,单位为度。

useCenter: 如果为True时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形。

paint: 绘制圆弧的画板属性,如颜色,是否填充等。


1. 填充但不含圆心:

         <span style="font-family:System;">        <span style="font-size:18px;"> mPaints[0] = new Paint();            mPaints[0].setAntiAlias(true);         //抗锯齿            mPaints[0].setStyle(Paint.Style.FILL);//填充            mPaints[0].setColor(0x88FF0000);            mUseCenters[0] = false;            //不包括圆心</span></span>


2. 填充圆弧带圆心(扇形)


<span style="font-size:24px;">     mPaints[1] = new Paint(mPaints[0]);//画笔包含mPaints[0]     mPaints[1].setColor(0x8800FF00);     mUseCenters[1] = true;            //包括圆心</span>

 

3. 只绘圆周,不含圆心

       <span style="font-size:24px;">mPaints[2] = new Paint(mPaints[0]);    mPaints[2].setStyle(Paint.Style.STROKE);//描边    mPaints[2].setStrokeWidth(4);          //画笔宽度(用于画圆弧宽度)    mPaints[2].setColor(0x880000FF);    mUseCenters[2] = false;             //不包含圆心   </span>


4. 只绘圆周,带圆心(扇形)

<span style="font-size:24px;">    mPaints[3] = new Paint(mPaints[2]);//画笔包含mPaints[2]    mPaints[3].setColor(0x88888888);    mUseCenters[3] = true;             //包含圆心</span>


API DEMOS 里面 onDraw

 @Override protected void <strong><span style="color:#ff0000;">onDraw</span></strong>(Canvas 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;            }           <strong> <span style="color:#ff0000;">invalidate();</span></strong>        }

<span style="font-size:24px;">Paint.Style.STROKE);//描边</span>
<span style="font-size:24px;">Paint.Style.FILL);//填充</span>

在onDrow(Canvsa canvas)里面调用invalidate()(重绘,再次执行onDrow(Canvas canvas)),不断刷新重绘 startAngle(起始角度)、sweepAngle(顺时针扫描过的角度),从而形成循环动画





原文链接:http://blog.sina.com.cn/s/blog_783ede0301012im3.htmlhttp://blog.sina.com.cn/u/2017385987


0 0