两天我有一个数学问题,我试图解决。 我用drawCircle函数创建了一个圆。 我在圆圈中画了一个半径。 现在我想在圆圈处制作半径(仅半径)的圆形动画。如下面的渲染。
public class radar extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
private class theRadar extends View{
public theRadar(Context context){
super(context);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint();
p.setColor(Color.RED);
DashPathEffect dashPath = new DashPathEffect(new float[]{5,5}, (float)1.0);
p.setPathEffect(dashPath);
p.setStyle(Paint.Style.FILL);
p.setStrokeWidth(8f);
canvas.drawCircle(getWidth() / 2, getHeight() / 2, getWidth()/2, p);
p.setColor(Color.BLACK);
p.setStrokeWidth(4f);
canvas.drawLine(getWidth()/2, getHeight()/2, 20, getWidth()/2, p);
invalidate();
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View theRadar = new theRadar(getActivity());
return theRadar;
}
}
感谢您的帮助
答案 0 :(得分:0)
谢谢@pskink给你的建议! 由于你的链接,我解决了我的问题! 对于那些有相同问题的人我把代码
a和b:圆(a,b)的中心坐标
r:以像素为单位的半径
tcur:半径的角度
tcur = tcur + Math.toRadians(2);
x = (int) (a +r*Math.cos(tcur));
y = (int) (b +r*Math.sin(tcur));
canvas.drawLine(a, b, x, y, p);