2015-04-07 107 views
1

guys 我尝试实现一个弧形头上的黑色箭头。箭头用弧线生动,并具有圆弧轨迹。我已经根据不同的值实施了带有动画的红色弧线。 请参阅附件。 如何在红色弧线上实现黑色箭头?因为如果我采用与红色圆弧动画相同的方式,黑色箭头将打印出不需要的轨迹。如何用动画在画布android上绘制带圆弧轨迹的箭头?

在此先感谢! 莱昂

enter image description here

回答

1

所有你需要的是画布。

这里是一个例子。

这是您的抽奖类:

public class CircleView extends View 
{ 
    public CircleView(Context context) { 
     super(context); 
     path = new Path(); 
     paint = new Paint(); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     float angle = 270; 

     float radius = canvas.getWidth()/3; 
     float x = canvas.getWidth()/2; 
     float y = canvas.getHeight()/2; 
     final RectF oval = new RectF(); 

     paint.setStyle(Paint.Style.STROKE); 
     paint.setStrokeWidth(25); 

     oval.set(x - radius, y - radius, x + radius,y + radius); 

     // Draw circle 
     paint.setColor(Color.RED); 
     canvas.drawArc(oval, 135, angle, false, paint); 
     paint.setColor(Color.BLUE); 
     canvas.drawArc(oval, angle, 405-angle, false, paint); 

     paint.setStyle(Paint.Style.FILL); 
     paint.setColor(Color.BLACK); 

     float l = 1.2f; 
     float a = angle*(float)Math.PI/180; 
     // Draw arrow 
     path.moveTo(x+ (float)Math.cos(a) *radius, y + (float)Math.sin(a) * radius); 
     path.lineTo(x+ (float)Math.cos(a+0.1) *radius*l, y + (float)Math.sin(a+0.1) * radius*l); 
     path.lineTo(x+ (float)Math.cos(a-0.1) *radius*l, y + (float)Math.sin(a-0.1) * radius*l); 
     path.lineTo(x+ (float)Math.cos(a) *radius, y + (float)Math.sin(a) * radius); 
     canvas.drawPath(path, paint); 
    } 
    private Path path; 
    private Paint paint; 
} 

这是它的活动:

public class MyActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(new CircleView(this)); 
    } 
} 

对于角度== 200,你会看到这样的形象:

angle == 200

IntelliJ Idea的工作副本:https://github.com/weerf/android_circle

+0

嗨,基里尔。感谢您的回复。我在动画中使用这个代码,黑色箭头在路上绘制。我真正需要的是在红色弧形动画的顶部显示一个箭头。 (现在有多个箭头与动画过程一起绘制)。另一件事是黑箭头的形状与我在图中所描述的不一样。提前致谢。 –

+0

黑色的箭头只是一个自由形式的多边形。我的回答有三个顶点,在问题中有四个顶点。还有一点不同 - 我没有设置标志ANTI_ALIAS_FLAG。 如果问题是这样的: 添加一个顶点到箭头,并设置标志ANTI_ALIAS_FLAG –

+0

我纠正它在https://github.com/weerf/android_circle/blob/master/app/src/main/java/com/ podlivaev/circle/CircleView.java图像将像https://github.com/weerf/android_circle/blob/master/screen.png –