Bạn có thể sử dụng PathMeasure
để có được tọa độ của điểm tùy ý trên gương path.For đoạn đơn giản này (mà tôi thấy here) trả về tọa độ của điểm ở nửa của con đường:
PathMeasure pm = new PathMeasure(myPath, false);
//coordinates will be here
float aCoordinates[] = {0f, 0f};
//get point from the middle
pm.getPosTan(pm.getLength() * 0.5f, aCoordinates, null);
Hoặc này đoạn trả về một mảng của mảng FlaotPoint
s.That liên quan đến tọa độ của 20 điểm trên đường dẫn:
private FlaotPoint[] getPoints() {
FlaotPoint[] pointArray = new FlaotPoint[20];
PathMeasure pm = new PathMeasure(path0, false);
float length = pm.getLength();
float distance = 0f;
float speed = length/20;
int counter = 0;
float[] aCoordinates = new float[2];
while ((distance < length) && (counter < 20)) {
// get point from the path
pm.getPosTan(distance, aCoordinates, null);
pointArray[counter] = new FlaotPoint(aCoordinates[0],
aCoordinates[1]);
counter++;
distance = distance + speed;
}
return pointArray;
}
trong đoạn trên, FlaotPoint
là một lớp đóng gói tọa độ của một điểm:
class FlaotPoint {
float x, y;
public FlaotPoint(float x, float y) {
this.x = x;
this.y = y;
}
public float getX() {
return x;
}
public float getY() {
return y;
}
}
Tài liệu tham khảo:
stackoverflow
Animating an image using Path and PathMeasure – Android
Đó là những gì tôi sẽ làm gì nếu không có bất kỳ thay thế. Tôi sẽ để câu hỏi mở thêm vài ngày nữa và nếu không có cách nào khác được đề xuất, tôi sẽ chấp nhận câu trả lời này. – StartingGroovy
@StartingGroovy Ok, hãy xem bài đăng cập nhật của tôi, để tận dụng lợi thế của tốc độ hiệu suất, nếu cuối cùng bạn chọn giải pháp này. – Manos
Thú vị, tôi đã không nhận thức được rằng việc tăng cường vòng lặp nhanh hơn gấp 3 lần :) nhờ có miếng ngon đó! – StartingGroovy