java android路径动画

Posted

技术标签:

【中文标题】java android路径动画【英文标题】:java android path animation 【发布时间】:2020-04-01 08:24:23 【问题描述】:

所以我快结束了。 我整天都在研究如何做到这一点。 绘制一条从一个点到另一个点的路径(动画)。 我已经在 Matrix 上尝试过,但结果只是转向了我的整个路径。

这是我的项目的图片: my project

我的目标是绘制一条从一个圆圈到另一个圆圈的动画路径。

代码:

 public void init(@Nullable AttributeSet attr) 
        circle = new Paint();
        circle.setColor(Color.GREEN);
        circle.setStyle(Paint.Style.FILL);
        circle.setAntiAlias(true);

        line = new Paint();
        line.setColor(Color.GREEN);
        line.setStyle(Paint.Style.STROKE);
        line.setStrokeWidth(10);
        line.setAntiAlias(true);


        Collections.addAll(height, 100, 20, 50, 40, 70, 10, 50); // in percent
        System.out.println(height.size() + " this is the size");
    

    @Override
    protected void onDraw(Canvas canvas) 
        float y = getHeight() / 20 * 14;
        float x = getWidth() / 8;
        float radius = (canvas.getWidth() * canvas.getHeight()) / 40940;
        for (int c = 1; c < 8; c++) 
            System.out.println("at " + c);
            canvas.drawCircle(x * c, y - ((getHeight() / 20) * (height.get(c - 1) / 10)), radius, circle);
            points.add(new PointF(x * c, (y - ((getHeight() / 20) * (height.get(c - 1) / 10)))));
        

    

请帮忙,

谢谢

【问题讨论】:

【参考方案1】:

您只需要使用 ValueAnimator 为路径设置动画

创建一个路径对象

Path path = new Path();

并创建动画师

ValueAnimator animator = new ValueAnimator();
float startX = // starting circle x co-ordinate
float startY = // starting circle y co-ordinate
float endX = // end circle x co-ordinate
float endY = // end circle y co-ordinate
PropertyValuesHolder propertyX = PropertyValuesHolder.ofFloat("x",startX,endX);
PropertyValuesHolder propertyY = PropertyValuesHolder.ofFloat("y",startY,endY);
valueAnimator.setValues(propertyX,propertyY);
valueAnimator.setDuration(1000); // animation time
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() 
        @Override
        public void onAnimationUpdate(ValueAnimator animation) 
            float x = (float) animation.getAnimatedValue("x");
            float y = (float) animation.getAnimatedValue("y");
            path.lineTo(x,y);
            invalidate();
        
    );
valueAnimator.start();

并在 onDraw() 中绘制路径

canvas.drawPath(path,paint);

【讨论】:

以上是关于java android路径动画的主要内容,如果未能解决你的问题,请参考以下文章

Android 笔记 ------当你获得文件路劲时获取此文件的信息

如何在画布上为路径设置动画 - android

沿着谷歌地图android中的路径动画汽车(标记)

Android 5.0+高级动画开发 矢量图动画 轨迹动画 路径变换

Android 5.0+高级动画开发 矢量图动画 轨迹动画 路径变换

Android绘制动画线