半径在圆内的圆周运动

时间:2015-10-02 14:16:35

标签: java android animation

两天我有一个数学问题,我试图解决。 我用drawCircle函数创建了一个圆。 我在圆圈中画了一个半径。 现在我想在圆圈处制作半径(仅半径)的圆形动画。如下面的渲染。 enter image description here

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;
}

}

感谢您的帮助

1 个答案:

答案 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);