Có các quả bóng trong ứng dụng của tôi chỉ bay qua màn hình. Họ vẽ như tôi muốn. Nhưng bây giờ tôi muốn vẽ dấu vết đằng sau chúng.Đường ném bóng Android
Tất cả tôi có thể làm được chỉ vẽ bởi canvas.drawPath
cái gì đó như hình sau:
Nhưng nó không phải là những gì tôi muốn. Nó cần phải có đuôi nhọn và màu gradient như thế này:
Tôi không có ý tưởng làm thế nào để làm cho nó. Đã thử BitmapShader
- không thể thực hiện điều gì đúng. Xin giúp đỡ.
Code:
Trước hết, có Point
lớp cho vị trí trên màn hình:
class Point {
float x, y;
...
}
Và dấu vết được lưu giữ như hàng đợi của Point
:
private ConcurrentLinkedQueue<Point> trail;
Nó doesn cho dù nó có đầy, chỉ biết nó có giới hạn kích thước:
trail.add(position);
if(trail.size() > TRAIL_MAX_COUNT) {
trail.remove();
}
Và vẽ xảy ra trong DrawTrail
phương pháp:
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);
}
Bằng cách này, trailPaint
là sơn chỉ thực sự chất béo :)
trailPaint = new Paint();
trailPaint.setStyle(Paint.Style.STROKE);
trailPaint.setColor(color);
trailPaint.setStrokeWidth(radius * 2);
trailPaint.setAlpha(150);
Đăng mã của bạn ít nhất – Dimezis
đã làm @Dimezis – Ircover
@Tạo ra bạn có thể đăng mã hoàn chỉnh để tôi có thể tái tạo sự cố không. – Gattsu