我目前正在旅行应用程序中工作,我有一条垂直线,代表您旅行的进度。 这是我班级的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只从路径的起点开始绘制,由增量器表示,但就像没有任何东西一样。