Canvas提供了drawArc来绘制圆弧。

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

  • oval :指定圆弧的外轮廓矩形区域。
  • startAngle: 圆弧起始角度,单位为度。
  • sweepAngle: 圆弧扫过的角度,顺时针方向,单位为度。
  • useCenter: 如果为True时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形。
  • paint: 绘制圆弧的画板属性,如颜色,是否填充等。

本例演示了drawArc的四种不同用法,

1. 填充圆弧但不含圆心:

mPaints[0] = new Paint();mPaints[0].setAntiAlias(true);mPaints[0].setStyle(Paint.Style.FILL);mPaints[0].setColor(0x88FF0000);mUseCenters[0] = false;

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

mPaints[1] = new Paint(mPaints[0]);mPaints[1].setColor(0x8800FF00);mUseCenters[1] = true;

3. 只绘圆周,不含圆心

mPaints[3] = new Paint(mPaints[2]);mPaints[3].setColor(0x88888888);mUseCenters[3] = true;

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

mPaints[3] = new Paint(mPaints[2]);mPaints[3].setColor(0x88888888);mUseCenters[3] = true;

本例的onDraw

protected void onDraw(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; } invalidate(); }

同样onDraw之中调用invalidate(),会再触发onDraw,从而不停刷新显示,startAngle, sweepAngle周而复始,形成动画效果,最上的大图顺序显示drawArc的这四种用法:

Arcs_第1张图片" src="https://img.it610.com/image/info5/7ef4e727971a43d18c05d332bad1e408.jpg" width="650" height="463" style="border:1px solid black;">

Paint.Style.STROKE 表示当前只绘制图形的轮廓,而Paint.Style.FILL表示填充图形。





更多相关文章

  1. Android(安卓)OpenGL ES 简明开发教程二:构造OpenGL ES View
  2. View绘制流程源码解析-第一篇
  3. Android(安卓)View的绘制机制流程深入详解(二)
  4. Android做一个显示电量的小控件
  5. Android(安卓)ApiDemo(十二)-- Graphics2
  6. Android(安卓)百分比、水波、流量剩余进度球的实现
  7. Android(安卓)游戏开发必备的基础知识
  8. Android(安卓)使用RecycleView实现吸附小标题的Demo(附源码)
  9. android 绘制图片的一部分

随机推荐

  1. 微信小程序源码支持小游戏源码接入html5
  2. markdownm语法
  3. IT职场经验分享
  4. 2022年7月php学习心得·第二节课程
  5. 对Emmet的认识与实战
  6. 苹果ios签名系统源码H5一键封装
  7. markdown基础语法和emmet基础语法
  8. markdownm语法
  9. markdown语法学习及代码展示
  10. markdown语法与emmet语法