现做个需求,有个是这样的:
一张时钟图a(圆形的),一张圆形图b(彩色的,正好可以放进a里面),一张针图(长方形的,就是分钟)。
b图开始是隐藏的,分钟开始运行时(从12点位置),所转过的地方就显示b图的一部分,转完一圈b图就完全显示出来了,转完那一刻,b图又隐藏。
如果可能,高手再想下,分钟停止在某一位置,怎么保存b图中只显示出来的部分图?
------解决方案--------------------
关键就是剪除扇形,根据下面代码自己再调调吧
public void getSector(Canvas canvas, float radius, double fromDegree, double toDegree, Op op) {
canvas.translate(radius, radius);
Path pathCircle = new Path();
pathCircle.addCircle(0, 0, radius, Direction.CCW);
Path pathTriangle = new Path();
pathTriangle.moveTo(0, 0);
float vYFrom = (float) (Math.sin(fromDegree * Math.PI / 180) * 2 * radius);
float vYTo = (float) (Math.sin(toDegree * Math.PI / 180) * 2 * radius);
float vYCenter = (float) (Math.sin(((toDegree + fromDegree) / 2) * Math.PI / 180) * 2 * radius);
float vXFrom = (float) (Math.cos(fromDegree * Math.PI / 180) * 2 * radius);
float vXTo = (float) (Math.cos(toDegree * Math.PI / 180) * 2 * radius);
float vXCenter = (float) (Math.sin(((toDegree + fromDegree) / 2) * Math.PI / 180) * 2 * radius);
pathTriangle.lineTo(vXFrom, vYFrom);
pathTriangle.lineTo(vXCenter, vYCenter);
pathTriangle.lineTo(vXTo, vYTo);
pathTriangle.close();
canvas.clipPath(pathCircle);
canvas.clipPath(pathTriangle, op);
}