canvas教程

Android自定义View之圆形进度条总结(2)

字号+ 作者:H5之家 来源:H5之家 2017-05-19 13:06 我要评论( )

绘制圆弧需要用到 Canvas 的 //oval为RectF类型,即圆弧显示区域//startAngle和sweepAngle均为float类型,分别表示圆弧起始角度和圆弧度数。3点钟方向为0度,顺时针递增//如果startAngle0或者360,则相当于startAngl

绘制圆弧需要用到 Canvas 的

// oval 为 RectF 类型,即圆弧显示区域  // startAngle 和 sweepAngle  均为 float 类型,分别表示圆弧起始角度和圆弧度数。3点钟方向为0度,顺时针递增  // 如果 startAngle < 0 或者 > 360,则相当于 startAngle % 360  // useCenter:如果为 true 时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形  // 绘制圆弧的画笔  drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint);  

为了方便计算,绘制圆弧的时候使用了 Canvas 的 rotate() 方法,对坐标系进行了旋转

private void drawArc(Canvas canvas) {     // 绘制背景圆弧     // 从进度圆弧结束的地方开始重新绘制,优化性能     canvas.save();     float currentAngle = mSweepAngle * mPercent;     canvas.rotate(mStartAngle, mCenterPoint.x, mCenterPoint.y);     // +2 是因为绘制的时候出现了圆弧起点有尾巴的问题     canvas.drawArc(mRectF, currentAngle, mSweepAngle - currentAngle + 2, false, mBgArcPaint);     canvas.drawArc(mRectF, 2, currentAngle, false, mArcPaint);     canvas.restore();  }  

恩,圆环已经绘制完成,那么接下来就是实现圆环的渐变,这里使用 SweepGradient 类。SweepGradient 可以实现从中心放射性渐变的效果,如下图:

Android自定义View之圆形进度条总结

SweepGradient 类有两个构造方法,

/**  * @param cx 渲染中心点x坐标  * @param cy 渲染中心点y坐标  * @param colors 围绕中心渲染的颜色数组,至少要有两种颜色值  * @param positions 相对位置的颜色数组,可为null,  若为null,可为null,颜色沿渐变线均匀分布。一般不需要设置该参数  /  public SweepGradient(float cx, float cy, int[] colors, float[] positions)     /**  * @param cx 渲染中心点x坐标  * @param cy 渲染中心点y坐标  * @param color0 起始渲染颜色  * @param color1 结束渲染颜色  /  public SweepGradient(float cx, float cy, int color0, int color1)  

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 实时监控Android设备网络封包

    实时监控Android设备网络封包

    2017-05-19 15:04

  • view的绘制流程.doc

    view的绘制流程.doc

    2017-05-15 18:03

  • android双缓冲绘图技术分析

    android双缓冲绘图技术分析

    2017-05-14 15:02

  • 包邮现货Android和PHP开发最佳实践第2版/安卓移动开发教程书籍/P

    包邮现货Android和PHP开发最佳实践第2版/安卓移动开发教程书籍/P

    2017-05-14 09:02

网友点评
k