Android 如何逐渐显示一张圆形图片?

Renvlskoca 2012-03-03 04:30:25
现做个需求,有个是这样的:
一张时钟图a(圆形的),一张圆形图b(彩色的,正好可以放进a里面),一张针图(长方形的,就是分钟)。
b图开始是隐藏的,分钟开始运行时(从12点位置),所转过的地方就显示b图的一部分,转完一圈b图就完全显示出来了,转完那一刻,b图又隐藏。

如果可能,高手再想下,分钟停止在某一位置,怎么保存b图中只显示出来的部分图?
...全文
319 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
abc123_yz 2014-02-08
  • 打赏
  • 举报
回复
兄弟,这个问题解决了吗?怎么做的啊。。
danielinbiti 2012-03-03
  • 打赏
  • 举报
回复
关键就是剪除扇形,根据下面代码自己再调调吧
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);
}

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧