Вы можете использовать эту библиотеку для индикатора выполнения закругленных углов
Gradle
compile 'com.akexorcist:RoundCornerProgressBar:2.0.3'
https://github.com/akexorcist/Android-RoundCornerProgressBar
Вы можете преобразовать любую кривую Эрмита в кривую Безье, а затем нарисовать ее. Они просто определяются с использованием двух разных баз в C3. Google был не очень полезен, и похоже, что это будет распространенный вопрос, поэтому мы должны попытаться сделать ответ StackOverflow окончательным, возможно, с помощью некоторого образца кода. Я вернусь завтра и принесу еще.
Как упоминал Стивен, вы можете преобразовать кубическую кривую Эрмита в кубическую кривую Безье. На самом деле это довольно просто.
Типичная кубическая кривая Эрмита определяется двумя точками и двумя векторами:
P0
- начальная точка V0
- производная в P0
] P1
- конечная точка V1
- производная в P1
Преобразование в кубическую кривую Безье выполняется просто:
B0 = P0
B1 = P0 + V0/3
B2 = P1 - V1/3
B3 = P1
Затем вы можете нарисовать кривую Безье, используя и вычислитель или любым другим способом, которым вы хотите.
Пусть вектор контрольных точек для вашего Безье будет [b0 b1 b2 b3], а для вашего Эрмита - [h0 h1 v0 v1] (v0 и v1 - производная / касательная в точках h0 и h1). Затем мы можем использовать матричную форму, чтобы показать преобразования:
Эрмита в Безье
[b0] = 1 [ 3 0 0 0] [h0] [b1] - [ 3 0 1 0] [h1] [b2] 3 [ 0 3 0 -1] [v0] [b3] [ 0 3 0 0] [v1]
(это в точности как в ответе Нааффа, выше).
Безье к Эрмиту
[h0] = [ 1 0 0 0] [b0] [h1] [ 0 0 0 1] [b1] [v0] [-3 3 0 0] [b2] [v1] [ 0 0 -3 3] [b3]
Таким образом, в матричной форме это, возможно, немного сложнее, чем нужно (в конце концов, код Нааффа был коротким и точным). Это полезно, потому что теперь мы можем очень легко выйти за рамки Эрмитов.
В частности, мы можем ввести другую классическую кардинальную кубическую параметрическую кривую: кривую Катмулла-Рома. Он имеет контрольные точки [c_1 c0 c1 c2] (в отличие от кривых Безье, кривая идет от второй до третьей контрольной точки, отсюда обычная нумерация от -1). Тогда преобразования в Безье таковы: