首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android 怎么逐渐显示一张圆形图片

2012-04-24 
Android 如何逐渐显示一张圆形图片?现做个需求,有个是这样的:一张时钟图a(圆形的),一张圆形图b(彩色的,正

Android 如何逐渐显示一张圆形图片?
现做个需求,有个是这样的:
一张时钟图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);
}

热点排行