@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
float mx = this.getWidth()/2;
float my = this.getHeight()/2;
float r = getBaseRadius();
int d = 0;
float velocity = (value - valueOld1);
for (d = depth; d > 0; d--) {
Paint p = new Paint(knobColour);
int colour = p.getColor();
int green = (colour & 0x0000FF00) >> 8;
green += d * 10;
colour = (colour & 0xFFFF00FF) | ((green << 8) & 0x0000FF00);
p.setColor(colour);
float R = r*d;
float Rsub = r*d-r;
if (d == 1) {
Rsub = (float) (r*(d-0.75));
}
canvas.drawCircle(0, my, R, p);
Path arc = null;
float radVelocity = (float) (Math.abs(velocity) * Math.pow(power, d));
radVelocity = radVelocity/16;
radVelocity = Math.min(10f/360f*2f*(float)Math.PI, radVelocity);
radVelocity = Math.max(1.0f/Rsub, radVelocity); // minimum size
radVelocity = radVelocity/2;
float alpha = (float) ((0.7f/Rsub / radVelocity));
alpha = Math.min(1.0f, alpha);
if (arcs) {
arc = new Path();
float lx1 = (float) ((R-10)*Math.cos(-radVelocity));
float ly1 = (float) ((R-10)*Math.sin(-radVelocity));
float lxSub1 = (float) ((Rsub+10)*Math.cos(-radVelocity));
float lySub1 = (float) ((Rsub+10)*Math.sin(-radVelocity));
float lx2 = (float) ((R-10)*Math.cos(radVelocity));
float ly2 = (float) ((R-10)*Math.sin(radVelocity));
float lxSub2 = (float) ((Rsub+10)*Math.cos(radVelocity));
float lySub2 = (float) ((Rsub+10)*Math.sin(radVelocity));
arc.moveTo(lxSub1, lySub1);
arc.lineTo(lx1, ly1);
arc.lineTo(lx2, ly2);
arc.lineTo(lxSub2, lySub2);
arc.close();
arc.setFillType(FillType.EVEN_ODD);
}
canvas.save();
canvas.rotate(value * 360.0f * ((float) Math.pow(power, d)) / 2 / (float) Math.PI, 0, my);
Paint marksC = new Paint(marksColour);
marksC.setAlpha((int)(alpha * 255));
for (float a = 0; a < 359.8; a += 10f) {
canvas.save();
canvas.rotate(a, 0, my);
canvas.translate(0, my);
if (arcs) {
canvas.drawPath(arc, marksC);
}
else {
canvas.drawLine(Rsub, 0, R, 0, marksC);
}
canvas.restore();
}
canvas.restore();
}
canvas.drawText("Value :" + value, 0, this.getHeight(), textColour);
if (value != valueOld1) {
valueOld1 = value;
this.invalidate();
}
}
MicroscopeKnobView.java 文件源码
java
阅读 22
收藏 0
点赞 0
评论 0
项目:MicroscropeKnob
作者:
评论列表
文章目录