Это то, что вы можете заархивировать, используя кривую Безье.Пожалуйста, обратитесь к это .Кроме того, посмотрите на проект с открытым исходным кодом здесь
Самая интересная часть - buildPath
метод:
private void buildPath(Path path) {
//Important!
path.reset();
path.moveTo(adjustedPoints[0].x, adjustedPoints[0].y);
int pointSize = adjustedPoints.length;
for (int i = 0; i < adjustedPoints.length - 1; i++) {
float pointX = (adjustedPoints[i].x + adjustedPoints[i + 1].x) / 2;
float pointY = (adjustedPoints[i].y + adjustedPoints[i + 1].y) / 2;
float controlX = adjustedPoints[i].x;
float controlY = adjustedPoints[i].y;
path.quadTo(controlX, controlY, pointX, pointY);
}
path.quadTo(adjustedPoints[pointSize - 1].x, adjustedPoints[pointSize - 1].y, adjustedPoints[pointSize - 1].x,
adjustedPoints[pointSize - 1].y);
}