Android 自定义控件 onDraw()方法里调用的canvas.drawArc()是画圆或者圆环的,有一点疑问...这个方法

canvas.drawArc(rectF,0,(currentTimeMillis-startTimeMillis)*360/10000,false,paint);第一个... canvas.drawArc(rectF, 0, (currentTimeMillis - startTimeMillis ) * 360 / 10000 , false, paint);
第一个参数是矩形,
第二个参数是开始角度;
第三个参数是结束角度.
currentTimeMillis 得到系统的当前时间,
startTimeMillis 方法开始执行的时间

后面就不说了,疑问不在这里,
现在想按照规定的时间来画圆环,

看代码中的第三个参数不太理解

(currentTimeMillis - startTimeMillis ) * 360 / 8000 这里实现了 8秒画出一个圆环,
有人能解释一下是怎么算出来的吗.......为什么8秒,如果这个参数是角度的话,
那么,按照这个参数的算法也想不通呀.....哪位大神解答一下吗??

public class MyView extends View {

private long startTimeMillis;

public MyView2(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
startTimeMillis = System.currentTimeMillis();
}

public MyView2(Context context, AttributeSet attrs) {
super(context, attrs);
startTimeMillis = System.currentTimeMillis();
}

public MyView2(Context context) {
super(context);
startTimeMillis = System.currentTimeMillis();
}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);

Paint paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
RectF rectF = new RectF();
rectF.set(300, 300, 600, 600);

long currentTimeMillis = System.currentTimeMillis();
canvas.drawArc(rectF, 0, (currentTimeMillis - startTimeMillis ) * 360 / 8000 , false, paint);
invalidate();
}

}
展开
 我来答
heptnaol
2015-07-12 · TA获得超过7262个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1816万
展开全部
(currentTimeMillis - startTimeMillis ) * 360 / 8000
= (currentTimeMillis - startTimeMillis )/8000(每8秒) * 360(一圈)
更多追问追答
追问
能详细点吗?  当前时间减去开始时间 是ondraw() 运行一次的时间 ,  除以8秒 是什么意思?
8秒分之1次??想不通????
追答
令currentTimeMillis - startTimeMillis = Δt
那么画的角度A 是 Δt的一次函数
A = Δt/8000 * 360
其中Δt/8000 单位是秒除以秒,是个常数没有单位,只是一个比例系数。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式