在Android自定义视图中Animate Canvas.draw行

时间:2014-09-04 13:18:10

标签: canvas draw paint progress animated

我目前正在旅行应用程序中工作,我有一条垂直线,代表您旅行的进度。 这是我班级的onDraw功能:

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

    if (paint != null) {
        canvas.drawLine(startingX, startingY, startingX, progress + startingY, paint);
        if (transitTrip) {

            if (ratio > progresses.get(0)) {
                canvas.drawBitmap(waypointPassedBig, startingX - bitmap.getWidth() / 2, (24 * Constants.density) + (0 * (totalProgress + 10 * Constants.density) / (progresses.size() - 1)), paint);
            } else {
                canvas.drawBitmap(waypointBig, startingX - bitmap.getWidth() / 2, (24 * Constants.density) + (0 * (totalProgress + 10 * Constants.density) / (progresses.size() - 1)), paint);
            }
            for (int i = 1; i < progresses.size(); i++) {
                if (ratio > progresses.get(i)) {
                    canvas.drawBitmap(waypointPassed, startingX - bitmap.getWidth() / 2, (24 * Constants.density) + (i * (totalProgress + 10 * Constants.density) / (progresses.size() - 1)), paint);
                } else {
                    canvas.drawBitmap(waypoint, startingX - bitmap.getWidth() / 2, (24 * Constants.density) + (i * (totalProgress + 10 * Constants.density) / (progresses.size() - 1)), paint);
                }
            }
            if (ratio > progresses.get(progresses.size()-1)) {
                canvas.drawBitmap(waypointPassedBig, startingX - bitmap.getWidth() / 2, (24 * Constants.density) + ((progresses.size()-1) * (totalProgress + 10 * Constants.density) / (progresses.size() - 1)), paint);
            } else {
                canvas.drawBitmap(waypointBig, startingX - bitmap.getWidth() / 2, (24 * Constants.density) + ((progresses.size()-1) * (totalProgress + 10 * Constants.density) / (progresses.size() - 1)), paint);
            }
        }
        canvas.drawBitmap(bitmap, startingX - bitmap.getWidth() / 2, progress + startingY - bitmap.getHeight() / 2, paint);
    }

}

正如你所看到的,我先画线,然后画出我的路标,最后是我的位置。 &#34;进度&#34;表示行程的进度从0%到100%。 现在,如果进度为50%,它将直接将线条绘制到视图的一半。现在我需要这个来动画线,而不仅仅是出现。 我怎样才能有效地做到这一点? 我尝试设置一个路径列表,而不是&#34; drawline&#34;,并在for(我遍历该行的所有点,并为每一个创建从开始到该点的一条线)。之后我尝试设置一个增量器,每个onDraw只从路径的起点开始绘制,由增量器表示,但就像没有任何东西一样。

0 个答案:

没有答案