逐步在android中绘制路径

时间:2014-12-31 19:37:49

标签: android-canvas android-view objectanimator

我有一个像这样的要求,我想在画布中的android中绘制路径,为此我开发了一个代码。这是视图类。

public class MyView extends View {
public MyView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public MyView(Context context) {
        super(context);
    }


    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);

        Paint paint = new Paint();

        paint.setColor(Color.BLACK);

        paint.setStrokeWidth(3);

        paint.setStyle(Paint.Style.STROKE);

        Path path = new Path();

         path.moveTo(100, 100);
         path.lineTo(200, 200);
         path.lineTo(200, 500);
         path.lineTo(400, 500);
         path.lineTo(400, 200);
         path.lineTo(600, 200);
         canvas.drawPath(path, paint);

    }

}

这很好用,我按照自己的意愿得到了drawpath。 现在有一个小小的调整,我希望拉伸路径以渐进的方式逐渐显现 (例如,如果滚动球从左到右滚动时会产生一个滚动的效果,渐变和缓慢,但不是暂停和绘图)

我尝试实现一个Timertask来使视图无效并绘制一个新视图,但这只是暂停和绘制,而不是我想要的东西。

我想,我必须在我的代码中添加ObjectAnimator或ValueAnimator。 但我不知道如何实现这一目标。 请帮忙

1 个答案:

答案 0 :(得分:1)

我以某种方式想出了如何实现它。然而,我无法直接绘制带有动画的画布线但是找到了一个解决方案并且实际上对我有效。我使用了一个水平进度条而不是可忽略不计的高度,看起来像一条线,然后添加了一个对象动画,它将根据我设置的时间逐渐填充线。     我将为大家分享代码。

In my xml file, I used this, 

<ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="200dp"
        android:progressDrawable="@drawable/custom_progress"
        android:layout_height="2dp"
        android:layout_below="@+id/button1"
        android:layout_centerHorizontal="true"
        android:max="100"
        android:progress="0"
        android:layout_marginTop="50dp"
         />

And in my Java file , I used this code

    pbr = (ProgressBar)findViewById(R.id.progressBar1);

    animation = ObjectAnimator.ofInt(pbr, "progress", 100);
    animation.setDuration(2000); 
    animation.start();

在某种程度上,它给了我一种效果,就像线条逐渐绘制一样。你可以尝试一下并检查