В моем приложении есть шары, которые просто пролетают через дисплей. Они рисуют, как я хочу. Но теперь я хочу сделать след за ними.
Все, что я мог сделать, это просто рисовать на canvas.drawPath
что-то вроде следующего изображения:
Но это не то, что я хочу. Он должен иметь указанный хвост и цвет градиента следующим образом:
Я понятия не имею, как это сделать. Пробовал BitmapShader
- не мог сделать что-то правильно. Помогите, пожалуйста.
Код:
Прежде всего, существует класс Point
для отображаемой позиции:
class Point {
float x, y;
...
}
И след сохраняется в очереди Point
:
private ConcurrentLinkedQueue<Point> trail;
Не имеет значения, как он заполняется, просто знайте, что он имеет ограничение по размеру:
trail.add(position);
if(trail.size() > TRAIL_MAX_COUNT) {
trail.remove();
}
И рисунок произошел в методе DrawTrail
:
private void DrawTrail(Canvas canvas) {
trailPath.reset();
boolean isFirst = true;
for(Point p : trail) {
if(isFirst) {
trailPath.moveTo(p.x, p.y);
isFirst = false;
} else {
trailPath.lineTo(p.x, p.y);
}
}
canvas.drawPath(trailPath, trailPaint);
}
Кстати, trailPaint
- это просто жирная краска:)
trailPaint = new Paint();
trailPaint.setStyle(Paint.Style.STROKE);
trailPaint.setColor(color);
trailPaint.setStrokeWidth(radius * 2);
trailPaint.setAlpha(150);